CentOS部署Python的Flask框架
Flask框架只适合在本地进行运行,在云服务器上需要WSGI的HTTP服务器gunicorn进行运行
1-完整CentOS部署Flask脚本
1-完整脚本
以下是整理后的脚本,并添加了注释以解释每个步骤的作用:
#!/bin/bash
# 切换到指定目录
cd /root/enzo/product/python_project/
# 删除旧的 bigmodel_01_chat 目录,如果存在
rm -rf bigmodel_01_chat
# 从远程仓库克隆 bigmodel_01_chat 项目,并指定分支 master_webtab_4
git clone git@gitee.com:enzoism/bigmodel_01_chat.git -b master_webtab_4
# 进入克隆的项目目录
cd bigmodel_01_chat
# 安装项目所需的 Python 依赖包
pip install flask requests pymongo bson python-dotenv datetime jsonify gunicorn
# 使用 Gunicorn 启动 Flask 应用,绑定到所有网络接口的 5000 端口
gunicorn --bind 0.0.0.0:5000 app:app
2-脚本解释
-
切换目录 (
cd
):cd /root/enzo/product/python_project/
: 切换到指定的项目目录。
-
删除旧目录 (
rm -rf
):rm -rf bigmodel_01_chat
: 删除旧的bigmodel_01_chat
目录,以便为新的克隆做好准备。
-
克隆项目 (
git clone
):git clone git@gitee.com:enzoism/bigmodel_01_chat.git -b master_webtab_4
: 从指定的 Git 仓库克隆bigmodel_01_chat
项目,并切换到master_webtab_4
分支。
-
进入项目目录 (
cd
):cd bigmodel_01_chat
: 进入克隆下来的项目目录。
-
安装依赖 (
pip install
):pip install flask requests pymongo bson python-dotenv datetime jsonify gunicorn
: 安装项目所需的 Python 依赖包。flask
: Web 框架。requests
: HTTP 请求库。pymongo
和bson
: MongoDB 驱动。python-dotenv
: 用于加载环境变量。datetime
: 日期时间处理库。jsonify
: 用于将数据格式化为 JSON。gunicorn
: WSGI HTTP 服务器。
-
启动应用 (
gunicorn
):gunicorn --bind 0.0.0.0:5000 app:app
: 使用 Gunicorn 启动 Flask 应用,绑定到所有网络接口的 5000 端口。--bind 0.0.0.0:5000
: 绑定到所有网络接口的 5000 端口。app:app
: 指定要运行的 Flask 应用,其中第一个app
是模块名,第二个app
是 Flask 实例名。
这个脚本的主要作用是将项目从 Git 仓库克隆到本地,安装所需的依赖,并使用 Gunicorn 启动 Flask 应用。
2-单独CentOS部署Flask服务
在 CentOS 上部署一个基于 Python 的 Flask 服务,通常需要以下几个步骤:
1. 安装必要的依赖
首先,确保你的 CentOS 系统已经安装了 Python 和 pip。如果没有安装,可以通过以下命令安装:
sudo yum install -y python3 python3-pip
2. 创建 Flask 项目
在服务器上创建一个新的目录来存放你的 Flask 项目。
mkdir ~/myflaskapp
cd ~/myflaskapp
在 myflaskapp
目录下创建一个简单的 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)
3. 安装 Flask
安装 Flask 及其依赖项。确保你在项目目录中运行以下命令:
pip3 install Flask
4. 使用 Gunicorn 作为 WSGI 服务器
Flask 自带的服务器适合开发环境,但不适合生产环境。我们可以使用 Gunicorn 作为生产环境的 WSGI 服务器。
安装 Gunicorn:
pip3 install gunicorn
然后,使用 Gunicorn 运行 Flask 应用:
gunicorn --bind 0.0.0.0:5000 app:app
5. 设置 systemctl 服务
为了方便管理,可以将 Flask 服务设置为系统服务。
- 创建一个服务文件:
sudo vi /etc/systemd/system/myflaskapp.service
- 添加以下内容到
myflaskapp.service
文件中:
[Unit]
Description=Gunicorn instance to serve my flask app
After=network.target
[Service]
User=your_username
Group=your_groupname
WorkingDirectory=/home/your_username/myflaskapp
ExecStart=/usr/local/bin/gunicorn --workers 3 --bind unix:myflaskapp.sock -m 007 app:app
[Install]
WantedBy=multi-user.target
请将 your_username
和 your_groupname
替换为你的实际用户名和组名。
- 启动并启用服务:
sudo systemctl start myflaskapp
sudo systemctl enable myflaskapp
- 检查服务状态:
sudo systemctl status myflaskapp
6. 使用 Nginx 作为反向代理
为了更好地处理 HTTP 请求和提供静态文件服务,建议使用 Nginx 作为反向代理。
- 安装 Nginx:
sudo yum install -y nginx
- 配置 Nginx:
编辑 Nginx 配置文件 /etc/nginx/nginx.conf
或创建一个新的配置文件,例如 /etc/nginx/conf.d/myflaskapp.conf
:
server {
listen 80;
server_name your_domain_or_ip;
location / {
include proxy_params;
proxy_pass http://unix:/home/your_username/myflaskapp/myflaskapp.sock;
}
}
请将 your_domain_or_ip
替换为你的域名或 IP 地址,并将 your_username
替换为你的实际用户名。
- 启动 Nginx 并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
7. 验证部署
现在,你可以通过浏览器访问你的服务器 IP 或域名,看到 “Hello, World!” 的消息,表明 Flask 服务已经成功部署。
8. 其他注意事项
- 确保防火墙允许 80 端口的流量,如果使用的是 SELinux,确保其配置允许 Nginx 访问 Unix 套接字。
- 定期更新依赖和系统,以确保安全性。
通过以上步骤,你就可以在 CentOS 上成功部署一个 Python Flask 服务。