ubuntu

如何在Ubuntu上部署Python Web应用

小樊
39
2025-04-19 17:55:22
栏目: 编程语言

在Ubuntu上部署Python Web应用可以通过多种方式实现,以下是一些常见的方法:

方法一:使用Gunicorn和Nginx

  1. 安装必要的软件包

    sudo apt update
    sudo apt install python3-pip nginx
    
  2. 创建虚拟环境并安装依赖

    sudo apt install python3-venv
    mkdir myproject
    cd myproject
    python3 -m venv venv
    source venv/bin/activate
    pip install flask gunicorn
    
  3. 编写你的Flask应用 创建一个简单的Flask应用,例如app.py

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def hello():
        return "Hello, World!"
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=8000)
    
  4. 配置Gunicorn 创建一个Gunicorn启动脚本,例如gunicorn_start.sh

    #!/bin/bash
    NAME="myproject"
    DJANGODIR=/path/to/myproject
    SOCKFILE=/path/to/myproject/gunicorn.sock
    USER=myuser
    GROUP=myuser
    NUM_WORKERS=3
    DJANGO_SETTINGS_MODULE=myproject.settings
    DJANGO_WSGI_MODULE=myproject.wsgi
    
    echo "Starting $NAME as `whoami`"
    
    cd $DJANGODIR
    source ../venv/bin/activate
    export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
    export PYTHONPATH=$DJANGODIR:$PYTHONPATH
    
    RUNDIR=$(dirname $SOCKFILE)
    test -d $RUNDIR || mkdir -p $RUNDIR
    
    exec ../venv/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
      --name $NAME \
      --workers $NUM_WORKERS \
      --user=$USER --group=$GROUP \
      --bind=unix:$SOCKFILE \
      --log-level=debug \
      --access-logfile=-
    
  5. 配置Nginx 创建一个Nginx配置文件,例如/etc/nginx/sites-available/myproject

    server {
        listen 80;
        server_name your_domain_or_ip;
    
        location = /favicon.ico { access_log off; log_not_found off; }
        location /static/ {
            root /path/to/myproject;
        }
    
        location / {
            include proxy_params;
            proxy_pass http://unix:/path/to/myproject/gunicorn.sock;
        }
    }
    

    启用配置:

    sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
    sudo nginx -t
    sudo systemctl restart nginx
    
  6. 启动Gunicorn

    chmod +x gunicorn_start.sh
    ./gunicorn_start.sh
    

方法二:使用Docker

  1. 安装Docker

    sudo apt install docker.io
    sudo systemctl start docker
    sudo systemctl enable docker
    
  2. 创建Dockerfile 在你的项目目录中创建一个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", "myproject.wsgi:application"]
    
  3. 构建Docker镜像

    sudo docker build -t myproject .
    
  4. 运行Docker容器

    sudo docker run -d -p 8000:8000 --name myproject_container myproject
    

方法三:使用Uvicorn和Hypercorn(ASGI服务器)

如果你使用的是ASGI框架(如Starlette或FastAPI),可以使用Uvicorn或Hypercorn。

  1. 安装必要的软件包

    sudo apt update
    sudo apt install python3-pip uvicorn hypercorn
    
  2. 创建虚拟环境并安装依赖

    sudo apt install python3-venv
    mkdir myproject
    cd myproject
    python3 -m venv venv
    source venv/bin/activate
    pip install fastapi uvicorn
    
  3. 编写你的FastAPI应用 创建一个简单的FastAPI应用,例如main.py

    from fastapi import FastAPI
    app = FastAPI()
    
    @app.get("/")
    async def read_root():
        return {"Hello": "World"}
    
  4. 运行应用

    uvicorn main:app --host 0.0.0.0 --port 8000
    

通过以上方法,你可以在Ubuntu上成功部署Python Web应用。选择哪种方法取决于你的具体需求和偏好。

0
看了该问题的人还看了