Python-Web應用部署步驟


Python-Web應用部署步驟

假設:

  • 操作系統為原生Ubuntu 18.04 LTS
  • 當前登錄用戶為xyz
  • Web程序目錄: /home/xyz/myblog
  • 虛擬環境運行啟動腳本: /home/xyz/runinenv.sh
  • /home/xyz/runinenv.sh內容如下:
    #!/bin/bash
    export SOME_ENV=test-message
    
    VENV=$1
    if [ -z $VENV ]; then
    echo "usage:runinenv [virtualenv_path] CMDS"
    exit 1
    fi
    source ${VENV}/bin/activate
    shift 1
    echo "Executing $@ in ${VENV}"
    exec "$@"
    deactivate
    

  • PS.新服務器需要升級現有軟件包
    # 更新包元信息
    root$ apt-get update
    # 升級現有軟件包
    root$ apt-get upgrade -y
    # 添加用戶
    root$ adduser xyz
    # 將用戶xyz添加到sudo用戶組里面
    root$ usermod -aG sudo xyz
    # 從root用戶切換到普通用戶
    root$ su xyz
    # 從普通用戶切換到root用戶
    xyz$ sudo -s
    
  1. 安裝必須的軟件

    root$ apt-get install git w3m vim htop tree python3-pip virtualenv nginx supervisor -y
    
  2. 創建虛擬環境、安裝包、測試程序

    cd ~
    virtualenv v3web --python=python3
    
    source /home/xyz/v3web/bin/activate
    cd /home/xyz/myblog
    pip install -r requirements.txt
    python run.py
    
    deactivate
    
  3. 使用supervisor管理進程(后台運行)

    cd /etc/supervisor/conf.d/
    vim demo.conf
    

    /etc/supervisor/conf.d/demo.conf內容如下:

    [program:demo]
    user=xyz
    directory=/home/xyz/myblog/
    command=/bin/bash /home/xyz/runinenv.sh /home/xyz/v3web python /home/xyz/myblog/run.py
    autostart=true
    autorestart=true
    startsecs=5
    stopsignal=HUP
    stopasgroup=true
    stopwaitsecs=5
    stdout_logfile_maxbytes=20MB
    stdout_logfile=/var/log/supervisor/%(program_name)s-out.log
    stderr_logfile_maxbytes=20MB
    stderr_logfile=/var/log/supervisor/%(program_name)s-err.log
    

    配置要點:

  4. supervisor管理命令

    # 重新加載配置
    sudo supervisorctl reload
    # 查看進程狀態
    sudo supervisorctl status
    # 停止/啟動/重啟某個進程(此處為demo)
    sudo supervisorctl stop/start/restart demo
    
  5. Linux基礎命令

    # 查看和python相關的tcp連接
    netstat -antp | grep python
    # 查看和python相關的進程
    ps uax | grep python
    # 殺死指定名稱的進程(此處為python)
    sudo pkill python
    
  6. 配置nginx

    cd /etc/nginx/conf.d/
    sudo vim demo.conf
    

    /etc/nginx/conf.d/demo.conf內容如下:

    server {
        listen 80;
        listen [::]:80;
        server_name blog.cp9648.xyz;
    
        location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-NginX-Proxy true;
    
            proxy_pass http://127.0.0.1:5000/;
            # proxy_pass http://10.0.0.10:8999/;
            proxy_redirect off;
        }
        
        location /static/ {
            alias /home/xyz/myblog/static/;
        }
    }
    
  7. nginx管理命令

    # 重啟nginx服務(會重新加載配置文件)
    sudo service nginx restart
    # 啟動、停止服務器
    sudo service nginx start/stop
    
  8. nginx靜態文件403解決方案

    修改django的默認admin路徑

    python manage.py collectstatic
    

    修改nginx配置文件(改完了需要重啟)

    vim /etc/nginx/nginx.conf
    

    將如下的行(nginx運行用戶默認為www-data)

    user www-data;
    

    改為(將nginx運行用戶改為root)

    user root;
    

    一般情況下,也將nginx運行用戶改為當前用戶(此處為xyz

    user xyz;
    

    重啟服務器

    sudo service nginx restart
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM