在CentOS中部署Python应用可以通过多种方式实现,以下是一些常见的方法:
安装必要的软件包
sudo yum install python3 python3-pip nginx
创建虚拟环境并安装应用依赖
sudo mkdir /var/www/myapp
cd /var/www/myapp
sudo python3 -m venv venv
source venv/bin/activate
pip install flask gunicorn
部署应用
假设你的Flask应用文件名为app.py
,并且有一个requirements.txt
文件列出所有依赖。
gunicorn -w 4 -b 127.0.0.1:8000 app:app
配置Nginx
编辑Nginx配置文件(通常位于/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
):
server {
listen 80;
server_name your_domain.com;
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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
重启Nginx
sudo systemctl restart nginx
安装Docker
sudo yum install docker
sudo systemctl start docker
sudo systemctl enable docker
创建Dockerfile
在你的应用目录中创建一个Dockerfile
:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "app:app"]
构建Docker镜像
docker build -t myapp .
运行Docker容器
docker run -d -p 8000:8000 myapp
创建systemd服务文件
创建一个名为myapp.service
的文件:
[Unit]
Description=My Python Application
After=network.target
[Service]
User=your_user
Group=your_group
WorkingDirectory=/var/www/myapp
Environment="PATH=/var/www/myapp/venv/bin"
ExecStart=/var/www/myapp/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
[Install]
WantedBy=multi-user.target
启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable myapp.service
sudo systemctl start myapp.service
选择适合你应用规模和需求的方法进行部署。对于生产环境,通常推荐使用Nginx和Gunicorn的组合,并结合Docker进行容器化部署。