背景
有一个项目,flask编写的,在本地可以使用,但是如何上传到服务器运行呢?
安装nginx
可以查看如何安装nginx,不再说明,也可以不安装。
当然,你可以使用docker 安装。
安装python环境
安装Anaconda3,官网下载linux版本安装即可。
编译安装uwsgi
下载和解压
cd ~
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxf uwsgi-latest.tar.gz
编译
cd uwsgi-2.0.19.1
python3 uwsgiconfig.py --build
提示环境问题,请安装编译环境
yum -y install gcc
安装
python3 setup.py install
查看版本,报错可忽略
uwsgi --version
遇到的问题
uwsgi: error while loading shared libraries: libicui18n.so.58: cannot open shared object file: No such file or directory
解决
which uwsgi
ldd /usr/share/anaconda3/bin/uwsgi
ln -s /usr/share/anaconda3/lib/libicui18n.so.58 /lib64/libicui18n.so.58
ln -s /usr/share/anaconda3/lib/libicuuc.so.58 /lib64/libicuuc.so.58
ln -s /usr/share/anaconda3/lib/libicudata.so.58 /lib64/libicudata.so.58
strings /usr/lib64/libstdc++.so.6|grep CXXABI
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_TM_1
于是anaconda3 下的libstdc++.so.6移到/lib64
ll /usr/share/anaconda3/lib/libstdc++.so.6.0.26
ll /usr/lib64/libstdc++.so.6
查看是使用26版本替换19版本
cp /usr/share/anaconda3/lib/libstdc++.so.6.0.26 /usr/lib64/
rm -rf /usr/lib64/libstdc++.so.6
ln -s /usr/lib64/libstdc++.so.6.0.26 /usr/lib64/libstdc++.so.6
测试
首先要安装项目的依赖,跳过。
import json
from flask import Flask
app = Flask(__name__)
@app.route('/test', methods=['GET'])
def test():
return 'ok'
if __name__ == '__main__':
app.run()
运行
uwsgi --ini uwsgi.ini
停止
uwsgi --stop uwsgi.pid
实际项目测试
安装依赖
conda install pymysql -y
conda install configparser -y
conda install requests -y
conda install lxml -y
运行,代码略。