CentOS Python项目怎么部署
CentOS Python项目部署完整流程
1. 准备基础环境
首先确保系统已安装Python 3和pip(Python包管理工具),这是部署的基础:
sudo yum install -y python3 python3-pip
验证安装结果:
python3 --version # 查看Python版本(建议3.6+)
pip3 --version # 查看pip版本
若未安装python3-venv
(Python 3虚拟环境工具),需额外安装:
sudo yum install -y python3-venv
2. 创建并激活虚拟环境
虚拟环境可隔离项目依赖,避免全局环境污染:
# 进入项目目录
mkdir my_python_project &
&
cd my_python_project
# 创建虚拟环境(Python 3自带venv模块)
python3 -m venv venv
# 激活虚拟环境(激活后命令行前会显示(venv))
source venv/bin/activate
激活后,后续所有pip安装的包都会存放在venv
目录中。
3. 安装项目依赖
将项目依赖列表(requirements.txt
)复制到项目目录,通过pip安装所有依赖:
# 生成requirements.txt(若已有则跳过)
pip freeze >
requirements.txt
# 安装依赖(从requirements.txt读取)
pip install -r requirements.txt
requirements.txt
示例(包含常见Python包及版本):
Flask==2.3.3
gunicorn==21.2.0
requests==2.31.0
4. 配置应用启动方式
根据项目类型选择合适的启动工具(以Flask为例):
-
直接运行(仅测试用):
python app.py # 替换为你的主程序文件(如main.py、app.py)
默认监听
127.0.0.1:5000
,仅本地可访问。 -
使用Gunicorn(生产推荐):
Gunicorn是Python WSGI HTTP服务器,性能优于直接运行:pip install gunicorn # 若未在requirements.txt中 gunicorn -w 4 -b 127.0.0.1:8000 app:app # -w指定工作进程数,-b指定绑定地址
其中
app:app
表示app.py
文件中的app
对象(Flask应用实例)。
5. 配置Systemd服务(可选但推荐)
让应用随系统启动,并在崩溃后自动重启:
# 创建服务文件
sudo vim /etc/systemd/system/my_python_app.service
写入以下内容(根据实际情况修改路径和用户):
[Unit]
Description=My Python Application
After=network.target
[Service]
User=your_username # 替换为你的系统用户名(如centos)
Group=your_group # 替换为用户组(如centos)
WorkingDirectory=/path/to/my_python_project # 项目绝对路径
ExecStart=/path/to/my_python_project/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
Restart=always # 崩溃后自动重启
[Install]
WantedBy=multi-user.target
保存后执行以下命令启用并启动服务:
sudo systemctl daemon-reload # 重新加载systemd配置
sudo systemctl start my_python_app # 启动服务
sudo systemctl enable my_python_app # 设置开机自启
查看服务状态:
sudo systemctl status my_python_app
6. 配置防火墙
允许外部访问应用端口(如8000),若使用Nginx反向代理则只需放行80/443端口:
# 开放8000端口(TCP)
sudo firewall-cmd --permanent --add-port=8000/tcp
sudo firewall-cmd --reload # 重新加载防火墙规则
验证端口是否开放:
sudo firewall-cmd --list-ports
7. 配置反向代理(可选但推荐)
使用Nginx作为反向代理,提升安全性(隐藏应用端口)、支持HTTPS和负载均衡:
# 安装Nginx
sudo yum install -y nginx
# 启动Nginx并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
编辑Nginx配置文件(如/etc/nginx/conf.d/my_python_app.conf
):
server {
listen 80;
server_name your_domain.com;
# 替换为你的域名或IP
location / {
proxy_pass http://127.0.0.1:8000;
# 转发到Gunicorn监听的地址
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 # 测试配置是否正确
sudo systemctl reload nginx # 重载Nginx
此时可通过http://your_domain.com
访问应用。
8. 验证部署
- 通过浏览器访问
http://your_domain.com
(或服务器IP),查看应用是否正常响应。 - 查看应用日志(排查问题):
sudo journalctl -u my_python_app -f # 查看Systemd服务日志 tail -f /path/to/my_python_project/logs/app.log # 若应用有自己的日志文件
可选优化:使用Docker部署
若需要更便捷的环境隔离和扩展性,可使用Docker:
- 在项目根目录创建
Dockerfile
:FROM python:3.9-slim WORKDIR /app COPY . . RUN pip install --no-cache-dir -r requirements.txt EXPOSE 8000 CMD ["gunicorn", "-w 4", "-b 0.0.0.0:8000", "app:app"]
- 构建镜像:
docker build -t my_python_app .
- 运行容器:
docker run -d -p 8000:8000 --name my_app_container my_python_app
- 配置Nginx反向代理指向
127.0.0.1:8000
(同上)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Python项目怎么部署
本文地址: https://pptw.com/jishu/730033.html