创建 Flask 应用程序后,您会发现包含的 Web 服务器最适合开发。在本指南中,您将学习如何使用 Nginx Web 服务器、Certbot for SSL 和 uWSGI 应用服务器在 Debian 10 云服务器实例上托管您的 Flask 应用程序。
一、准备工作
- 完全更新的 Debian 10 服务器
- 服务器的根权限
- 注册域名是可选的,但建议使用。
您可以在 Nginx 配置步骤中使用 localhost 来学习本教程,而无需域名。您将无法安装有效的 SSL 证书,因此请跳过 Certbot说明。
二、 安装云
- 安装 Nginx 软件包。
# apt install nginx
- 通过在浏览器中导航到服务器的IP地址来测试Nginx。验证是否显示 Nginx 网页。
- 如果您有已注册的域,请为服务器设置 DNS 条目。本教程使用以下值:
- IPv4地址:192.0.2.123
- 服务器名称:example.com&www.example.com
三、 设置 Flask 和 uWSGI
- 安装 uWSGI 和 Flask。
# apt install python3-pip python-dev # pip3 install uwsgi flask
- 创建网站主目录。
# mkdir /var/www/example
- 如果要部署 Flask 应用程序,请将其移动到 /var/www/example目录。或者,您可以创建一个简单的 Flask 应用程序来测试本指南。
# nano /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")
- Createconfig-uwsgi.ini for uWSGI.
# nano /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
对于较大的服务器,可以将进程行设置得更高。
四、 设置 Nginx
- 删除默认的 Nginx 配置。
# rm /etc/nginx/sites-enabled/default
- 创建一个新的 Nginx 配置文件。
# nano /var/www/example/config-nginx.conf
粘贴以下内容。如果您没有注册域名,请使用localhost进行server_name代替 example.com 和 www.example.com。
server { listen 80; listen [::]:80; server_name example.com www.example.com; location / { include uwsgi_params; uwsgi_pass unix:/var/www/example/example.sock; } }
- 创建一个从 Nginx 配置到目录的符号链接。
conf.d
# ln -s /var/www/example/config-nginx.conf /etc/nginx/conf.d/
- 重新启动 Nginx。
# systemctl restart nginx
五、运行 uWSGI
- Nginx被配置为将流量代理到uWSGI,但该服务尚未运行。用nohup启动uWSGI。
# nohup uwsgi /var/www/example/config-uwsgi.ini &
- 按 + 发送 SIGINT 信号,并查看进程是否仍在后台运行。对于生产用途,我们建议在 systemd 下启动时运行 uWSGI。CTRLC
- 在 Web 浏览器中导航到您的网站,并验证您看到的是“Hello World!”消息。
六、安装 SSL 证书
如果您有公共域名,请使用 Certbot 使用免费的 Let’s Encrypt 证书为 HTTPS 配置 Web 服务器。
- 安装Certbot。
# apt install certbot python-certbot-nginx
- 请求 SSL 证书。
# certbot --nginx
- 在 Certbot 提示时回答问题并同意服务条款。
- Certbot将询问哪些域名应该支持SSL,按以选择所有名称。ENTER
- 出现提示时,选择将 HTTP 流量重定向到 HTTPS。
七、结论
遵循此初学者教程后,您的 Nginx Web 服务器在 uWSGI 上运行 Flask 应用程序,并使用 Certbot 进行保护。对于完全的生产使用,您还应该在启动时以具有有限权限的普通用户身份运行 uWSGI。