nginx+uwsgi01---flask部署
1.uwsgi.ini
[uwsgi] # uwsgi 启动时所使用的地址与端口注意socket与http不同,http可以被外网访问0.0.0.0 socket = 127.0.0.1:8001 # 指向网站目录 chdir = /home/www/ # python 启动程序文件 wsgi-file = manage.py (有可能需要全路径) # python 程序内用以启动的 application 变量名 callable = app # 处理器数 processes = 4 # 线程数 threads = 2 #状态检测地址 stats = 127.0.0.1:9191 注意:callable=app 这个 app 是 manage.py 程序文件内的一个变量,这个变量的类型是 Flask的 application 类 。
2.目录规划
(.env) zhangshuaipeng@orange:~/web/flask/mysite$ tree .. ├── hello.py ├── hello.pyc ├── uwsgi │ ├── uwsgi.log # 日志文件,通过该文件查看uwsgi的日志 │ ├── uwsgi.pid # pid文件,通过该文件可以控制uwsgi的重启和停止 │ ├── uwsgi.sock # socket文件,配置nginx时候使用 │ └── uwsgi.status # status文件,可以查看uwsgi的运行状态 └── uwsgi.ini ---------------------------------------------------------------------------------------------------------------------------------------------
(.env) zhangshuaipeng@orange:~/web/flask/mysite$ vi uwsgi.ini [uwsgi] chdir=/home/zhangshuaipeng/web/flask/mysite/ home=/home/zhangshuaipeng/web/flask/mysite/.env module=hello # python文件的名称 callable=app master=true processes=2 # worker进程个数 chmod-socket=666 logfile-chmod=644 uid=zhangshuaipeng_web gid=zhangshuaipeng_web procname-prefix-spaced=mysite # uwsgi的进程名称前缀 py-autoreload=1 # py文件修改,自动加载 #http=0.0.0.0:8080 # 监听端口,测试时候使用 vacuum=true # 退出uwsgi是否清理中间文件,包含pid、sock和status文件 socket=%(chdir)/uwsgi/uwsgi.sock # socket文件,配置nginx时候使用stats=%(chdir)/uwsgi/uwsgi.status # status文件,可以查看uwsgi的运行状态 pidfile=%(chdir)/uwsgi/uwsgi.pid # pid文件,通过该文件可以控制uwsgi的重启和停止 daemonize=%(chdir)/uwsgi/uwsgi.log # 日志文件,通过该文件查看uwsgi的日志
3.nginx.conf
方式一:Ubuntu 上配置 Nginx 也是很简单,不要去改动默认的 nginx.conf 只需要将/ext/nginx/sites-available/default文件替换掉就可以了。
server { listen 80; server_name XXX.XXX.XXX; #公网地址 location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8001; # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理 uwsgi_param UWSGI_PYHOME /home/www/my_flask/venv; # 指向虚拟环境目录(就是ini文件的配置,可以不用写) uwsgi_param UWSGI_CHDIR /home/www/my_flask; # 指向网站根目录 uwsgi_param UWSGI_SCRIPT manage:app; # 指定启动程序 } } 更改配置还需要记得重启一下nginx:sudo service nginx restart
方式二:软链
删掉 Nginx 的默认配置文件,在/etc/nginx/conf.d/中创建配置,实际上是创建软链 直接在当前目录下创建配置文件,将 Nginx 配置文件用软链接链接到 Nginx 配置文件夹中: sudo rm /etc/nginx/sites-enabled/default sudo ln -s /home/frank/Documents/helloflask/helloflask_nginx.conf /etc/nginx/conf.d/ 下面给出一个简单的配置: server { listen 80; server_name your.website.url charset utf-8; client_max_body_size 75M; location / { try_files $uri @yourapplication; } location @yourapplication { include uwsgi_params; uwsgi_pass unix:/home/frank/Documents/helloflask/helloflask_uwsgi.sock; } } 我们可以将上述内容保存为 helloflask_nginx.conf,稍作解释:server_name 可以是域名,也可以写 ip 地址,uwsgi_pass 是表明 Nginx 与 uwsgi 的交流方式,我这里用的是 sock 文件,当然你也可以用指定端口号的形式,具体可以看这里。 重启 Nginx:sudo /etc/init.d/nginx restart
方式三:在指定目录创建
编辑配置文件:/etc/nginx/conf.d/flask.conf,nginx 配置 新建文件 /etc/nginx/conf.d/xxx.conf xxx.conf 中xxx你来定 server { listen 81; server_name www.mysite.com; charset utf-8; client_max_body_size 5M; location /app1/ { include uwsgi_params; uwsgi_pass unix:/home/kevin/web/flask/mysite/uwsgi/uwsgi.sock;#使用套接字也可以使用端口号 } location /static{ alias /home/kevin/web/flask/mysite/static; } }