一:保证flask程序是OK的,hello world 也OK
二:配置uwsgi文件
以/data/www/syapi项目为例
/data/www/syapi/sy_uwsgi.ini
uwsgi 配置参数
注意我的socket叫做syapi.sock
[uwsgi]
socket = /tmp/syapi.sock
chdir = /data/www/syapi
wsgi-file = /data/www/syapi/app.py flask 启动文件
callable=application flask启动文件内部的启动函数application.run()
touch-reload=/data/www/syapi
logto = /var/log/uwsgi/syapi.log
enable-threads = true
buffer-size = 32768
processes = 4
threads = 2
pidfile = /tmp/uwsgi.pid
vacuum = true
log-maxsize = 50000000
python-autoreload=1
listen = 1024
三:配置nginx文件
nginx 配置server {}里面,静态资源暴露出来,若不暴露,若有图片的向外请求API,外面的拿不到图片
location /static {
root /data/www/syapi;
}
注意我这里用到了sock名字,来自uwsgi的sock名字
location / { try_files $uri @syapi; }
location @syapi {
include uwsgi_params;
uwsgi_pass unix:/tmp/syapi.sock;
}
四:配置supervisor 的uwsgi进程文件
/etc/supervisor/conf.d 的下面新建syapi.conf
[program:syapi]
command = /usr/local/bin/uwsgi --ini /data/www/syapi/sy_uwsgi.ini
autostart=true
autorestart=true
stdout_logfile=/var/log/uwsgi/supervisor_syapi.log
stderr_logfile=/var/log/uwsgi/supervisor_syapi_err.log
在配置文件的最/etc/supervisor/supervisor.conf的最后加上,注释原来的
files = /etc/supervisor/conf.d/*.conf
五:uwsgi -ini sy_uwsgi.ini
从上面我们依次配置了uwsgi,nginx,supervisor的配置文件下面执行命令的流程
此时在sy_uwsgi.ini所在的目录下,一般这个文件放置在项目根目录下和启动文件app.py相同目录。在该目录下,
uwsgi -ini sy_uwsgi.ini 如果正常启动
nginx -s reload(我nginx之前启动了,不然你就先/etc/init.d/nginx start)
此时依靠nginx和uwsgi是完全可以通过默认80端口访问。
但是有的时候uwsgi这个东西你ctrl+c或者ssh断掉怎么办,很抱歉web服务就不行了
六:开启supervisor
cd /etc/supervisor
superviserd -c supervisor.conf
supervisorctl start syapi 这个syapi就是上面配置的[program:syapi]
supervisorctl status 如果正常就可看到正在运行的服务,正在守护的进程syapi
前提是你uwsgi 和nginx 命令开启正常访问的时候,开启守护进程supervisor才能检测到
此时你ctrl+c掉你的uwsgi命令或者ssh退出就没有问题了
如果你之前已经开启了supervisor守护uwsgi,记得
supervisorctl stop syapi
supervisorctl start syapi
supervisorctl reload相当于重启supervisord
七:要看懂上面的你要熟练基本的nginx,uwsgi,supervisor,flask命令
pass