flask+uwsgi+nginx+pycharm部署应用

2019-12-09  本文已影响0人  Ming_a221

前提:python3虚拟环境已安装
1.安装nginx

yum install -y nginx

2.安装uwsgi和flask

pip3 install uwsgi flask

3.创建工程目录

mkdir -p  /home/pythonprojecks/wechat_project

4.配置pycharm,上传工程

tools->Deployment->configuration
image.png

5.使用uwsgi部署Flask项目

uwsgi --socket 0.0.0.0:5000 --protocol=http -p 3 -w app:app
我们来对uwsgi的参数进行分别讲解:
1.  `--socket 0.0.0.0:5000`:指定暴露端口号为5000。
2.  `--protocol=http`:说明使用 http 协议,即端口5000可以直接使用HTTP请求进行访问。
3.  `-p 3`表示启动的服务占用3个进程。
4.  `-w app:app`:-w 指明了要启动的模块,run 就是项目启动文件 app.py 去掉扩展名,app 是 run.py 文件中的变量 app,即 Flask 实例。

启动完成后,我们可以在任意网络连通的机器上打开浏览器,并访问如下地址: 
[http://server_domain_or_IP:5000](http://server_domain_or_ip:5000/)

6.使用nginx + uwsgi部署Flask项目
在开始讲解Nginx之前,我们首先讲解如何将复杂的uwsgi命令参数保存在配置文件中,从而每次启动uwsgi时,无需添加繁琐的参数,只需要指定配置文件即可。
编辑/home/nianshi/flask_project/uwsgi.ini:

[uwsgi]
module = app:app
master = true
processes = 3
chdir = /home/pythonprojecks/wechat_project
socket = /home/pythonprojecks/wechat_project/log/uwsgi/log_sock.sock
socket = 0.0.0.0:5000
logto = /home/pythonprojecks/wechat_project/log/uwsgi/log.log
chmod-socket = 660
vacuum = true

其中,文件参数说明如下:

可以看到,此处我们没有添加--protocol=http对应的配置信息。
即此时我们暴露的端口不能使用HTTP请求直接访问,当时需要经过Nginx进行反向代理。
此时,我们可以执行如下命令来通过配置文件启动uwsgi:

uwsgi --ini /home/pythonprojecks/wechat_project/script/uwsgi.ini

此时,我们已经正常启动了uWsgi服务,但是无法直接访问,需要继续部署Nginx服务。
下面,我们来编辑Nginx的配置文件/home/pythonprojecks/wechat_project/script//nginx.conf:

worker_processes 4;
events { worker_connections 1024; }
http {
    server {
        access_log /home/pythonprojecks/wechat_project/log/nginx/access.log;
        error_log  /home/pythonprojecks/wechat_project/log/nginx/error.log;
        listen 80;
        charset    utf-8;
        # max upload size
        client_max_body_size 75M;  # adjust to taste
        location / {
            include /etc/nginx/uwsgi_params;
            uwsgi_pass 0.0.0.0:5000;
        }
    }
}

其中,如下两行指定反向代理的信息:

include uwsgi_params;
uwsgi_pass 0.0.0.0:5000;

两个分别指明了代理的解析方式是通过uwsgi解析以及uWsgi暴露的端口地址为0.0.0.0:5000。
下面,我们启动Nginx服务:

nginx -c /home/pythonprojecks/wechat_project/script/nginx.conf

启动完成后,由于nginx本身监听的端口是80端口,因此我们可以直接访问机器地址进行访问

上一篇 下一篇

猜你喜欢

热点阅读