以前喜欢用ubuntu,但实际部署项目实验室还是要求用centos,只好再搭一遍,中途遇到了不少的坑,做个笔记以备之后查询,不想再去翻那一堆书签了,乱七八糟的,还是自己总结的东西看着舒服。
安装easy_install
wget -q http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py
安装pip
先安装依赖:
yum groupinstall "Development tools"
yum install zlib zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
wget --no-check-certificate https://github.com/pypa/pip/archive/1.5.5.tar.gz
tar zvxf 1.5.5.tar.gz
cd pip-1.5.5/
python setup.py install
pip install uwsgi
在项目的根目录下创建配置文件:
vim config.ini
填写以下内容:
[uwsgi]
socket = 127.0.0.1:8001 //启动程序时所使用的地址和端口
chdir = /home/www/ //你的项目目录
wsgi-file = manage.py //flask程序的启动文件
callable = app //程序内启用的application变量名
processes = 2 //处理器个数
threads = 4 //线程个数
stats = 127.0.0.1:9191 //获取uwsgi统计信息的服务地址
关于wsgi在web服务中的作用,请看这里:python wsgi 简介
启动服务:
uwsgi config.ini
配置源并安装:
yum install yum-fastestmirror
yum install nginx
查看nginx应用的配置文件:
nginx -t
我们需要改动配置文件的地方如下(注意是需要改动的地方,其余的地方按你的需要去改):
server {
listen 80;
server_name www.test.com; # nginx在只有一个server的时候会忽略这个选项,所以随便填吧
access_log /logs/python.flask.access.log; # 日志位置
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8001;
uwsgi_param UWSGI_PYHOME /usr/bin/python; # 指向虚拟环境目录(我没用虚拟环境,写的直接是python程序的位置)
uwsgi_param UWSGI_CHDIR /usr/apps/python/your_pro; # 指向网站根目录
uwsgi_param UWSGI_SCRIPT manage:app; # 指定启动程序
}
其余的按需修改吧。
在开启uwsgi后,继续开启nginx,基础的配置就OK了。
经过以上的配置,其实你的网站已经可以正常访问了,速度嗖嗖的。但有很多时候会有意外情况,uwsgi 挂了怎么办?这个时候就需要一个进程守护的程序来帮助你重新启动它。
Supervisor是一个进程管理工具,通俗点就是帮你监控某个进程,如果发现它挂了,立马把它续起来。
安装:
pip install supervisor
生成配置文件:
cd /usr/bin/
./echo_supervisord_config > /etc/supervisord.conf
接下来修改配置文件,在配置文件中;
是注释符,去掉前面的分号:
[program:project_name] # project_name为项目名称
command = uwsgi --ini /home/flask/config.ini # 把启动uwsgi的命令写在这,将config.ini的路径替换为绝对路径
stopsignal=QUIT
autostart=true
autorestart=true
stdout_logfile=/var/log/uwsgi/supervisor_flask.log # 运行日志
stderr_logfile=/var/log/uwsgi/supervisor_flask_err.log # 错误日志
启动:
supervisord -c /etc/supervisord.conf
之后先查看 uwsgi 的进程:
ps aux | grep uwsgi
kill掉它,之后再ps一下看进程起来没有:
killall uwsgi
完。
最后放上一张美美的截图,界面用的妹子UI:
参考文档:
http://www.tuicool.com/articles/Ejm2u2
http://www.cnblogs.com/dspace/archive/2016/07/06/5647587.html
https://segmentfault.com/a/1190000004294634