环境依赖
cat /etc/issue Ubuntu 14.04.5 LTS
(pyenv )python Python 3.6.4
flask --version Flask 1.0.2
uwsgi --version 2.0.17.1
nginx -v nginx version: nginx/1.4.6 (Ubuntu)
以下操作仅供参考,虽然服务跑起来了,但是很多配置还不到位。。
安装uwsgi
pip3 install uwsgi
在项目目录下新建 uwsgi_config.ini
[uwsgi]
socket = 127.0.0.1:9001 # 测试时,这里置为http = 0.0.0.0:80 监听80即可,设置为socket是与nginx通信, 同过本地9001端口
processes = 4
threads = 2
master = true
#chdir = /root/WechatTest
pythonpath = /root/WechatTest
wsgi-file = /root/WechatTest/app.py
callable = app # 要配置这一项,否则报错 uwsgi -- no python application found
memory-report = true
stats = 127.0.0.1:8080 # 自身占用端口
pidfile = uwsgi.pid
daemonize=uwsgi.log
尝试运行 uwsgi --ini uwsgi_config.ini 保证正常, 停服uwsgi --stop uwsgi.pid
然后,将/etc/nginx/uwsgi_params文件复制到项目内,与uwsgi uwsgi_config.ini同级
安装Nginx
apt-get install nginx
启动nginx /etc/init.d/nginx start
输入外网ip,发现Welcome to nginx! 保证正常
配置项目对应的.conf文件
vi /etc/nginx/sites-enabled/project_nginx.conf
设置静态文件地址location /static
设置主站地址,添加uwsgi_params并用uwsgi_pass与uwsgi通信
server{
listen 80;
server_name 外网ip地址或者你的域名;
charset utf-8;
location /static {
alias /root/WechatTest/static;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9001;
}
}
但是我们发现,/etc/nginx/sites-enabled/下还有default的链接文件,所以现在去访问项目,是进不来的,因为它监听着80端口
于是将/etc/nginx/nginx.conf,将http {}的最后一行,由include /etc/nginx/sites-enabled/*配置为include /etc/nginx/sites-enabled/*.conf我们的配置文件就启用了。
启动项目
现在重启nginx,重启网络服务/etc/init.d/networking restart,使用 uwsgi --ini uwsgi_config.ini 运行,我们的项目就可以访问了,可以看到Response Headers有Server: nginx/1.4.6 (Ubuntu)
然而静态文件没有加载,直接打开静态文件,显示403 Forbidden nginx,这是nginx没有对我们项目用户的访问权限,因此,进入/etc/nginx/nginx.conf, 将user www-data;改为自己项目的用户user root;就可以了
本文介绍如何在Ubuntu 14.04上使用uWSGI和Nginx部署Flask应用,包括安装配置uWSGI、Nginx,以及解决常见问题。
293

被折叠的 条评论
为什么被折叠?



