环境依赖
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;
就可以了