ubuntu18.04系统上用uwsgi+nginx部署Django

2022-04-15 16:20:56 浏览数 (1)

ssh链接上服务器之后

1.我们先更新软件库:

代码语言:javascript复制
apt update

2.下载python3和pip,(也可以下虚拟环境)

代码语言:javascript复制
apt install python3 python3-pip
(pip3 install vituralvenv)

3.我这里就不用虚拟环境了,安装django

代码语言:javascript复制
pip3 install django

当然你也可以指定版本比如

代码语言:javascript复制
pip3 install django==3.0.0

4.创建django应用

代码语言:javascript复制
django-admin startproject Tom

Tom:就是这个项目的名字

5.先去runserver看看能不能启动起来,因为有的时候会有报错,一些依赖项没有安装的话,就根据报错去安装依赖项。我这里是没有报错的

代码语言:javascript复制
cd Tom
python3 manage.py runserver 0.0.0.0:8000

当你看到上面的提示信息,并且在浏览器上输入你的服务器ip地址:8000

可以看到django应用的初始页面,即可证明可以跑起来,那么就直接进行下一步

6.安装uwsgi

代码语言:javascript复制
pip3 install uwsgi

7.安装nginx

代码语言:javascript复制
apt install nginx

8.编写配置文件

a.编写uwsgi的配置文件

在django项目目录下:

代码语言:javascript复制
vi uwsgi.ini //进入vi编辑器模式

[uwsgi]
chdir=/root/Tom
module=Tom.wsgi
master=True
vacuum=True
daemonize=/root/Tom/logs/1.log
socket=:8001

编辑完之后按esc,然后输入:wq
保存并退出

这个配置文件的第一项chdir就是你的项目目录,你可以cd到你的项目里,然后输入pdw来看一下

第二项module就是启动的模块就是在项目文件夹里面的wsgi.py

第三项的意思是主进程

第四项的意思是当服务器退出的时候自动删除unix socket文件和pid文件。

第五项是服务日志的存放目录,所以记得在项目目录下mdkir一个logs目录

关于第六项,如果你想先用uwsgi启动django,那么就写成:

代码语言:javascript复制
http=:8001

最后一步,复制uwsgi_params文件到你的项目目录下

代码语言:javascript复制
cp uwsgi_params /root/Tom/

b.编写nginx配置,首先先开启nginx,看是否可以运行

代码语言:javascript复制
/etc/init.d/nginx start

这时候在浏览器上直接输入你的服务器的ip地址

如果出现,welcome *** nginx!

就代表成功启动

然后我们开始编写我们的nginx配置

(1)

代码语言:javascript复制
 cd /etc/nginx/
 vi nginx.conf
 然后再http里面的include我们的nginx.conf文件

然后esc :wq

保存并退出

(2)编写项目目录下的nginx.conf

代码语言:javascript复制
vi nginx.conf
写入以下内容
server{
  listen 80 default_server;
#  server_name *
  location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:8001;  
  }

  location /static {
    alias /root/Tom/static;
  }
}

这里的static是我们在django的settings.py里写了

代码语言:javascript复制
STATIC_ROOT=os.path.join(BASE_DIR,'static')

并且执行了python3 manage.py collectstatic之后

所对应的静态文件夹目录,这一块有时候会有一个坑,就是会丢失静态文件,出现403forbidden,研究了半天,解决办法就是加权限:

代码语言:javascript复制
chmod o x /root/Tom

然后再刷新,样式就全都渲染出来了。

另外说一个注意点,就是当你的django项目的debug=false的时候,记得写allowHost=["*"]或者你的*可以写成你的服务器。

9.启动

首选启动uwsgi:(在你编写uwsgi.ini的项目目录里)

代码语言:javascript复制
uwsgi --ini uwsgi.ini 

然后重新启动ngixn,因为我们刚才已经启动了nginx

代码语言:javascript复制
service nginx restart
service nginx status //看一下状态

出现绿色的running即可

然后在浏览器输入ip地址,就可以看到django的首页

至此,uwsgi nginx部署django结束。

写这篇文章已经2020/7/28了

我应该是从去年12月份开始研究django部署

那时候啥都不会 连一个linux系统的vim编辑器

或用rm删文件 cp复制文件都不会

从头学起吧,有时候为了部署,可能手机会收到5条阿里云服务器重装系统的验证码

一天5次,最后还是失败。

重复一套动作,五次

本身就会带来疲惫感和厌倦感

再加上五次都是失败

所带来的的疲惫感

有时候真的会把我压得死死的,就感觉我得换专业了吧

但是,八个月的努力没白费。

那就值了。

0 人点赞