Flas项目的网站生产环境配置和部署

admin2024-07-03  7

Flask 项目部署文档

文章目录

  • Flask 项目部署文档
  • 一、目的
  • 二、概述
    • 2.1 环境
    • 2.2 需求
    • 2.3 需要用到的软件
  • 三、部署过程
    • 3.1 设置服务器环境
    • 3.2 安装和配置 Flask 应用程序
    • 3.3 配置 Gunicorn
    • 3.4 配置 Systemd 服务
    • 3.5 配置 Nginx
  • 注意事项

一、目的

将一个基于 Flask 的 Web 应用程序部署到生产环境中,通过配置 Nginx、Gunicorn 和 Systemd 实现高性能和可靠性的服务。

二、概述

2.1 环境

  • 操作系统:阿里云linux
  • Python 版本:3.6
  • 云服务器公网 IP:127.27.130.150(例)

2.2 需求

  • 安装并配置 Flask 应用程序。
  • 使用 Gunicorn 作为 WSGI 服务器。
  • 使用 Nginx 作为反向代理服务器。
  • 使用 Systemd 管理 Gunicorn 服务。

2.3 需要用到的软件

  • Flask
  • Gunicorn
  • Nginx
  • Python 包管理工具 (pip)
  • Virtualenv (可选)

三、部署过程

3.1 设置服务器环境

1、安装必要的软件包

sudo pip3 install virtualenv 
sudo yum install -y nginx 

2、创建虚拟环境(可选,但推荐)

python3 -m venv flaskenv
source flaskenv/bin/activate

3.2 安装和配置 Flask 应用程序

1、安装 Flask 和 Gunicorn

pip install flask gunicorn

2、创建 Flask 项目目录

mkdir ~/flaskProject
cd ~/flaskProject

3、创建 app.py 文件并写入 Flask 应用代码(例)

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
	return "Hello, World!"

3.3 配置 Gunicorn

  1. 在项目目录中创建 start_gunicorn.sh 脚本
touch start_gunicorn.sh
chmod +x start_gunicorn.sh
  1. 编辑 start_gunicorn.sh 脚本
!/bin/bash
source /home/ecs-user/flaskenv/bin/activate
exec gunicorn -b 127.0.0.1:5000 app:app

3.4 配置 Systemd 服务

  1. 创建 Systemd 服务文件
sudo nano /etc/systemd/system/flaskapp.service
  1. 添加以下内容到 flaskapp.service
[Unit]
Description=Gunicorn instance to serve FlaskApp
After=network.target

[Service]
User=ecs-user # 换位你的用户名
Group=www-data
WorkingDirectory=/home/ecs-user/flaskProject
Environment="PATH=/home/ecs-user/flaskenv/bin"
ExecStart=/home/ecs-user/flaskProject/start_gunicorn.sh

[Install]
WantedBy=multi-user.target
  1. 启用并启动服务
sudo systemctl start flaskapp
sudo systemctl enable flaskapp
  1. 检查服务状态
sudo systemctl status flaskapp

3.5 配置 Nginx

  1. 创建 Nginx 配置文件
sudo nano /etc/nginx/sites-available/flaskapp
  1. 添加以下内容到 flaskapp 配置文件
server {
    listen 80;
    server_name 127.27.130.150; # 换位你的公网

    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;
    }
}
  1. 创建符号链接到 sites-enabled
sudo ln -s /etc/nginx/sites-available/flaskapp /etc/nginx/sites-enabled
  1. 测试 Nginx 配置
sudo nginx -t
  1. 重启 Nginx
sudo systemctl restart nginx

注意事项

  • 确保所有文件和目录的权限和所有权设置正确,特别是 flaskenv 目录和 Systemd 服务配置。
  • 在防火墙中打开必要的端口(如 80 和 5000)。
  • 检查日志文件(如 Gunicorn 和 Nginx 的日志)以排查错误。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!