zoukankan      html  css  js  c++  java
  • Django + Vue 使用Nginx + uWsgi部署(前后端分离)

    1 Django端

    1.1 settings.py中更改

    STATIC_ROOT = os.path.join(BASE_DIR, 'static/dist')
    # 导入前后端静态资源后更改即可
    
    DEBUG = True
    
    ALLOWED_HOSTS = ['*']
    

    1.2 django端打包静态资源

    python manage.py collectstatic
    

    1.3 在uwsgi_conf中写入uwsgi.ini

    # vim /root/shiyanlou_project/uwsgi_conf/uwsgi.ini
    # vim中,A键进入插入模式,ESC退出,:wq保存并退出
    # 或者pycharm中直接粘贴也可以
    [uwsgi]
    # 使用Nginx连接时使用,Django程序所在服务器地址和端口号
    socket=127.0.0.1:8000
    # 项目目录绝对路径
    chdir=/home/worker/opwf_project/opwf
    # 项目中wsgi.py文件的目录,相对于项目目录
    wsgi-file=opwf/wsgi.py
    # 进程数(机器核数的1倍)
    processes=4
    # 线程数
    threads=20
    # uwsgi服务器的角色
    master=True
    # 存放进程编号的文件
    pidfile=uwsgi.pid
    # 日志文件
    daemonize=uwsgi.log
    # 指定依赖的虚拟环境
    virtualenv=/root/.virtualenvs/syl
    

    2 打包Vue静态资源

    2.1 打包命令

    cnpm run build
    

    2.2 提取dist静态资源

    • 将静态资源放置后端static下

    3 Nginx写入配置文件

    • 写入etc/nginx/conf.d/django.conf
    server {
            listen 1594;
            server_name 192.168.56.100;
                    location /static {
                            alias /home/worker/opwf_project/opwf/static;
                    }
    
                    location / {
                            include uwsgi_params;
                            uwsgi_pass 127.0.0.1:8000;
                            uwsgi_ignore_client_abort on;
                    }
    }
    
    server {
            listen 8888;
            server_name 192.168.56.100;
            #access_log logs/access_example.log  main;
            root /home/worker/opwf_project/opwf/static/dist;
            location / {
                    try_files $uri $uri/ @router;
            }
            location @router {
                    rewrite ^.*$ /index.html last;
            }
    }
    

    4 Nginx启动

    systemctl restart nginx 				# 开启nginx 
    tail -f /var/log/nginx/access.log 		# 查看nginx接入日志 
    tail -f /var/log/nginx/error.log 		# 查看nginx错误日志 
    

    5 uWSGI启动

    cd /home/worker/opwf_project/uwsgi_conf 
    # 进入项目目录 
    
    uwsgi --ini uwsgi.ini 
    # 启动uwsgi的 django项目 
    # http://192.168.56.11:8888/ 访问项目 
    
    uwsgi --stop uwsgi.pid 
    # 关闭uwsgi
    
    tail -f uwsgi.log 
    # 查看uwsgi日志
    
    ps -ef|grep uwsgi 
    # 查看uwsgi服务是否启动
    
    netstat -anptu | grep 8888 		
    # 查看8888端口被哪一个程序 占用
    
    kill -9 端口号
    

    6.uwsgi报错处理

    6.1 问题报错

    realpath() of uwsgi.ps failed: No such file or directory [core/utils.c line 3654]
    

    6.2 解决问题

    # 原因:
    当前目录下有一个uwsgi.pid。因为执行了uwsgi的初始化操作之后。pid号是变更的。但是这个uwsgi.pid中存储的还是旧有的pid号。所以报错。
    # 解决
    删除uwsgi.pid,然后重新执行uwsgi --ini uwsgi.ini。然后会重新生成一个uwsgi.pid。这时候在查看uwsgi进程,就正常了
    

    7.nginx

    7.1 问题报错

    Job for nginx.service failed because the control process exited with error code. See "systemctl stat
    

    7.2 解决问题

    # 1.配置完后没有写分号,或者少大括号
    
  • 相关阅读:
    洛谷—— P2234 [HNOI2002]营业额统计
    BZOJ——3555: [Ctsc2014]企鹅QQ
    CodeVs——T 4919 线段树练习4
    python(35)- 异常处理
    August 29th 2016 Week 36th Monday
    August 28th 2016 Week 36th Sunday
    August 27th 2016 Week 35th Saturday
    August 26th 2016 Week 35th Friday
    August 25th 2016 Week 35th Thursday
    August 24th 2016 Week 35th Wednesday
  • 原文地址:https://www.cnblogs.com/mapel1594184/p/14116271.html
Copyright © 2011-2022 走看看