一、服务器情况
- 百度云服务器
- Linux版本:Ubuntu 20.04版本
- 所用的环境为root环境。(建议一个项目一个环境,以便应对不同项目包的版本不匹配)
二、环境构建
本地调试Django所用的是什么环境,就在服务器环境上安装相应的包,注意各个包的版本要一一对应。
三、uwsgi与Nginx的介绍及安装
-
uwsgi
a):自己也没太弄懂,个人简单理解就是通过uwsgi可以实现自己的项目在服务器上后台运行,并且其他用户可根据其端口的设置,进行远程访问。
b):安装!因为我的系统版本自带python3.8,这个版本里面自带了uwsgi,所以就不用下载了。其他版本不太清楚,可以在命令行下载看看提示就行。 -
Nginx
a):当时用pip一直没装成功,于是用自带的apt,直接下载就好了。
b):这个理解为一个总代理,用户通过网页发送request至Nginx,Nginx根据请求内容通过socket与uwsgi通信,最后执行相应的Django程序。至于为什么要用Nginx,通过网上的学习,应该就是Nginx可以存放一些静态文件,以及多任务代理,这样效率高吧。 -
放一张网上其他作者博客的图,以便理解。转载于图片原作者
三、配置与启动
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则重启进程
注意点!!!
以上配置主要得弄明白两点!
-
http的配置:如果只用uwsgi去代理程序,那就配置这个就好,以及一定要用==“ 0.0.0.0:端口号 ”== 这种形式。记不起具体原理了,好像是绑定什么ip什么的。不然用浏览器访问的时候一直有问题。
当然这里不配置也行,但是启动的时候就要用 == uwsgi --ini uwsgi.ini 0.0.0.0:端口号== 这种形式启动。 -
socket的配置:这个配置主要是提供一个连接端口,后面作为与Nginx通信的桥梁嘛。如果要用Nginx启动的话,就一定得配置,不用的话,可写可不写。
以上这样配置其实就可以启动你的项目了,通过浏览器即可访问!但是这里还是有要注意的点:
去浏览器浏览网站时
应该输入的ip地址为: 服务器公网ip+uwsgi所配置的端口
不然肯定访问不了的,过来人踩坑了~
查看服务器ip可以通过自己云服务器官网查看,也可以直接 ifconfig,相应信息就会出来了。
2.Nginx的配置
- 先找到文件所在地,应该是 /etc/nginx
- 我这里是直接更改自带的配置文件了,即该目录下有个nginx.conf
- 通过vim nginx.conf的方式进行内容编辑
- 对于这个文件,自己更改的内容挺少,因为自己也是小白,能够启动运行自己的网站即可,如果要配置那些静态文件的话,还得看看其他博主。
5.以下分享我的配置情况:
这个user指得是Nginx的运行用户,因为自己就是用root启动的所以这就改的这个。
理解各个参数的配置:
listen :监听端口,即用Nginx驱动后,浏览器访问的端口就用这个了
server_name: 服务器主机ip
location:是自己创建的函数,印象中没有自带。
include uwsgi_params 是nginx.conf同级目录下的文件,这个很重要,这里直接写就好了。
uwsgi_pass 这里很重要,这里就是uwsgi.ini中配置的socket,这里配置与之连接,构成通信桥梁。
Ok,这样配置就行了。
四、配置完后的运行测试
这里主要说明以下运行顺序以及稍微注意以下的点吧,因为可能存在运行了,好像访问不了什么之类的。
-
启动顺序。
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运行也行,但是我在过程中时刻碰壁,然后按以上运行方式一切正常。 -
启动过程可能存在端口暂用啥的,导致没成功
- ps -ef| grep uwsgi 查看是不是有uwsgi的进程,先把这个杀死,kill -9 进程号,例如: kill -9 1152 然后再查看以下有没有进程 。
- ps -ef| grep nginx 同样的方法,查看是否有nginx的启动情况,统统杀死,然后按照上面的方式运行一遍,就可以正常浏览访问了。
- ps -ef| grep uwsgi 查看是不是有uwsgi的进程,先把这个杀死,kill -9 进程号,例如: kill -9 1152 然后再查看以下有没有进程 。