Django + Vue 使用Nginx + uWsgi部署(前后端分离)

摘要:
因为在uwsgi初始化操作之后。但是,旧的pid编号存储在这个uwsgi.pid#中,请删除uwsgi.pid,然后再次执行uwsgi-iniuwsgi.ini。

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.配置完后没有写分号,或者少大括号

免责声明:文章转载自《Django + Vue 使用Nginx + uWsgi部署(前后端分离)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用360浏览器登录B站的时候,不显示搜索框helm3自定义chart编写下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

03-openldap服务端安装配置

openldap服务端安装配置 阅读目录 基础环境准备 安装openldap服务端 初始化openldap配置 启动OpenLDAP 重新生成配置文件信息 规划OpenLDAP目录树组织架构 使用GUI客户端登录查看 openldap配置日志 通过migrationtools实现用户及用户组的添加 OpenLDAP控制策略 1. 基础环境准备 1.1...

h5页面跳转小程序

2020年以前, 只能通过 web-view内嵌h5跳转小程序,现在  可以直接跳了!!!!!!  官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html 用的是JS-SDK的接口,需要使用到js-sdk-1.6.0的版本才有支持,htt...

Kafka日志存储

1.文件目录布局 Kafka消息以日志文件的形式存储,不同主题下不同分区的消息分开存储,同一个分区的不同副本分布在不同的broker上存储 逻辑上看来日志是以副本为单位的,每个副本对应一个log对象,实际在物理上,一个log划分为多个logSegment 创建一个topic为3个分区,会在log.dirs路径下创建三个文件夹,代表3个分区,命名规则为“to...

MYSQL general_log日志

一、功能 开启general_log,会将所有到达Mysql Server的SQL语句记录。 一般不会开启开功能,因为log的量会非常庞大。 但个别情况下可能会临时的开一会儿general log以供排障使用。 例如: 不清楚程序执行了哪些sql语句,但是又要排除错误,找不到原因。可以短暂的开启general log日志。 二、开启 mysql5.0版本,...

MySQL查询截取分析

一、查询优化 1,mysql的调优大纲 慢查询的开启并捕获 explain+慢SQL分析 show profile查询SQL在Mysql服务器里面的执行细节和生命周期情况 SQL数据库服务器的参数调优 2,小表驱动大表 mysql的join实现原理是,以驱动表的数据为基础,“嵌套循环”去被驱动表匹配记录。驱动表的索引会失效,而被驱动表的索引有效。 #假...

二进制日志备份与恢复,快照备份,复制

二进制日志备份与恢复 二进制日志非常关键,我们可以通过它来完成point-in-time的恢复工作。MySQL数据库的复制同样需要二进制日志。默认情况下并不启用二进制日志,要使用二进制日志,首先必须启用它,在配置文件中进行如下设置: [mysqld] log-bin 对于InnoDB存储引擎只是简单启用二进制日志是不够的,还需要启用一些其他参数来保证安全和...