flask 怎么使用nginx + uwsgi 部署


使用flask开发一个应用,需要部署,可是按照网络上的一些blog总是会报各种错误,实在配置不好了,烦请大叫指教。

使用的是阿里云服务器,Ubuntu 12.04.4 LTS。

大致步骤是模仿 开源中国 步骤完成的,如果完全按照原来的步骤进行是可以访问的,但是如果更改成我只得代码就会报
502 Bad Gateway
我的代码是存放在 Github
-----下面是我修改之后的配置文件。
1. 创建/var/www/flask-blog-test/flask-blog-test.conf


 server {
    listen      80;
    server_name localhost;
    charset     utf-8;
    client_max_body_size 75M;

    location /static {
        root /var/www/flask-blog-test/;
    }

    location / { try_files $uri @yourapplication; }
    location @yourapplication {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/flask-blog-test/flask-blog-test.sock;
    }
}


 ln -s /var/www/flask-blog-test/flask-blog-test.conf /etc/nginx/conf.d/
/etc/init.d/nginx restart

  1. 创建/var/www/flask-blog-test/flask-blog-test-uwsgi.ini

 [uwsgi]
#application's base folder
base = /var/www/flask-blog-test

#python module to import
app = app
module = %(app)

home = %(base)/venv
pythonpath = %(base)

#socket file's location
socket = /var/www/flask-blog-test/%n.sock

#permissions for the socket file
chmod-socket    = 666

#the variable that holds a flask application inside the module imported at line #6
callable = app

#location of log files
logto = /var/log/uwsgi/%n.log

```
sudo mkdir -p /var/log/uwsgi


 
3. 启动uwsgi

uwsgi --ini /var/www/flask-blog-test/flask-blog-test-uwsgi.ini


 
4. 文件目录是

flask-blog-test

│──── venv
│ │──── bin
│ │────include
│ │──── lib
│ │──── local
│────app.py

│────static
│────templates
│────flask-blog-test-uwsgi.ini
│────flask-blog-test.conf

python flask web部署

Treow 10 years, 3 months ago

nginx+uwsgi+python+flask给你一个参考吧

1.修改 /etc/nginx/nginx.conf 文件


 ...

http {
    ...
    ##
    # Virtual Host Configs
    ##

    #include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
}

默认配置基础上改了 Virtual Host Configs


 include /etc/nginx/sites-enabled/*.conf;

2.创建 /etc/nginx/sites-enabled/www.xxx.com.conf 文件


 server {
    listen 80;
    server_name www.xxx.com xxx.com;
    access_log /var/log/nginx/www.xxx.com.access.log;
    error_log /var/log/nginx/www.xxx.com.error.log;
    location /
    {
        include uwsgi_params;
        uwsgi_pass unix:///tmp/uwsgi_www.xxx.com.sock;
    }
}

3.创建 /etc/uwsgi/apps-enabled/www.xxx.com.ini 文件


 [uwsgi]
plugins = python
vhost = true
chmod-socket = 666
socket = /tmp/uwsgi_www.xxx.com.sock
venv = /var/www/www.xxx.com/env
chdir = /var/www/www.xxx.com
module = runserver
callable = app

用了virtualenv:


 venv = /var/www/www.xxx.com/env

这是代码部署的目录:


 chdir = /var/www/www.xxx.com

4.代码的结构

代码的目录是这样的:


 ├── env
│   ├── bin
│   ├── include
│   ├── lib
│   └── local
├── runserver.py
└── abc
    ├── __init__.py
    ├── models.py
    ├── static
    ├── templates
    └── views.py

代码目录里有一个 runserver.py :


 #coding=utf-8
from abc import app
...

if __name__ == '__main__':
    ...
    app.run()

其中 app Flask 对象


 from flask import Flask
app = Flask(__name__)

5.修改权限


 sudo chmod -R 775 /var/www/www.xxx.com/
sudo chown -R www-data:www-data /var/www/www.xxx.com/

6.记得安装 uwsgi-plugin-python


 sudo apt-get install uwsgi-plugin-python

是东方时代 answered 10 years, 3 months ago

Your Answer