在 Linux 上使用 Nginx 部署 Python Flask 应用
步骤一:准备 Flask 应用
-
创建 Flask 应用 确保你有一个可以运行的 Flask 应用。例如,创建一个简单的 app.py 文件:
from flask import Flask app = Flask(__name__)@app.route('/') def hello_world():return 'Hello, World!'if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
-
安装依赖 在你的 Flask 应用目录中创建一个 requirements.txt 文件,并添加 Flask
Flask==2.0.1
然后安装依赖:
pip3 install -r requirements.txt
步骤二:使用 systemd 管理 Flask 应用
-
创建一个 systemd 服务文件 创建一个新的 systemd 服务文件,例如 /etc/systemd/system/flaskapp.service,内容如下:
[Unit] Description=Flask Application After=network.target[Service] User=your_username WorkingDirectory=/path/to/your/flaskapp ExecStart=/usr/bin/python3 /path/to/your/flaskapp/app.py Restart=always[Install] WantedBy=multi-user.target
-
重新加载 systemd 配置
sudo systemctl daemon-reload
-
启动并启用服务
sudo systemctl start flaskapp sudo systemctl enable flaskapp
-
检查服务状态
sudo systemctl status flaskapp
步骤三:配置 Nginx
-
安装 Nginx 如果你还没有安装 Nginx,可以使用以下命令进行安装:
SHELL
sudo yum install nginx
-
配置 Nginx 反向代理 创建一个新的 Nginx 配置文件,例如 /etc/nginx/conf.d/flaskapp.conf,内容如下:
SHELL
server {listen 80;server_name your_domain_or_ip;location / {proxy_pass http://127.0.0.1:5000;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;} }
-
测试 Nginx 配置
sudo nginx -t
-
重启 Nginx
sudo systemctl restart nginx
步骤四:访问你的 Flask 应用
现在,你可以通过浏览器访问你的服务器 IP 或域名,应该能够看到 “Hello, World!” 的输出。
额外提示
-
确保防火墙允许 HTTP 流量(端口 80)。你可以使用以下命令打开端口:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
-
如果你使用的是 HTTPS,可以考虑配置 SSL 证书,例如使用 Let’s Encrypt。