欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx+uwsgi+Django+Vue在CentOS7上的项目部署流程

程序员文章站 2022-06-25 12:08:27
...

1、Django工程文件

(1)将开发好的Django后端工程文件发送到远程服务器,可以借助工具,也可以使用scp命令

以下使用"mydjango"代表Django工程文件

scp django工程路径 用户@远程服务器IP:拷贝路径
例:
scp /home/admin/project/mydjango aaa@qq.com:/home/admin/project/mydjango

(2)修改Django配置信息

如:setting.py中的DEBUG改为False、使用了MySQL等需要配合当前远程服务器的一些配置信息

(3)使用python manage.py runserver命令测试

友情链接:可能出现的问题及其解决方法

2、Vue工程文件

使用 npm run build 命令进行打包,将dist目录发送到远程服务器

3、安装Nginx

友情链接:详细安装过程、可能出现的问题及其解决方法

4、安装uwsgi

友情链接:详细安装过程、可能出现的问题及其解决方法

5、编辑uwsgi.ini配置文件

manage.py目录下新建一个 .ini 文件,这里命名为uwsgi.ini。列举几个比较重要的,有其他需要另行Google

# 必须有这个[uwsgi],不然会报错
[uwsgi]

# 这个端口很重要,一会配置Nginx会用
socket = 0.0.0.0:8080

# django项目路径
chdir = /home/admin/project/mydjango

# django项目的wsgi文件
module = mydjango.wsgi

# 开启主进程
master = true

# 最大进程数量
processes = 4

#当服务器退出的时候自动删除unix socket文件和pid文件
vacuum = true

# 输出日志,有报错时可查看
daemonize = uwsgi.log

# 项目虚拟环境路径
virtualenv	= /root/.virtualenvs/django2
  • 如何找到虚拟环境的路径?
    在虚拟环境下,使用which python命令,复制到虚拟环境名称即可
    Nginx+uwsgi+Django+Vue在CentOS7上的项目部署流程

6、执行uwsgi.ini文件,启动Django项目

建议使用指定文件名的方式启动,得到以下界面

uwsgi --ini uwsgi.ini

Nginx+uwsgi+Django+Vue在CentOS7上的项目部署流程

  • 如果配置了daemonize = uwsgi.log日志的话,就会只显示下面一句,其余均在日志中记录
  • Nginx+uwsgi+Django+Vue在CentOS7上的项目部署流程
  • ps查看以下uwsgi进程
    Nginx+uwsgi+Django+Vue在CentOS7上的项目部署流程

7、配置Nginx

  • 进入 /etc/nginx 目录
    Nginx+uwsgi+Django+Vue在CentOS7上的项目部署流程
    在该目录下的 nginx.conf 配置文件中有一句 include /etc/nginx/conf.d/*.conf;,所以我们可以在 conf.d 目录下单独编辑项目需要的配置信息
  • 进入 conf.d 目录,创建一个 .conf文件,这里命名为 myproject.conf
    编辑以下信息(不要少分号):
server {
	# 监听8080端口,访问项目时,使用服务器IP:此端口
    listen 8000;
    # vue打包的dist路径
    root /home/admin/project/dist;
    index index.html;
    try_files $uri $uri/  /index.html;
    
    # 转发到Django后端的路径
    # 这里需要设置Django的路由规则为:ip:port/api/xxxxxxxx
    # 当然前端vue向后端发送的请求路径也要配合此规则
    # 可以在全局路由,即与wsgi.py同目录下的urls.py中配置
    # 例:path('api/', include('users.urls'))
    location /api {
        include /etc/nginx/uwsgi_params;
        # 在uwsgi.ini文件中配置的socket绑定的端口
        uwsgi_pass 0.0.0.0:8080;
    }
}
  • 编辑完成后保存退出,使用以下命令测试Nginx配置以及重启Nginx服务
# 测试
nginx -t
# 重新载入
nginx -s reload

测试应该出现 successful 提示,如有错误,按提示修改
Nginx+uwsgi+Django+Vue在CentOS7上的项目部署流程

8、访问项目

在本地浏览器中输入远程服务器IP和Nginx配置中listen的端口号即可

9、Nginx出现403 Forbidden

Nginx+uwsgi+Django+Vue在CentOS7上的项目部署流程

  • 查看Nginx日志
cat /var/log/nginx/error.log

应该就能看到 failed (13: Permission denied) ,权限问题。问题出在Nginx的启动用户和工作用户要保持一致

  • 使用下面的命令查看Nginx的启动用户
ps aux | grep "nginx: worker process" | awk '{print $1}'

Nginx+uwsgi+Django+Vue在CentOS7上的项目部署流程

  • 编辑Nginx的配置文件
vim /etc/nginx/nginx.conf

将第5行的user从nginx改为通过命令查到的用户
Nginx+uwsgi+Django+Vue在CentOS7上的项目部署流程
Nginx+uwsgi+Django+Vue在CentOS7上的项目部署流程

  • 再次访问IP:端口,即可访问项目

10、部署完成