Debian 10 使用 Nginx 和 uWSGI 部署 Python Flask 网站教程

已关闭留言

Python Flask 是一个非常好用的 Python 网站开发库,可以快速开发自己想要的网站功能,并实现快速部署。老唐之前也用 Flask 开发过几个网站,后台逻辑清晰,学起来还是非常快的。写完 Flask 的代码之后,我们需要把它部署到 Web 服务器中,比如使用 Nginx 服务器和 uWSGI 把网站部署起来,并安装 SSL 证书提供安全访问。本文要介绍的就是这些步骤,教大家如何把 Flask 网站部署到自己的 VPS 服务器中。

准备条件:

  • Debian 10 系统
  • root 权限
  • 一个域名(可选)

如果没有域名,可以直接用 localhost 来部署。当然,如果没有域名也是不能安装 SSL 证书的。

文章目录
隐藏
一、安装 Nginx
二、设置 Flask 和 uWSGI
三、设置 Nginx
四、运行 uWSGI
五、安装 SSL 证书

一、安装 Nginx

1、安装 Nginx

$ apt install nginx

2、打开浏览器,输入 VPS 的 IP 地址,测试 Nginx 是否安装成功。

3、如果你使用域名,将域名解析到你的 VPS 的 IP 地址,本文将以下面的 IP 地址和域名作为示例:

  • IP 地址:192.168.1.123
  • 域名:example.com & www.example.com

二、设置 Flask 和 uWSGI

1、安装 uWSGI 和 Flask

$ apt install python3-pip python-dev
$ pip3 install uwsgi flask

2、创建一个网站目录

$ mkdir /var/www/example

3、如果你已经写好了 Flask 网站的代码,将这些代码复制到 /var/www/example 这个目录即可。

如果你还没有写代码,也可以使用下面的代码创建一个最简单的测试页:

$ vim /var/www/example/main.py

写入以下内容:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
return "Hello World!"

if __name__ == "__main__":
app.run(host="0.0.0.0")

4、创建一个 uWSGI 的 config-uwsgi.ini 文件:

$ vim /var/www/example/config-uwsgi.ini

写入以下内容:

[uwsgi]

app = main
module = %(app)
callable = app

socket = /var/www/example/example.sock
chdir = /var/www/example
chmod-socket = 666

processes = 4
die-on-term = true

其中的 processes 参数对于配置高的服务器可以设置的更大。

三、设置 Nginx

1、删除默认的 Nginx 配置

$ rm /etc/nginx/sites-enabled/default

2、新建一个 Nginx 配置文件

$ nano /var/www/example/config-nginx.conf

写入以下内容(如果没有域名就用 localhost 代替即可):

server {

    listen 80;
    listen [::]:80;

    server_name example.com www.example.com;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/example/example.sock;
    }
}

3、创建一个软连接:

$ ln -s /var/www/example/config-nginx.conf /etc/nginx/conf.d/

4、重启 Nginx:

$ systemctl restart nginx

四、运行 uWSGI

1、使用 nohup 运行 uWSGI:

$ nohup uwsgi /var/www/example/config-uwsgi.ini &

2、使用 CTRL + C 命令来发送 SIGINT 信号,然后观察进程是否正常运行。

3、打开你的域名,查看是否能看到你写的网站或者是 Hello World 信息。

五、安装 SSL 证书

1、安装 Certbot

$ apt install certbot python-certbot-nginx

2、生成一个 SSL 证书

$ certbot --nginx

3、填写一些必要信息,然后输入回车开始生成证书。最后可以选择是否强制跳转 HTTPS。然后我们打开浏览器访问自己的网站测试即可。