Django(十六):项目部署

梦想与她 提交于 2019-12-02 08:41:21

一. 安装django环境


1. 导出django的开发环境

激活虚拟环境
pip freeze > package.txt

2. 将包目录上传服务器,并进行安装

将package.txt,放在 /opt目录下
安装 pip3 install -r package.txt
安装过程中出现超时错误:更换下载源 pip3 install -r package.txt -i 源地址

二. 上传django项目


1.将django项目放在 /opt目录下
2.项目测试

systemctl stop firewalld
修改 sttings⽂件,修改 ALLOWED_HOSTS = ['*'] 允许所有的主机访问

启动项目
python3 manage.py runserver 0.0.0.0:8000

如果出现项目报错,可能是配置中对于版本过高的问题,去修改即可

三. 安装uwsgi


上面我们已经完成了python+Django环境的部署,接下来我们需要了解python 的uwsgi框架:

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

1. 安装配置uwsgi

pip3 install uwsgi
创建软连接
ln /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

测试uwsgi

uwsgi --http 192.168.1.69:8000 --file OurBlog/wsgi.py --staticmap=/static=static

在项目的主目录(manage.py)
uwsgi --http 10.10.14.180:80 --file Qshop/wsgi.py --static-map=/static=static
上述方法可以实现uwsgi驱动django,但是在工作当中,开发者更加配置文件的形式启动uwsgi

cd /opt
mkdir script
cd script
touch uwsgi.ini

编写 uwsgi.ini

[uwsgi]
chdir=/opt/OurBlog #项目目录
module=OurBlog.wsgi:application #指定项目的application
socket=/opt/script/uwsgi.sock #指定sock的⽂件路径
workers=5 #进程个数
pidfile=/opt/script/uwsgi.pid
http=192.168.2.69:8000 #指定IP端⼝
static-map=/static=/opt/OurBlog/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/script/uwsgi.log #设置日志目录

启动uwsgi

cd /opt/script
uwsgi --ini uwsgi.ini ## 使⽤ini⽂件启动uwsgi

在这里插入图片描述

使用浏览器访问,停止uwsgi
在这里插入图片描述

四. 安装NGINX


下载NGINX包

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

解压NGINX包

tar -zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure \
make && make install

创建软链接

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

启动nginx查看效果

nginx

在这里插入图片描述

五. 修改NGINX的配置文件


在这里插入图片描述
进行配置文件备份
在这里插入图片描述
具体配置如下vi nginx.conf
在这里插入图片描述
修改server段
在这里插入图片描述
在这里插入图片描述

listen 监听端口
server_name 服务名字
charset utf -8#服务器编码
access_log /var/log/nginx/access.log main; #访问⽇志路径,注意:这个⽬录可能没
有,需要创建
gzip_types #压缩格式
error_log /var/log/nginx/error.log error; #错误⽇志注意:这个⽬录可能没有,需要
创建
 location / {
 include uwsgi_params; #nginx加载uwsgi模块
 uwsgi_connect_timeout 30; #连键超时时间
 uwsgi_pass unix:/opt/script/uwsgi.sock; #nginx对应的uwsgi
socket⽂件
 }
 location = /static/ {
 alias /opt/OurBlog/static; #静态⽂件路径
 index index.html index.htm; #⾸⻚
 }
 }

创建error.log日志文件
在这里插入图片描述
保证NGINX和uwsgi全部停止,然后重新启动
在这里插入图片描述
启动uwsgi和nginx

uwsgi --ini uwsgi.ini
nginx

可能会出错:80端口被占用
在这里插入图片描述
解决方案:杀死80端口的服务

netstat -ntlp|grep 80

在这里插入图片描述
修改uwsgi.ini
修改http=127.0.0.1:8000 不允许外⽹通过ip+8000 端口直接访问django服务
在这里插入图片描述
启动,访问服务,部署完成

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!