在Ubuntu中部署Python Web应用可以通过多种方式实现,以下是一些常见的方法:
安装必要的软件包
sudo apt update
sudo apt install python3-pip python3-venv nginx
创建并激活虚拟环境
mkdir myproject
cd myproject
python3 -m venv venv
source venv/bin/activate
安装Flask(或其他Web框架)
pip install flask
创建一个简单的Flask应用
在myproject目录下创建一个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=8000)
安装Gunicorn
pip install gunicorn
使用Gunicorn运行应用
gunicorn -b 0.0.0.0:8000 app:app
配置Nginx 创建一个新的Nginx配置文件:
sudo nano /etc/nginx/sites-available/myproject
添加以下内容:
server {
listen 80;
server_name your_server_ip_or_domain;
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;
}
}
启用配置文件:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx
安装Docker
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
创建Dockerfile
在myproject目录下创建一个Dockerfile:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["gunicorn", "-b", "0.0.0.0:8000", "app:app"]
创建requirements.txt
flask
gunicorn
构建Docker镜像
docker build -t myproject .
运行Docker容器
docker run -d -p 8000:8000 myproject
如果你更喜欢使用异步框架,可以考虑使用Uvicorn或Hypercorn。
安装Uvicorn
pip install uvicorn
使用Uvicorn运行应用
uvicorn app:app --host 0.0.0.0 --port 8000
配置Nginx(与方法一相同)
以上三种方法各有优缺点:
根据你的具体需求选择合适的方法进行部署。