Linux - Django + Nginx + uwsgi 部署项目 - 安装 uWSGI 服务器 -(4)

曾经终败给现在 2024-04-08 13:27 202阅读 0赞

目录

  • Django 项目生产环境配套教程链接
  • 一、安装 uWSGI 服务器及项目间的联动文件
      1. 配置项目根目录下 uwsgi.ini 文件
      1. 运行和关闭 uWSGI 服务器的命令
  • uWSGI 安装参考链接
  • 此项目报错解决方法链接

Django 项目生产环境配套教程链接

Linux - Django + Mysql + Nginx + uwsgi 部署项目 - 安装 nginx 服务器 - (1)

Linux - Django + Nginx + uWSGI 部署项目 - 安装 Python3.x -(2)

Linux - Django + Nginx + uwsgi 部署项目 - rpm 包安装 Mysql 5.x 服务器 - 删除 Mysql 服务器 - 解决创建新数据库的utf8编码问题(3)


一、安装 uWSGI 服务器及项目间的联动文件

安装方法有两种,这里就不阐述麻烦的方法,看此文最后的 uWSGI 服务器安装参考链接。

最简单的方法在于,直接用 pip 安装,当然前提是安装好了 python 解释器。

  1. pip install uwsgi

当然笔者这里是安装完了,就自动是全局配置,所以就可以在 Shell 终端使用 uwsgi 命令

效果如下:
在这里插入图片描述
当然要使用 uWSGI 服务器,还得配置好 django 项目根目录下的 uwsgi.ini 文件,该文件是 uWSGI 服务器的运行对象配置文件,我们可以在里面配置好 Django 项目的工作目录和与 nginx 服务器通信的 方式和 联络的 ip 和端口等等。

当然并非一定要在 django 根目录下,创建 uwsgi.ini 文件,只不过为了项目的整体性考虑,一般与项目有关联的文件自然最好是放在项目的根目录下,方便修改,这里利用 软连接就可以了,前面提到的 nginx.conf 也一样,在项目根目录下创建项目的 项目名.conf 文件并软连接到 nginx 服务器的conf/ 目录下。

1. 配置项目根目录下 uwsgi.ini 文件

在 Django 项目根目录下创建 uwsgi.ini 文件,并输入如下内容:(仅供参考用)

  1. [uwsgi]
  2. uid=Myuser # 当前我的用户名
  3. gid=work # 当前我的用户名所属的用户组
  4. project=MyDjangoProject # 项目名
  5. base=/home/XXX/MyDjangoProject # 项目根目录
  6. #module=%(project).wsgi:application # wsgi文件位置
  7. wsgi-file=/home/XXX/MyDjangoProject/MyDjangoProject/wsgi.py
  8. #home = %(base)/Env/%(project) # 设置项目虚拟环境,Docker部署时不需要
  9. #chdir=%(base)/%(project) # 设置工作目录
  10. #module=%(project).wsgi # wsgi文件位置
  11. #http=0.0.0.0:9566
  12. socket=/home/XXX/MyDjangoProject/MyDjangoProject.sock
  13. pidfile=uwsgi.pid
  14. processes=4
  15. threads=2
  16. # socket权限设置
  17. chmod-socket=664
  18. # 服务停止时,自动移除unix socket和pid文件
  19. vacuum=True
  20. master=True
  21. # 设置自中断时间
  22. harakiri=300
  23. # 设置缓冲
  24. post-buffering=6553600
  25. # 超时
  26. http-timeout=600

注意:uWSGI 服务器和 Nginx 服务器之间有3种通信方式, unix socketTCP sockethttpNginx 服务器的配置必须与 uwsgi.ini 文件的配置保持一致,这样 Nginx 和 uWSGI 服务器才能架起连通的桥梁。

  1. 使用 unix socket 的,必然使用了 后缀名为 .sock 文件
  2. 使用 内部ip:端口 的,是 TCP socket ,如 0.0.0.0:9999 这是使用 TCP socket
  3. 使用 http 的,自然是使用 http= 而不是 socket= ,注意这里的 httpsocket 只能存在一个,用了 socket ,就不能用 http 了,看到上面的 uwsgi.ini 的配置 http 配置,被我注释掉了。

超链接:如何理解sock文件

sock 文件目前尚有问题,即unix socket 连接,先不做介绍!!!
先采用 TCP socketnginx 服务器与 uWSGI 服务器做对接

不过先可以给出创建 sock 文件的命令:

  1. python -c "import socket ; sock = socket.socket(socket.AF_UNIX); sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1);sock.bind('/home/work/www/outsource1.0')"

2. 运行和关闭 uWSGI 服务器的命令

先 cd 到 Django 项目根目录下,然后在 Shell 终端运行如下命令:(启动 uWSGI 服务器,开始监听端口,uwsgi.ini是已经在 Django 项目根目录下存在的,所以在项目根目录下,启动该文件)

  1. uwsgi --ini uwsgi.ini

关闭 uWSGI 监听服务

  1. uwsgi --stop uwsgi.pid

推荐使用快捷键关闭 uWSGI 服务器

  1. Ctrl + c

uWSGI 安装参考链接

uWSGI的安装及配置详解

Python uWSGI 安装配置

此项目报错解决方法链接

Linux 下部署Django项目你可能会遇到的问题!

uwsgi出现No such file or directory [core/uwsgi.c line xxxx]

发表评论

表情:
评论列表 (有 0 条评论,202人围观)

还没有评论,来说两句吧...

相关阅读