flask 部署_Nginx部署flask项目之uwsgi配置发布(下篇)

32f31f60e55b0644c4350d2e311b2df8.gif

3. 部署过程

   3.5安装Nginx

   3.6配置Nginx

       3.6.1配置nginx的全局配置文件

       3.6.2配置flask项目的nginx配置文件

   3.7配置uwsgi.ini

4.启动flask项目 

4.1开启nginx

4.2通过uwsgi启动flask项目     

32f31f60e55b0644c4350d2e311b2df8.gif

3.5 安装Nginx

01

执行以下指令使用yum安装nginx

yum install nginx

03d27aba0f051e3347744d66861685ed.png

02

选择y,点回车

51cd14ccaedb16d3fc4d5c461c4af5d9.png

出现Complete!表示Nginx安装完成

e2e156c4a934c3f44d26d68fbe664423.png

3.4 上传flask项目至服务器

上传项目至服务器有很多种方法,这里使用PyCharm专业版做演示。

01

在工具栏里找到Tools->Deployment->Configuration...

52456ce4d0389628e936e0add34cb3c8.png

02

进入Configuration..界面后,点击按钮+,选择SFTP

17b7173c9106ecb1fc6ceac75648c444.png

为服务器取个名

4c38fad5b575b7bae5ec0a1310222b1f.png

点击OK,进入配置界面

a26f23553dbedf0b920b5e25ac7009e1.png

03

点击...进入SSH Configuration界面

d8c94deb6869c58053d04a5d329be08b.png

点击按钮+,然后填入相关信息

Host一栏填入服务器的公网IP地址

Port选择22即可

User name和Password中分别填入用户名和密码即可

填完以上信息后可以点击Test Connection调试一下是否连接成功

4ac41fd5d3c80d8b8751907def49c682.png

04

配置文件的存放位置

(路径必须在服务器中存在,否则上传文件过程中会报错)

303f94c37ead5462c9afb908a6de6048.png

把Web Server URL设置成服务器的公网IP地址,并在Advanced选项里设置utf-8即可

d0fc8161a81b5b12f11c58463ea6f420.png

点击OK,配置结束

配置完成便可开始上传flask项目文件

05

在工具栏找到Tools->Deployment->Browse Remote Host

325cde7669fa4f41393aef43c19460e3.png

点击Browse Remote Host后,PyCharm右侧边栏便会弹出一个Remote Host窗口,

复制运行flask项目所需的文件,并在窗口粘贴即可。

e5a7397da67b7811433517ab6f170375.png

06

文件上传完成验证一下,打开XShell查看服务器上的指定文件夹下有没有上传的文件

69e57c999a5ad0be241aae1ee6bdcd5f.png

这里要注意,上传到服务器上的flask项目中的入口文件里,必须要把debug设置成False,否则项目将无法在服务器运行。

7892725349377bdd9bc2f6e8d63dc317.png

3.5 在服务器上创建flask虚拟环境

flask项目

开发flask项目需要在虚拟环境,部署也是如此。所以部署flask项目前需要在服务器中创建一个和开发环境一致的虚拟环境。虚拟环境是Python解释器的一个私有的副本,在这个环境中你可以安装私有包,而且不会影响系统中安装的全局Python解释器,也不需要管理员权限。虚拟环境可以在系统中Python解释器中避免包的混乱和版本的冲突。为每个程序单独创建虚拟环境可以保证程序只能访问虚拟环境中的包,从而保持全局解释器的干净简洁,使其只作为(更多)虚拟环境的源。

笔者把flask项目放在flask_demo文件夹中,并在flask_demo同级创建了一个Virtualenv

文件夹,在Virtualenv路径下运行python3 -m venv flask-env

可以看到Virtualenv文件夹下多了一个flask-env文件夹

b055294d3988dfd2520a47b6f69ee839.png

进入flask-env文件夹,发现有一个bin文件夹

d0ac3db6297a7f5f80eeb6e6fd880e64.png

进入bin文件夹可以看到一个activate文件

在命令行输入source activate指令激活虚拟环境,可以看到命令行前面多了一个(flask-env),代表此时现在是在虚拟环境下(要退出虚拟环境,只要输入deactivate指令即可)

2f93621e2c79edbdade921576eb60251.png

此时便可以在服务器的flask虚拟环境下用pip安装所需的库

32f31f60e55b0644c4350d2e311b2df8.gif

安装的库的种类以及版本必须要和开发时用到的库保持一致,确保代码的运行环境一致,否则有可能出现,自己电脑里可以运行项目,服务器里却无法运行项目的情况。

首先保证服务器的pip版本要和自己电脑的pip版本一致

32f31f60e55b0644c4350d2e311b2df8.gif

01

使用如下指令即可指定版本更新

pip install --upgrade pip==版本号

例如:将pip版本更新到20.2.2,如下

pip install --upgrade pip==20.2.2

02

查看自己开发时用到的库,可以在自己开发用的电脑的flask虚拟环境下执行pip3 list

58b6fb80c9182e6462afb9eef54ba50b.png

同理,查看服务器的flask虚拟环境的库,只要在flask虚拟环境下执行pip3 list即可

e7851fb2cb33996a7af0b674924630b7.png

03

装库用到的指令

pip3 install 库名==版本号

例如:

安装版本号为2.4.4的Flask-SQLAlchemy库只需要输入如下指令即可

pip3 install Flask-SQLAlchemy==2.4.4

如果网速过慢,也可以用阿里云的镜像安装库

例如:安装版本号为1.1.2的Flask库

pip install -i http://mirrors.aliyun.com/pypi/simple/ Flask==1.1.2 --trusted-host mirrors.aliyun.com

安装完成后就可以退出flask虚拟环境

3.6 配置Nginx

3.6.1 配置nginx的全局配置文件

01

进入全局配置文件的路径

cd /etc/nginx

编辑nginx.conf

vi nginx.conf

敲击键盘上的Insert键或i键开始对文件进行编辑

将用户换为root

230fbca093ba83290e779b1cbbc1468b.png

02

打开gzip,加快站点内容下载速度

a55caf6399af0064e229a9fe722e2433.png

03

Nginx.conf默认配置了一个站点,需要把它注释掉,因为不同的站点都是在子目录里进行配置的

836a732cc6b5085b0eded9b5d7acc90e.png 4e8e174ef03e7be354f52ae8b6c031d3.png

注意:

不要把include/etc/nginx/conf.d/*.conf;注释掉了

Nginx可以部署很多个站点,每一个站点都可以在/etc/nginx/conf.d/路径下后缀为.conf的文件中进行配置。

nginx.conf的内容如下,供参考:

代码

# For more information on configuration, see:

#   * Official English Documentation: http://nginx.org/en/docs/

#   * Official Russian Documentation: http://nginx.org/ru/docs/

user root;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;

events {

    worker_connections 1024;

}

http {

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    gzip                on;

    sendfile            on;

    tcp_nopush          on;

    tcp_nodelay         on;

    keepalive_timeout   65;

    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;

    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.

    # See http://nginx.org/en/docs/ngx_core_module.html#include

    # for more information.

    include /etc/nginx/conf.d/*.conf;

   # server {

   #     listen       80 default_server;

   #     listen       [::]:80 default_server;

   #     server_name  _;

   #     root         /usr/share/nginx/html;

   #     # Load configuration files for the default server block.

   #     include /etc/nginx/default.d/*.conf;

   #     location / {

   #     }

   #     error_page 404 /404.html;

   #     location = /404.html {

   #     }

   #     error_page 500 502 503 504 /50x.html;

   #     location = /50x.html {

   #     }

   # }

# Settings for a TLS enabled server.

#

#    server {

#        listen       443 ssl http2 default_server;

#        listen       [::]:443 ssl http2 default_server;

#        server_name  _;

#        root         /usr/share/nginx/html;

#

#        ssl_certificate "/etc/pki/nginx/server.crt";

#        ssl_certificate_key "/etc/pki/nginx/private/server.key";

#        ssl_session_cache shared:SSL:1m;

#        ssl_session_timeout  10m;

#        ssl_ciphers HIGH:!aNULL:!MD5;

#        ssl_prefer_server_ciphers on;

#

#        # Load configuration files for the default server block.

#        include /etc/nginx/default.d/*.conf;

#

#        location / {

#        }

#

#        error_page 404 /404.html;

#        location = /404.html {

#        }

#

#        error_page 500 502 503 504 /50x.html;

#        location = /50x.html {

#        }

#    }

}

修改好文件以后,敲击键盘上的ESC按钮,输入冒号(:),再输入wq,这样就修改并保存了。

3.6.2 配置flask项目的nginx配置文件

进入到conf.d路径下

cd /etc/nginx/conf.d

创建一个自己flask项目的nginx配置文件

vi flask_demo.conf

敲击键盘上的Insert键或i键开始对文件进行编辑

具体内容如下,红字的为注释,不要写入配置文件里。

397c6fbe24650e2e4170a738d1e8dcf6.png

代码

server{

  listen  8181     ;

  server_name  绑定的域名或你的服务器公网IP地址;

  charset      utf-8;

  access_log   /var/log/nginx/log/flask_demo.access.log   main;

  error_log    /var/log/nginx/log/flask_demo.error.log    warn;

  location  / {

     root   /root/lk/back_end/flask_demo;

     index  index.html index.htm;

     include uwsgi_params;

    # include /etc/nginx/uwsgi_params;

     uwsgi_pass  127.0.0.1:5000;

     uwsgi_param UWSGI_PYHOME  /root/lk/back_end/Virtualenv/flask-env;

     uwsgi_param UWSGI_CHDIR   /root/lk/back_end/flask_demo;

     uwsgi_param PYTHONPATH    /root/lk/back_end/flask_demo;

     uwsgi_param UWSGI_MODULE  run;

#这里写入口文件名,也就是下图代码所在的文件,笔者的入口文件名为run.py,所以这里写run

     uwsgi_param UWSGI_CALLABLE  app;

#app就是下图中app.run方法中的app 

  }          

}

494c700a5d66bfcf3c90a0a77789e598.png

修改好文件以后,敲击键盘上的ESC按钮,输入冒号(:),再输入wq,这样就修改并保存了。

3.7 配置uwsgi.ini

在站点目录中(flask项目入口文件所在目录,笔者的入口文件为run.py)创建uwsgi.ini文件

vi uwsgi.ini

fc9d7fe051c2b13620d63b90c2a40cbf.png

内容如下

[uwsgi]

enable-theads=true

thunder-lock=true

vhost=true

socket=127.0.0.1:5000

master=true

workers=4

max-requests=128

4.启动flask项目

4.1 开启nginx

01

到/var/log/nginx路径下创建文件夹log,如果不创建文件夹的话服务器找不到日志文件要写的地址

cd /var/log/nginx

mkdir log

nginx -t -c /etc/nginx/nginx.conf

如果结果如下图所示,就表示nginx配置文件完成

2b5324ec237a7ccb2591ba67d20eadeb.png

02

现在便可以启动nginx了

systemctl start nginx.service

这时可以在浏览器里访问一下服务器的公网ip地址,如果出现下图所示,就表示nginx启动成功了

73ce196b6b0d532d65587ddbd6cc38dd.png

4.2 通过uwsgi启动flask项目

01

激活flask虚拟环境

02

进入到uwsgi.ini文件所在路径下,运行以下指令

uwsgi --ini uwsgi.ini

03

启动成功

75e5583eef46134c151b20c7fc3d1f40.png

04

在浏览器中测试一下flask项目是否成功运行

841eaa5d8ae2393e40cd454ccf0d1877.png

这里可以看到,确实可以访问到,部署成功。

想看更多精彩内容

请关注我们的实验室公众号哟

82718690a9a1902ca5d00eca679dacc2.png

扫码关注啦!

0b59c0c36c5b6ed96f997fc6f1fb7c9f.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值