天天看点

Django+uwsgi+nginx服务部署

Django项目在linux系统上的部署

uwsgi安装与配置

我们需要先了解python 的uwsgi框架。接下来我们需要了解python 的uwsgi模块。

Python manager.py runserver, 这是一款适合开发阶段使用的服务器,只支持最高200的并发,显然不适合在生产中使用。我们在生产环境当中,通常会用到apache或者nginx服务器作为Django的生产服务器。今天我们以nginx为例子。但是在学习部署之前,我们首先要掌握在Django和nginx之间的一个程序,就是wsgi,web服务器网关接口,英文叫, Web Server Gateway Interface 缩写叫WSGI,是Python应用程序或框架和web服务器之间的一种接口。

首先安装uwsgi模块

pip3 install uwsgi
           

然后设置软链接

ln /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
           

虽然可以使用命令行启动uwsgi,但是太麻烦了,体验极差,所以这里我们是用ini文件启动。

我们可以创建一个pz文件,然后进入到pz文件中,创建uwsgi.ini文件,并在其中填写如下内容

[uwsgi]

chdir=/opt/demo02   #项目目录

module=demo02.wsgi:application  #指定项目的application

socket=/opt/pz/uwsgi.sock  #指定sock的文件路径

workers=5  #进程个数

pidfile=/opt/pz/uwsgi.pid

http=192.168.2.69:8000  #指定IP端口

static-map=/static=/opt/demo02/static  #指定静态文件

uid=root  #用户

gid=root  #组

master=true  #启用主进程

vacuum=true  #自动移除unix Socket和pid文件当服务停止的时候

enable-threads=true #启用线程

thunder-lock=true #序列化接受的内容

harakiri=30 #设置自中断时间

post-buffering=4096 #设置缓冲

daemonize=/opt/pz/uwsgi.log #设置日志目录

py-autoreload = 1 #开机自启动
           

这里的demo02是我的项目名称,和pz是同级的,都在opt文件夹中,如果你的项目不在opt下,你也可以使用cp将其复制到opt下,ip端口是你的linux的ip地址,可以使用ifconfig查看。(注意,这里需要把注释都删除!!!)

然后我们就可以开启uwsgi服务了

uwsgi --ini uwsgi.ini
           

这里如果要访问网站的话,需要关闭防火墙和selinux

setenforce 0 #关闭selinux
systemctl stop firewalld.service #关闭防火墙
           

nginx配置

首先下载nginx

wget -c https://nginx.org/download/nginx-1.12.2.tar.gz
           

解压

tar -zxvf nginx-1.12.2.tar.gz
           

进入到对应文件夹并进行配置

cd nginx-1.12.2 #进入nginx文件夹

./configure \ #这里要回车两次
           

然后编译安装

make && make install
           

设置软链接

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
           

然后我们进行nginx配置

我们进入到/usr/local/nginx/conf中找到nginx.conf文件。

这里首先把注释掉的log_format解开注释。

Django+uwsgi+nginx服务部署

然后对应下图进行修改,中间那个很长的代码如下,直接复制即可。

gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;
           
Django+uwsgi+nginx服务部署

其中demo02是我的项目名,把编码格式解开注释并改成utf8,然后设置error文件,这里error文件要自己创建,并设置等待时间和sock文件。

Django+uwsgi+nginx服务部署

根据上面代码修改静态文件路径

至此nginx就配置完成了。

通过下面代码开启nginx

Django+uwsgi+nginx服务部署

这样就完成了uwsgi+nginx的Django项目部署。

结果如下:

Django+uwsgi+nginx服务部署

继续阅读