Python Flask 是一个非常好用的 Python 网站开发库,可以快速开发自己想要的网站功能,并实现快速部署。老唐之前也用 Flask 开发过几个网站,后台逻辑清晰,学起来还是非常快的。写完 Flask 的代码之后,我们需要把它部署到 Web 服务器中,比如使用 Nginx 服务器和 uWSGI 把网站部署起来,并安装 SSL 证书提供安全访问。本文要介绍的就是这些步骤,教大家如何把 Flask 网站部署到自己的 VPS 服务器中。
准备条件:
- Debian 10 系统
- root 权限
- 一个域名(可选)
如果没有域名,可以直接用 localhost 来部署。当然,如果没有域名也是不能安装 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。然后我们打开浏览器访问自己的网站测试即可。