linux+nginx+uwsgi+flask部署四部曲之一:安装python3.6
linux+nginx+uwsgi+flask部署四部曲之二:安装uwsgi
linux+nginx+uwsgi+flask部署四部曲之三:安装nginx
linux+nginx+uwsgi+flask部署四部曲之四:部署flask应用程序
环境准备
virtualenv:为了避免系统环境与应用环境之间的冲突,使用虚拟环境来安装应用的依赖,virtualenv可以为每个python应用创建独立的开发环境,安装方式:pip install virtualenv
虚拟环境使用
flask项目地址:/usr/local/flasky,只需要在项目地址下运行指令:virtualenv venv
约定俗成一般使用“venv”作为虚拟环境的名称,这样我们就创建了一个虚拟环境的文件夹venv
接下来激活虚拟环境,只用指令:source venv/bin/activate
激活虚拟环境后,命令行抬头会有(venv)标识,一切安装python的操作都会将包和引用装在虚拟环境中,不会影响全局的python环境,退出虚拟环境的指令,直接敲:deactivate
配置flask应用环境
flask应用开发的时候,会应用到非常多的模板,pip freeze >requirements.txt,
该指令把开发环境的flask依赖等导出一个文件名为requirements.txt的文本,然后centos中使用指令:pip install -r requirements.txt。这样就会在虚拟环境中安装一个与开发环境一致的副本了。注意一定要在虚拟环境中使用批量安装指令,不然就安装到全局去了。
上传项目文件
使用工具或者rz命令上传
配置uWSGI
我们直接在flask的根目录下面新建一个文件“uwsgi.ini”,使用的方式是配置启动。文件内容如下
[uwsgi]
#指向网站根目录
chdir=/usr/local/flasky
#虚拟环境目录
home = /usr/local/flasky/venv
# python启动程序文件
wsgi-file=app.py
#python程序内用于启动的application变量名
callable=app
processes = 4
threads = 2
# py文件修改,自动加载
py-autoreload=1
#设置uwsgi包解析的内部缓存区大小。默认4k
buffer-size = 32768
chmod-socket = 664
# 退出uwsgi是否清理中间文件,包含pid、sock和status文件
vacuum=true
# uwsgi 启动时所使用的地址与端口,配置nginx时候使用
socket = 0.0.0.1:5001
#没有nginx时,要用浏览器测试是否可以成功访问需要配置http端口
http=:9090
# 状态监测地址
stats=0.0.0.1:9191
#使用协程gevent启动使用
listen=100
配置文件的执行方式,命令行输入指令:uwsgi uwsgi.ini
或者不写配置文件(不建议这样做,一般都需要配置nginx一块使用),直接命令行输入
uwsgi --http :9090 --socket 0.0.0.1:5001 --wsgi-file app.py --master --processes 4 --threads 2 --stats 0.0.0.1:9191
可以在浏览器访问服务器地址:9090端口查看效果
ctrl+c关闭程序
启动 uWSGI 要注意一个问题,因为一般我们通过 SSH 工具远程操作 Linux,所以当我们退出 SSH 的时候,服务就会终止。如果希望在关闭SSH后,操作系统仍然能提供服务,在启动uwsgi的时候,使用 nohup 命令:nohup uwsgi uwsgi.ini &
协程启动方式(需安装gevent):uwsgi --gevent 100 --gevent-early-monkey-patch uwsgi.ini
配置Nginx
我们找到nginx的配置文件(/etc/nginx),找到文件夹(conf.d)然后在conf.d下面新建配置文件(flask_ng.conf)
server {
listen 80;
server_name xxx.xxx.xxx.xxx; #公网地址
location / {
include uwsgi_params;
uwsgi_pass 0.0.0.1:5001; # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
uwsgi_param UWSGI_PYHOME /usr/local/flasky/venv; # 指向虚拟环境目录
uwsgi_param UWSGI_CHDIR /usr/local/flasky; # 指向网站根目录
uwsgi_param UWSGI_SCRIPT app:app; # 指定启动程序
}
}
另外,在nginx.conf.default中必须把pid logs/nginx.pid打开
启动Nginx
service nginx start
service nginx stop
service nginx restart
在浏览器中直接访问公网地址xxx.xxx.xxx.xxx即可查看效果
转载的话请注明出处,谢谢