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解开注释。
然后对应下图进行修改,中间那个很长的代码如下,直接复制即可。
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;
其中demo02是我的项目名,把编码格式解开注释并改成utf8,然后设置error文件,这里error文件要自己创建,并设置等待时间和sock文件。
根据上面代码修改静态文件路径
至此nginx就配置完成了。
通过下面代码开启nginx
这样就完成了uwsgi+nginx的Django项目部署。
结果如下: