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.配置完后没有写分号,或者少大括号
    
  • 相关阅读:
    Spring MVC 学习总结(五)——校验与文件上传
    Spring MVC 学习总结(四)——视图与综合示例
    Spring学习总结(二)——静态代理、JDK与CGLIB动态代理、AOP+IoC
    Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解
    Spring学习总结(六)——Spring整合MyBatis完整示例
    Spring MVC 学习总结(一)——MVC概要与环境配置(IDea与Eclipse示例)
    Spring集成MyBatis完整示例
    Spring学习总结(五)——Spring整合MyBatis(Maven+MySQL)二
    Spring学习总结(五)——Spring整合MyBatis(Maven+MySQL)一
    Android自动连接指定的wifi,免密码或指定密码
  • 原文地址:https://www.cnblogs.com/mapel1594184/p/14116271.html
Copyright © 2011-2022 走看看