zoukankan      html  css  js  c++  java
  • 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
      
  • 相关阅读:
    Linux进阶之正则,shell三剑客(grep,awk,sed),cut,sort,uniq
    生成下拉列表
    获取服务器时间
    Web窗体(WebForm)
    Session
    Cookie
    Server属性
    Response缓冲区
    小案例
    Web窗体(WebForm)的删除和修改
  • 原文地址:https://www.cnblogs.com/cp9648/p/10488909.html
Copyright © 2011-2022 走看看