nginx + uwsgi + 项目部署笔记
 
1.单机本地测试运行方式,调用django第三方的wsgifef单机模块,性能很低
python3  manage.py runserver 0.0.0.0:9000
 
2.使用uwsgi 去启动django项目,支持并发更多
 
 
 
3.准备前后端代码
    路径 /opt/s16luffy 下
    07-luffy_project_01   前端代码
    luffy_boy    后端代码
    代码在s16luffy项目里面
    如果还是zip文件要先解压
    解压命令:
    unzip 文件名
 
 
4.先从vue前端搞起
    1.解决node环境
    如果电脑里面没有安装node要先安装(安装在opt目录下)
    2.更改vue发送请求的接口地址,
    这个vue发送的地址,应该是发送给 nginx代理,然后代理再转发请求给 drf后台
    
    用以下命令,更改vue发送的接口地址(把原本的计算机会换地址改成虚拟机地址,全局配置,更改完成后打包给dist文件夹生        效,见下面第三步(打包编译vue静态文件)
    这里更改IP地址是为了后面django后端给前端返回数据时前端能连接上虚拟机地址而不是连接本机回环地址,否则前端vue页      面连接的就是回环地址就算拿到了数据也显示不了正      确的vue页面
    输入命令:
    sed  -i  "s/127.0.0.1/192.168.15.84/g"    /opt/s16luffy/07-luffy_project_01/src/restful/api.js
    
    
    待会要准备nginx的代理地址,如下
    待会要准备nginx的代理地址,如下
    待会要准备nginx的代理地址,如下
    192.168.15.71:8000
    192.168.15.71:8000
    192.168.15.71:8000
    
    
    3.打包编译vue静态文件
        npm install
        npm run build
        
        打包完成后会在/opt/s16luffy/07-luffy_project_01路径下产生一个dist文件夹,如果原本就有dist文件先把原有的dist文            件删除
        #如果你打包不成功
        1.更换4G网络,开始打包
        2.在windows中打包,生成dist文件夹后,发送给linux
        3.在同桌机器上打包,生成dist后,发送给自己
        4.更换淘宝的 npm源,加速下载
    
    4.生成的dist文件夹,就是路飞学成的静态页面,丢给nginx去返回页面即可
    
    
5.配置nginx.conf找到vue的静态页面
    路径   vim /opt/nginx112/conf/nginx.conf
    nginx.conf修改第一个server标签如下
    #第一个虚拟主机
    server {
        listen       80;
        server_name   s16chiji.com;
        #当请求域名是 s16chiji.com的时候就进入这个locaton路径匹配,返回磁盘数据
        location / {
        root /opt/s16luffy/07-luffy_project_01/dist;
        index index.html;
 
        }
       #通过这个参数,定义错误页面的文件  ,当状态码是 404 400 401 时,返回40x.html页面
        error_page  404 401 400 403              /40x.html;
       }
 
    
#第二个虚拟主机
    server {
        listen 8000;
        server_name s16chiji.com;
        location / {
        uwsgi_pass  192.168.15.71:9000;
        include  /opt/nginx112/conf/uwsgi_params;
        }
    }
    
    
    
6.配置后端代码,用uwsgi启动luffy学诚
    创建一个虚拟环境(下面第一行代码,然后在虚拟环境下操作)
    mkvirtualenv  uwsgi_luffycity
    pip3 list
    pip3 install -r requirements.txt
 
    如果没有requirement.txt文件,在opt目录下手动创建一个这个文件
    touch requirements.txt
        给requirements.txt文件添加内容如下
        certifi==2018.11.29
        chardet==3.0.4
        crypto==1.4.1
        Django==2.1.4
        django-redis==4.10.0
        django-rest-framework==0.1.0
        djangorestframework==3.9.0
        idna==2.8
        Naked==0.1.31
        pycrypto==2.6.1
        pytz==2018.7
        PyYAML==3.13
        redis==3.0.1
        requests==2.21.0
        shellescape==3.4.1
        urllib3==1.24.1
        uWSGI==2.0.17.1
 
 
7.准备uwsgi,以及uwsgi.ini
    uwsgi.ini配置参数如下
    路径   vim /opt/s16luffy/luffy_boy/uwsgi.ini
 
    (uwsgi_luffycity) [root@s16ds luffy_boy]# cat uwsgi.ini (参数如下,本行不要复制)
    [uwsgi]
    # Django-related settings
    # the base directory (full path)
    #指定django的项目目录,第一层
    chdir           = /opt/s16luffy/luffy_boy/
    # Django's wsgi file
    #找到django的wsgi文件
    #这里需要写项目的第二层目录Alibab_crm
    module          = luffy_boy.wsgi
    # the virtualenv (full path)
    #填写虚拟环境的绝对路径
    home            =/root/Envs/uwsgi_luffycity
    # process-related settings
    # master
    master          = true
    # maximum number of worker processes
    processes       = 5
    # the socket (use the full path to be safe
    #指定socket协议,运行django,只能与nginx结合时使用
    #指定socket协议,运行django,只能与nginx结合时使用
    #指定socket协议,运行django,只能与nginx结合时使用
    socket          = 0.0.0.0:9000
 
    #如果你没用nginx,只想自己启动一个http界面,用这个
    #http =  0.0.0.0:8000
 
    # ... with appropriate permissions - may be needed
    # chmod-socket    = 664
    # clear environment on exit
    vacuum          = true
 
    
8.更改django后台的redis数据库连接(输入下面路径进入settings.py文件进行修改)
    路径:
    vim /opt/s16luffy/luffy_boy/luffy_boy/settings.py
    1.更改redis连接
                CACHES = {
            "default": {
                "BACKEND": "django_redis.cache.RedisCache",
                "LOCATION": " ",
                "OPTIONS": {
                    "CLIENT_CLASS": "django_redis.client.DefaultClient",
                    "CONNECTION_POOL_KWARGS": {"max_connections": 100},
                    # "PASSWORD": "密码",
                    "DECODE_RESPONSES":True
                }
            },
        }
    
    2.更改redis数据库连接的驱动,用django的驱动
        路径:
        vim /opt/s16luffy/luffy_boy/api/views/shoppingcart.py
    
        修改如下
            import redis
 
            #REDIS_CONN = redis.Redis(decode_responses=True)
            REDIS_CONN = get_redis_connection()
        
    3.启动redis数据库,注意更改redis的安全模式,
        redis-6666.conf配置如下
            (uwsgi_luffycity) [root@s16ds redis-4.0.10]# cat redis-6666.conf
            port 6666
            daemonize yes
            pidfile /data/6666/redis.pid
            loglevel notice
            logfile "/data/6666/redis.log"
            dir /data/6666
            appendonly yes
            appendfsync everysec
            protected-mode no
            bind 192.168.15.84
 
 
    4.虚拟环境下启动redis服务端
    (uwsgi_luffycity) [root@localhost redis-4.0.10]# redis-server redis-6666.conf
    
    虚拟环境下启动后台uwsgi
    (uwsgi_luffycity) [root@localhost luffy_boy]# uwsgi --ini uwsgi.ini
    
    物理环境下启动nginx
    [root@localhost 07-luffy_project_01]# nginx
    
 
9.确保vue和nginx,以及uwsgi都启动了,测试再浏览器访问,是否可以课程添加,alex  alex3714登陆
 
 
 
本章常用命令
重启后端
    uwsgi --ini uwsgi.ini
    
    重启nginx
    nginx -s reload
    
    重启redis
    redis-server redis-6666.conf     # 6666 自己设置的端口号
 
 
 
 
    
    
其他小知识点
virtualenv
virtualevnwrapper
pyenv
 
都是虚拟化出的多个python解释器的分身
 
 
 
    
 
08-29 18:53