# 更新系统
sudo yum update -y
# 安装EPEL仓库(Extra Packages for Enterprise Linux)
sudo yum install epel-release -y
# 安装Nginx
sudo yum install nginx -y
# 安装Python和pip
sudo yum install python3 python3-pip python3-devel -y
# 安装虚拟环境工具
sudo pip3 install virtualenv
sudo mkdir -p /var/www/myflaskapp
sudo chown -R $USER:$USER /var/www/myflaskapp
cd /var/www/myflaskapp
python3 -m virtualenv venv
source venv/bin/activate
pip install flask gunicorn
# 创建app.py文件
echo 'from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1>Hello World from Flask!</h1>"
if __name__ == "__main__":
app.run(host="0.0.0.0")
' > app.py
gunicorn -w 4 -b 127.0.0.1:8000 app:app
sudo nano /etc/systemd/system/myflaskapp.service
添加以下内容:
[Unit]
Description=Gunicorn instance to serve myflaskapp
After=network.target
[Service]
User=yourusername
Group=nginx
WorkingDirectory=/var/www/myflaskapp
Environment="PATH=/var/www/myflaskapp/venv/bin"
ExecStart=/var/www/myflaskapp/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
[Install]
WantedBy=multi-user.target
替换yourusername
为你的实际用户名。
sudo systemctl start myflaskapp
sudo systemctl enable myflaskapp
sudo nano /etc/nginx/conf.d/myflaskapp.conf
添加以下内容:
server {
listen 80;
server_name your_domain_or_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;
}
}
替换your_domain_or_IP
为你的域名或服务器IP地址。
sudo nginx -t
sudo systemctl restart nginx
# 如果防火墙开启
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
现在你应该可以通过浏览器访问你的服务器IP或域名来查看Flask应用了。
sudo yum install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain
sudo certbot renew --dry-run
502 Bad Gateway错误:
sudo systemctl status myflaskapp
权限问题:
sudo tail -f /var/log/nginx/error.log
静态文件服务: 如果需要服务静态文件,可以在Nginx配置中添加:
location /static {
alias /var/www/myflaskapp/static;
}
这样你就成功在CentOS上使用Nginx部署了Flask应用!