Nginx与Uwsgi联用启动Django项目,个人心得总结


一、服务器情况

  1. 百度云服务器
  2. Linux版本:Ubuntu 20.04版本
  3. 所用的环境为root环境。(建议一个项目一个环境,以便应对不同项目包的版本不匹配)

二、环境构建

本地调试Django所用的是什么环境,就在服务器环境上安装相应的包,注意各个包的版本要一一对应。

三、uwsgi与Nginx的介绍及安装

  1. uwsgi
    a):自己也没太弄懂,个人简单理解就是通过uwsgi可以实现自己的项目在服务器上后台运行,并且其他用户可根据其端口的设置,进行远程访问。
    b):安装!因为我的系统版本自带python3.8,这个版本里面自带了uwsgi,所以就不用下载了。其他版本不太清楚,可以在命令行下载看看提示就行。

  2. Nginx
    a):当时用pip一直没装成功,于是用自带的apt,直接下载就好了。
    b):这个理解为一个总代理,用户通过网页发送request至Nginx,Nginx根据请求内容通过socket与uwsgi通信,最后执行相应的Django程序。至于为什么要用Nginx,通过网上的学习,应该就是Nginx可以存放一些静态文件,以及多任务代理,这样效率高吧。

  3. 放一张网上其他作者博客的图,以便理解。转载于图片原作者
    在这里插入图片描述

三、配置与启动

1. uwsgi的配置(可以单独用这个去代理启动项目)

首先找到manage.py同级目录下,用vim uwsgi.ini创建并编辑这个配置文件。在这里插入图片描述

配置内容如下:

[uwsgi]       #这个不能少
chdir=/home/project/Myproject  #根据自己项目路径而定,这里就是找到你项目所在目录
module=Myproject.wsgi:application     #这指的是Django创建项目后,就在setting.py同级目录下会有个uwsgi.py文件

#http=0.0.0.0:8001          # 可自定义端口号,如果单独用uwsgi去代理整个项目,那就选择用http就好了
socket=127.0.0.1:9090      #`可自定义端口号``

master=true
vacuum=true
process=4
damemonize=uwsgi.log
pidfile=uwsgi.pid

reload-on-as=2048    #进程占用内存达到2048则重启进程

注意点!!!
以上配置主要得弄明白两点!

  1. http的配置:如果只用uwsgi去代理程序,那就配置这个就好,以及一定要用==“ 0.0.0.0:端口号 ”== 这种形式。记不起具体原理了,好像是绑定什么ip什么的。不然用浏览器访问的时候一直有问题。
    当然这里不配置也行,但是启动的时候就要用 == uwsgi --ini uwsgi.ini 0.0.0.0:端口号== 这种形式启动。

  2. socket的配置:这个配置主要是提供一个连接端口,后面作为与Nginx通信的桥梁嘛。如果要用Nginx启动的话,就一定得配置,不用的话,可写可不写。

以上这样配置其实就可以启动你的项目了,通过浏览器即可访问!但是这里还是有要注意的点:
去浏览器浏览网站时
应该输入的ip地址为: 服务器公网ip+uwsgi所配置的端口
不然肯定访问不了的,过来人踩坑了~
查看服务器ip可以通过自己云服务器官网查看,也可以直接 ifconfig,相应信息就会出来了。

2.Nginx的配置

  1. 先找到文件所在地,应该是 /etc/nginx
  2. 我这里是直接更改自带的配置文件了,即该目录下有个nginx.conf
  3. 通过vim nginx.conf的方式进行内容编辑
  4. 对于这个文件,自己更改的内容挺少,因为自己也是小白,能够启动运行自己的网站即可,如果要配置那些静态文件的话,还得看看其他博主。
    5.以下分享我的配置情况:

这个user指得是Nginx的运行用户,因为自己就是用root启动的所以这就改的这个。

在这里插入图片描述理解各个参数的配置:
listen :监听端口,即用Nginx驱动后,浏览器访问的端口就用这个了
server_name: 服务器主机ip

location:是自己创建的函数,印象中没有自带。

include uwsgi_params 是nginx.conf同级目录下的文件,这个很重要,这里直接写就好了。
uwsgi_pass 这里很重要,这里就是uwsgi.ini中配置的socket,这里配置与之连接,构成通信桥梁。

Ok,这样配置就行了。

四、配置完后的运行测试

这里主要说明以下运行顺序以及稍微注意以下的点吧,因为可能存在运行了,好像访问不了什么之类的。

  1. 启动顺序。
    a)如果只用uwsgi去代理自己的Django项目,那么找到自己的项目,找到自己配置的uwsgi.ini文件目录下,直接运行 uwsgi --ini uwsgi.ini(这样的前提是里面配置了http内容,然后这个 --ini 的意思就是后台运行。这个时候,你想检查以下运行情况,可以 cat uwsgi.log,这个文件实时存放了运行情况,当然咯,也可以直接浏览器访问: 主机ip :端口号
    b)如果是通过Nginx运行的话,先用 uwsgi --ini uwsgi.ini这样先启动uwsgi的内容,然后再输入 Nginx ,这样运行Nginx。(好像直接输入Nginx运行也行,但是我在过程中时刻碰壁,然后按以上运行方式一切正常。

  2. 启动过程可能存在端口暂用啥的,导致没成功

    1. ps -ef| grep uwsgi 查看是不是有uwsgi的进程,先把这个杀死,kill -9 进程号,例如: kill -9 1152 然后再查看以下有没有进程 。在这里插入图片描述
    2. ps -ef| grep nginx 同样的方法,查看是否有nginx的启动情况,统统杀死,然后按照上面的方式运行一遍,就可以正常浏览访问了。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值