使用 uWSGI 在 Nginx 上部署 Flask 网站

创建 Flask 应用程序后,您会发现包含的 Web 服务器最适合开发。在本指南中,您将学习如何使用 Nginx Web 服务器、Certbot for SSL 和 uWSGI 应用服务器在 Debian 10 云服务器实例上托管您的 Flask 应用程序。

一、准备工作

  • 完全更新的 Debian 10 服务器
  • 服务器的根权限
  • 注册域名是可选的,但建议使用。

您可以在 Nginx 配置步骤中使用 localhost 来学习本教程,而无需域名。您将无法安装有效的 SSL 证书,因此请跳过 Certbot说明。

二、 安装云

  1. 安装 Nginx 软件包。
    # apt install nginx
    
  2. 通过在浏览器中导航到服务器的IP地址来测试Nginx。验证是否显示 Nginx 网页。
  3. 如果您有已注册的域,请为服务器设置 DNS 条目。本教程使用以下值:
    • IPv4地址:192.0.2.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目录。或者,您可以创建一个简单的 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")
    
  4. 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

  1. 删除默认的 Nginx 配置。
    # rm /etc/nginx/sites-enabled/default
    
  2. 创建一个新的 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;
    
        }
    
    }
    
  3. 创建一个从 Nginx 配置到目录的符号链接。conf.d
    # ln -s /var/www/example/config-nginx.conf /etc/nginx/conf.d/
    
  4. 重新启动 Nginx。
    # systemctl restart nginx
    

五、运行 uWSGI

  1. Nginx被配置为将流量代理到uWSGI,但该服务尚未运行。用nohup启动uWSGI。
    # nohup uwsgi /var/www/example/config-uwsgi.ini &
    
  2. 按 + 发送 SIGINT 信号,并查看进程是否仍在后台运行。对于生产用途,我们建议在 systemd 下启动时运行 uWSGICTRLC
  3. 在 Web 浏览器中导航到您的网站,并验证您看到的是“Hello World!”消息。

六、安装 SSL 证书

如果您有公共域名,请使用 Certbot 使用免费的 Let’s Encrypt 证书为 HTTPS 配置 Web 服务器。

  1. 安装Certbot。
    # apt install certbot python-certbot-nginx
    
  2. 请求 SSL 证书。
    # certbot --nginx
    
  3. 在 Certbot 提示时回答问题并同意服务条款。
  4. Certbot将询问哪些域名应该支持SSL,按以选择所有名称。ENTER
  5. 出现提示时,选择将 HTTP 流量重定向到 HTTPS。

七、结论

遵循此初学者教程后,您的 Nginx Web 服务器在 uWSGI 上运行 Flask 应用程序,并使用 Certbot 进行保护。对于完全的生产使用,您还应该在启动时以具有有限权限的普通用户身份运行 uWSGI。

赞(0)
未经允许不得转载:主机百科 » 使用 uWSGI 在 Nginx 上部署 Flask 网站