所有托管服务节省 15%

测试技能,享折扣

使用代码: Skills 开始使用
China
Linux 管理 虚拟服务器

如何在托管上安装Flask:完整分步指南

Flask 是一个轻量级、灵活的 Python 网络框架,使开发者能够快速高效地构建和部署网络应用程序。无论您是启动个人项目、REST API 还是全面的网络服务,了解如何在托管环境中正确安装和配置 Flask 是一项必要的技能。本综合指南将引导您完成每一步——从服务器设置到使用 Gunicorn 和 Nginx 的生产部署。

1. 前置条件

在开始安装过程之前,请确保您已准备好以下内容:

支持 Python 的托管环境

您需要一个能让您完全控制服务器环境的托管服务。共享托管计划通常会限制 Python 执行,因此对于 Flask 部署,强烈建议使用 VPS Hosting 计划或 Dedicated Server。这些选项为您提供 root 访问权限、完整的软件包管理功能以及根据需要配置堆栈的灵活性。

SSH 访问

您需要 SSH 访问权限来连接到远程服务器并执行命令。大多数基于 Linux 的 VPS 和专用服务器环境开箱即支持此功能。

已安装 Python

建议使用 Python 3.8 或更高版本。大多数现代托管环境都预装了 Python,但我们将在设置过程中验证这一点。

可选:域名

如果您计划通过域名而不是原始 IP 地址使公开访问 Flask 应用,请考虑在开始之前通过 Domain Registration 注册一个。

2. 通过 SSH 连接到您的服务器

打开您的终端 (Linux/macOS) 或 SSH 客户端,例如 PuTTY (Windows),并连接到您的服务器:

ssh username@your_server_ip

username 替换为您的实际服务器用户名,将 your_server_ip 替换为您服务器的公共 IP 地址。

连接后,验证 Python 3 是否可用:

python3 --version

您应该看到类似于 Python 3.10.x 的输出。如果未安装 Python,请继续安装它:

sudo apt install python3

3. 更新您的服务器

在安装任何软件包之前,最佳做法是更新系统的软件包列表并将现有软件包升级到最新版本:

sudo apt update
sudo apt upgrade -y

这确保您使用的是所有依赖项的最稳定和最安全的版本。

4. 安装 Flask

第 1 步:安装 pip

pip 是 Python 的包管理器,安装 Flask 和其他 Python 库需要它。如果尚未安装,请安装它:

sudo apt install python3-pip -y

验证安装:

pip3 --version

第 2 步:创建项目目录

通过创建专用目录来组织您的应用程序:

mkdir my_flaskapp
cd my_flaskapp

第 3 步:设置虚拟环境

使用虚拟环境将项目的依赖项与全局 Python 安装隔离,防止版本冲突并保持服务器整洁:

sudo apt install python3-venv -y
python3 -m venv venv

激活虚拟环境:

source venv/bin/activate

您的终端提示符将改变以指示虚拟环境处于活动状态,通常在行的开头显示 (venv)

第 4 步:安装 Flask

激活虚拟环境后,使用 pip 安装 Flask:

pip install Flask

确认安装:

flask --version

您应该看到 Flask 版本以及 Python 和 Werkzeug 版本。

5. 创建一个简单的Flask应用程序

第1步:创建应用程序文件

在项目目录中创建一个名为 app.py 的新文件:

nano app.py

第2步:编写Flask应用程序

添加以下最小Flask应用程序代码:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, World! Flask is running successfully."

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

代码分解:

  • Flask(__name__) — 创建一个新的Flask应用程序实例。
  • @app.route('/') — 为主页定义URL路由。
  • app.run(host='0.0.0.0', port=5000) — 启动开发服务器,使其可在所有网络接口的5000端口上访问。

第3步:保存并退出

CTRL + X,然后按 Y,最后按 Enter 以保存文件并退出nano编辑器。

6. 在开发模式下运行您的 Flask 应用程序

启动 Flask 开发服务器以测试您的应用程序:

python app.py

您的应用程序现在可以在网络浏览器中访问:

http://your_server_ip:5000

> 重要:内置的 Flask 开发服务器不适合用于生产环境。它是单线程的,性能未经优化,并且缺少关键的安全功能。对于实时部署,始终使用生产级 WSGI 服务器。

7. 使用 Gunicorn 在生产环境中部署 Flask

对于生产部署,Gunicorn(Green Unicorn)是最广泛使用的 Python WSGI HTTP 服务器。它能高效处理多个并发请求,并与 Nginx 无缝集成。

步骤 1:安装 Gunicorn

在虚拟环境仍处于活跃状态的情况下,安装 Gunicorn:

pip install gunicorn

步骤 2:使用 Gunicorn 运行应用程序

使用 Gunicorn 启动 Flask 应用,将其绑定到 localhost 的 8000 端口:

gunicorn app:app -b 127.0.0.1:8000 --workers 3

参数说明:

  • app:app — 指的是 app.py 文件内的 app 对象。
  • -b 127.0.0.1:8000 — 将 Gunicorn 绑定到 localhost 的 8000 端口(Nginx 将处理外部流量)。
  • --workers 3 — 生成 3 个工作进程来处理并发请求。常见的公式是 (2 × CPU cores) + 1

步骤 3:将 Gunicorn 作为 Systemd 服务运行(推荐)

为确保 Gunicorn 在服务器重启时自动启动,请创建一个 systemd 服务文件:

sudo nano /etc/systemd/system/my_flaskapp.service

添加以下配置:

[Unit]
Description=Gunicorn instance to serve my_flaskapp
After=network.target

[Service]
User=your_username
Group=www-data
WorkingDirectory=/home/your_username/my_flaskapp
Environment="PATH=/home/your_username/my_flaskapp/venv/bin"
ExecStart=/home/your_username/my_flaskapp/venv/bin/gunicorn app:app -b 127.0.0.1:8000 --workers 3

[Install]
WantedBy=multi-user.target

your_username 替换为您的实际服务器用户名。然后启用并启动服务:

sudo systemctl daemon-reload
sudo systemctl start my_flaskapp
sudo systemctl enable my_flaskapp

检查服务状态:

sudo systemctl status my_flaskapp

8. 将 Nginx 配置为反向代理

Nginx 充当反向代理,位于 Gunicorn 前面,处理所有传入的 HTTP/HTTPS 流量。此设置可提高性能、启用 SSL 终止,并允许您高效地提供静态文件。

步骤 1:安装 Nginx

sudo apt install nginx -y

步骤 2:创建 Nginx 配置文件

为您的 Flask 应用程序创建新的服务器块配置:

sudo nano /etc/nginx/sites-available/my_flaskapp

添加以下配置:

server {
    listen 80;
    server_name your_domain_or_ip;  # Replace with your domain or server IP

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /static {
        alias /home/your_username/my_flaskapp/static;
        expires 30d;
    }
}

步骤 3:启用配置

创建符号链接以启用该站点并测试 Nginx 配置:

sudo ln -s /etc/nginx/sites-available/my_flaskapp /etc/nginx/sites-enabled
sudo nginx -t

如果测试返回 syntax is oktest is successful,请重新启动 Nginx:

sudo systemctl restart nginx

您的 Flask 应用程序现在可在 http://your_domain_or_ip 的端口 80 上访问。

9. 使用 SSL/HTTPS 保护您的 Flask 应用程序

通过 HTTPS 运行您的应用程序不再是可选的 — 它是安全性、用户信任和 SEO 排名的基本要求。您可以使用 Certbot 和 Let’s Encrypt 获取和安装免费 SSL 证书,或通过 SSL Certificates 购买高级证书以获得增强的验证和保修覆盖。

安装 Certbot 并获取免费 SSL 证书

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot 将自动修改您的 Nginx 配置以启用 HTTPS 并设置自动证书续期。

验证自动续期已配置:

sudo certbot renew --dry-run

10. 防火墙配置

确保您的服务器防火墙允许必要端口上的流量:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status

Nginx Full 打开端口 80 (HTTP) 和端口 443 (HTTPS)。

11. 故障排除常见问题

问题可能原因解决方案
502 Bad GatewayGunicorn 未运行检查 sudo systemctl status my_flaskapp
Permission denied on socket文件权限不正确确保 Nginx 用户有权访问应用目录
Flask 应用未找到服务文件中的工作目录错误在 systemd 配置中仔细检查 WorkingDirectory 路径
端口 5000 无法访问防火墙阻止该端口使用 sudo ufw allow 5000 打开端口(仅限开发)
ModuleNotFoundError虚拟环境未激活确保 ExecStart 指向 venv 的 Python/Gunicorn 二进制文件

12. 总结和后续步骤

在托管服务器上部署 Flask 应用程序涉及多个相互关联的步骤:设置干净的服务器环境、在虚拟环境中安装 Python 和 Flask、将 Gunicorn 配置为生产 WSGI 服务器,以及在前面放置 Nginx 作为反向代理。添加 SSL 加密完成了安全的、生产就绪的部署。

以下是完整部署堆栈的快速回顾:

  • Flask — Python web 框架
  • Gunicorn — 生产 WSGI 服务器
  • Nginx — 反向代理和静态文件服务器
  • SSL/TLS — HTTPS 加密
  • Systemd — 进程管理和自动重启

为了获得最佳的 Flask 托管体验,您需要一个能够提供完整 root 访问权限和可靠性能的服务器环境。AlexHost 的 VPS 托管计划是一个绝佳选择,提供 SSD 存储、专用资源和完整的 SSH 访问。如果您需要更多功能来处理高流量应用程序,请探索我们的 专用服务器以获得最大的性能和隔离。

如果您正在管理多个 web 项目并更喜欢控制面板界面,请考虑我们的 VPS with cPanel 选项,它简化了服务器管理,同时仍然为您提供运行 Python 应用程序的灵活性。

按照本指南,您的 Flask 应用程序现已正确配置、安全保护,并准备好在生产环境中为真实用户提供服务。定期更新您的依赖项,监控您的应用程序日志,并实施适当的备份策略以维护健康的、长期运行的部署。