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
    

转载于:https://www.cnblogs.com/cp9648/p/10488909.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值