CentOS Python项目部署流程是怎样的
导读:CentOS Python项目部署流程 1. 准备基础环境 安装Python与pip:CentOS 7及以上默认安装Python 2.7,需安装Python 3及pip工具。sudo yum install -y python3 pyth...
CentOS Python项目部署流程
1. 准备基础环境
- 安装Python与pip:CentOS 7及以上默认安装Python 2.7,需安装Python 3及pip工具。
sudo yum install -y python3 python3-pip
- 验证安装:
python3 --version # 确认Python版本(建议3.6+) pip3 --version # 确认pip版本
2. 配置项目目录与虚拟环境
- 创建项目目录:
mkdir -p /opt/python_project & & cd /opt/python_project
- 创建并激活虚拟环境(隔离项目依赖,避免冲突):
python3 -m venv venv # 创建虚拟环境 source venv/bin/activate # 激活虚拟环境(激活后命令行前缀为“(venv)”)
3. 部署项目代码
- 上传代码:通过
scp
、rsync
或Git将本地项目代码上传至服务器项目目录(如/opt/python_project
)。scp -r local_project/* user@server_ip:/opt/python_project/
- 安装项目依赖:项目根目录需包含
requirements.txt
(依赖清单),通过pip安装所有依赖。pip install -r requirements.txt
4. 配置WSGI服务器(连接应用与Web服务器)
- 安装Gunicorn/uWSGI(以Gunicorn为例,轻量易用):
pip install gunicorn
- 启动WSGI服务:
- 若项目为Flask,需指定应用入口(如
app.py
中的app
对象):gunicorn -w 4 -b 127.0.0.1:8000 app:app
- 若项目为Django,需指定
wsgi.py
文件路径:gunicorn -w 4 -b 127.0.0.1:8000 myproject.wsgi:application
- 参数说明:
-w 4
(4个工作进程)、-b 127.0.0.1:8000
(绑定本地8000端口,仅内部访问)。
- 若项目为Flask,需指定应用入口(如
5. 配置反向代理(Nginx,提升性能与安全性)
- 安装Nginx:
sudo yum install -y nginx sudo systemctl start nginx sudo systemctl enable nginx
- 配置Nginx:编辑
/etc/nginx/conf.d/python_project.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; } location /static/ { # 静态文件由Nginx直接处理 alias /opt/python_project/static/; expires 30d; } }
- 验证配置并重启Nginx:
sudo nginx -t # 测试配置语法 sudo systemctl restart nginx
6. 配置Systemd服务(实现开机自启)
- 创建Systemd服务文件:编辑
/etc/systemd/system/python_project.service
,内容如下:[Unit] Description=Python Project Service After=network.target [Service] User=your_user # 替换为运行项目的用户(如ubuntu、centos) Group=your_group # 替换为用户组 WorkingDirectory=/opt/python_project ExecStart=/opt/python_project/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app Restart=always # 崩溃后自动重启 Environment="PYTHONUNBUFFERED=1" # 避免Python输出缓冲 [Install] WantedBy=multi-user.target
- 启动并启用服务:
sudo systemctl daemon-reload sudo systemctl start python_project sudo systemctl enable python_project # 开机自启
- 查看服务状态:
sudo systemctl status python_project
7. 配置防火墙(允许外部访问)
- 开放HTTP端口(80):
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload
- 若使用HTTPS(推荐):需申请SSL证书(如Let’s Encrypt),并通过Nginx配置HTTPS监听443端口。
8. 验证部署
- 访问项目:在浏览器输入服务器IP或域名,确认项目页面正常显示。
- 查看日志:若出现问题,通过以下命令查看日志定位原因:
sudo journalctl -u python_project -f # 查看Systemd服务日志 tail -f /opt/python_project/venv/log/gunicorn.log # 查看Gunicorn日志(若有)
可选优化步骤
- 静态文件收集:若使用Django,运行
python manage.py collectstatic
将静态文件收集至STATIC_ROOT
目录。 - HTTPS配置:使用Certbot为Nginx配置免费SSL证书,提升安全性。
- 性能优化:调整Gunicorn的
workers
(工作进程数,通常为CPU核心数×2+1)和threads
(线程数)参数。 - 容器化部署:使用Docker将项目打包为镜像,通过Docker Compose管理多容器(如Nginx+Python),提升部署一致性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Python项目部署流程是怎样的
本文地址: https://pptw.com/jishu/721012.html