溫馨提示×

如何在Ubuntu上部署Python Web應用

小樊
46
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女