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;
    } 
}    

 

posted @ 2018-04-20 18:18  Gaoyongxian666  阅读(212)  评论(0编辑  收藏  举报