zoukankan      html  css  js  c++  java
  • 项目发布须知

    1,项目发布更换不同的服务器,解决依赖关系的问题

    • pip3 frezz > requirements.py
    • pip3 install -r requirements.py

    2,准备python环境,准备虚拟环境,.激活虚拟环境

    • mkvirtualenv xuexue
      • 检测是否虚拟环境正常
      • which pip3
      • which python3

    3,在虚拟环境中安装django模块(此时的操作都是在xuexue这个虚拟环境中)

    • pip3 install django==1.11.11

    4,安装pymysql连接mysql的数据库

    • pip3 install pymysql

    5,安装django的一个django-multiselectfield

    • pip3 install django-multiselectfield

    6,解决数据库连接问题,修改项目中settings.py文件

    1. 启动linux的数据库,创建对应的数据库,密码设置等等
      • create database nb_crm
    2. 更改settings.py文件的相关设置
      • DATABASES= {'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'nb_crm', #数据库名
            'HOST': '127.0.0.1',  #这里服务器的ip地址
            'PORT': 3306, #端口
            'USER': 'root', #用户名 
            'PASSWORD': 'redhat123',   #用户密码
           }}
    3. 更改允许主机 
      • ALLOWED_HOSTS=["*"]
    4. 线上关闭debug=False, 但是有时候debug=True

    7,使用uwsgi启动django,安装uwsgi

    • pip3 install -i https://pypi.douban.com/simple uwsgi

    8,通过uwsgi命令启动python应用(只做测试用)

    • uwsgi --http 0.0.0.0:8888 --wsgi-file test1.py
      • --http 指明你是http协议
      • --socket启动一个socket链接
      • wsgi-file 指明一个python应用文件

    9,通过uwsgi启动django项目(问题是,uwsgi不处理static静态文件的配置)

    • uwsgi --http :8888 --module NB_crm.wsgi

    10,uwsgi可以通过热加载项目

    • uwsgi --http :9999 --module mycrm.wsgi --py-autoreload=1
      • --py-autoreload是告诉uwsgi自动重启加载django项目

    11,通过uwsgi的配置文件启动项目

    1. 手动创建uwsgi.ini文件
      • touch uwsgi.ini
    2. 写入作用域配置
      • [uwsgi]
        • # 项目的绝对路径,定位到项目的第一层
        • chdir = /opt/NB_crm
        • # 指明项目的wsgi文件路径
        • module = NB_crm.wsgi
        • # 指明虚拟解释器的第一层路径
        • home = /root/#/Envs/env2
        • # 指明通过uwsgi,启动多少个进程
        • processes = 1
        • # 如果配置了nginx(启动了nginx服务,配置uwsgi_pass),用这个socket连接
        • socket = 0.0.0.0:8000
        • # 如果没用nginx,可以通过uwsgi直接启动web服务,指明http协议
        • http = 0.0.0.0:9999
        • # 在退出uwsgi 环境后,清空环境变量
        • vacuum = true

    12,通过配置文件启动NB_crm(注意到uwsgi不会处理静态文件)

    • uwsgi --ini uwsgi.ini

    13,配置django的settings.py,收集所有NB_crm项目锁需的静态文件

    1. # 通过命令,收集整个项目所有的静态文件,放入到/opt/static
      • STATIC_ROOT="/opt/static/"
    2. 执行命令
      • python3 manage.py clooectstatic
    3. 此时的NB_crm的所有的静态文件,都跑到/opt/static下边了

    14,配置nginx

    1. 配置一个网站的入口,当用户访问192.168.12.96:80这个web应用时,自动将请求转发给uwsgi,uwsgi处理后,返回给nginx,返回给用户,当请求是192.168.12.96:80的时候,其实访问的是192.16812.96:9999,这是动态请求,因为找到的是uwsgi
    2. 通过nginx处理静态文件
    3. nginx..conf配置如下:# 定义负载均衡池,里面放入uwsgi的地址
    4. upstream nbcrm {
           server 127.0.0.1: 8000;
           server {
                 listen 80;
                 server_name    www.xuexue.com;
                 # 将nginx入口的请求,直接反向代理uwsgi
                  location / {
                         uwsgi_pass   nbcrm;
                         include /opt/nginx1-12/conf/uwsgi_params;
      
                         #通过nginx出路nbcrm的静态文件
                          location /static {
                                   alias /opt/static/;
      }
      }
      }    
      
      }
          

    15,更改uwsgi.ini,指明socket连接,结合uwsgi和nginx

    • 如果已经配置了nginx,请用socket连接
    • socket = 0.0.0.0:8000

    16,启动uwsgi.ini

    • uwsgi --ini uwsgi.ini
    • 启动nginx
    • ./nginx

    17,配置supversior ,管理uwsgi进程(这里得先退出虚拟环境,安装supvervisor)

    1. 安装easy_install,python2的软件包管理工具,如果有了可以忽略
      • yum install python-setuptools
    2. 安装软件
      • easy_install supervisor
    3. 使用supervison命令,常用命令如下:
      • echo_supervisord_conf > /etc/supervisord.conf
    4. 修改配置文件,添加任务,按照自己的机器环境修改此命令
      • [program:xuexue]   # 作用域
      • #  添加命令变量启动命令就而胡思这个
      • command = /root/#/Envs/nbcrm/bin/uwsgi --ini/opt/NB_crm/uwsgi.ini
      • # 自动启动uwsgi,挂了之后自动加载
      • autorestart=true
    5. 启动supvervisord服务,启动uwsgi,服务端命令,用于启动这个服务
      • supervisord -c /etc/supervisord.conf
    6. 通过命令管理uwsgi
      • uwsgi直接回车,进入交互式管理模式
    7. 也可以通过命令交互式的管理uwsgi
      • supervisorctl start xuexuecrm
      • supervisorctl stop xuexuecrm
      • supervisorctl status xuexuecrm

     

  • 相关阅读:
    react学习总结(一)
    jQuery的attr()与prop()的区别
    Vue.js学习(常用指令)
    Node.js学习(篇章一)
    CSS3关于-webkit-tap-highlight-color属性
    position布局影响点击事件以及冒泡获取事件目标
    取消事件默认行为(移动端)
    rem与px之间的换算(移动端)
    Node.js(初识)
    ES6(变量的解构赋值)
  • 原文地址:https://www.cnblogs.com/ljc-0923/p/10265323.html
Copyright © 2011-2022 走看看