flask+uswgi+nginx+python3.6的venv发布网站ubuntu14.04

---------------------------nginx---------------

sudo apt-get install nginx


sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件。

sudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件。

server {
listen 80;
server_name ip或域名;
charset utf-8;
rewrite_log on;

location / {

include uwsgi_params;
uwsgi_pass unix:/home/ubuntu/project/project.sock;
}
}
-------------------------python and flask------------------------------
ubuntu14.04 默认安装的是python3.4,也可以手工编译升级成python3.6参见本人的升级python版本文章。

sudo apt-get install python3.6-venv

mkdir project

cd project

pyhon3 -m venv venv 创建虚拟环境

. venv/bin/activate

pip install --upgrade pip

pip freeze > requirements.txt

pip install -r requirements.txt

pip install uwsgi

deactivate

-------------------------------uwsgi配置 ------------------------------

uwsgi.ini文件内容如下:

chdir = /deploy/project_dir

module = module_filename:create_app()    #  module_filename.py文件中定义了工厂方法create_app()方法,当然也可以使用定义全局app用下面的两行代替 参考:http://flask.pocoo.org/docs/1.0/cli/#application-discovery

# wsgi-file = manage.py
# callable = app

master = true
processes = 2

threads = 2
http = ip:port   # 如果使用url直接在浏览器中访问uwsgi则需要设置成http协议,如果是Nginx和uwsgi通信则可以设置成socket协议如:socket = /var/www/project/uwsgi.sock
chmod-socket= 666
logfile-chmod= 644
daemonize=%(chdir)/uwsgi.log

可以使用uwsgi --http ip:5000 --module 'module_filename:create_app()'来测试一下,成功后再运行uwsgi --ini uwsgi.ini

----------------------supervisor-----------------
sudo apt-get install supervisor 以这种方式安装后自动设置为开机启动。

supervisord配置文件在: /etc/supervisor/supervisord.conf

然后 program 的配置文件命名规则推荐:app_name.conf,放在/etc/supervisor/conf.d/下面
; ================================
; uwsgi supervisor
; ================================
[program:app_lesson] # project_name为项目名称
command = /home/ubuntu/lesson/venv/bin/uwsgi --ini /home/ubuntu/lesson/uwsgi.ini
stopsignal=QUIT
autostart=true
autorestart=true
stdout_logfile=/var/log/uwsgi/supervisor_flask.log # 运行日志
stderr_logfile=/var/log/uwsgi/supervisor_flask_err.log # 错误日志

supervisorctl 是 supervisord 的命令行客户端工具,使用的配置和 supervisord 一样

sudo supervisord -c supervisord.conf # 指定配置文件启动supervisord

sudo supervisorctl 进入 supervisorctl 的 shell 交互界面
help # 查看帮助
status # 查看程序状态
stop program_name # 关闭 指定的程序
start program_name # 启动 指定的程序
restart program_name # 重启 指定的程序
tail -f program_name # 查看 该程序的日志
update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)

sudo chmod 777 /run
sudo chmod 777 /var/log
sudo touch /var/run/supervisor.sock
sudo chmod 777 /var/run/supervisor.sock

sudo service supervisor restart

------------------------------------------------------------------------------------

ps -ef|grep uwsgi| grep -v grep|cut -c 7-15|xargs sudo kill -9

如果出错,则查看/var/log/nginx/error.log,根据错误信息来处理。

 总结: stack is : the web client <-> the web server <-> the socket <-> uWSGI <-> Python

原文地址:https://www.cnblogs.com/zxpo/p/3810526.html