Django+uwsgi+nginx(Ubuntu:16.4)项目部署

在实际工程实践中,需要将所构建的项目部署在云端服务器上。本文以虚拟机为例,在ubuntu16.4系统上部署django项目,所用项目为前期搭建的在线考试系统。
关注公众号,回复“在线考试”获取开源代码链接!
/1/功能介绍
(1)uwsgi:一是一个web服务器,也可以当做中间件;
(2)nginx:常用高性能代理服务器;
工作流程为:
(1)首先客户端请求服务资源,nginx作为直接对外的服务接口,接收到客户端发送过来的http请求,会解包、分析;
(2)如果是静态文件请求就根据nginx配置的静态文件目录,返回请求的资源,如果是动态的请求,nginx就通过配置文件,将请求传递给uWSGI;
(3)uWSGI 将接收到的包进行处理,并转发给wsgi,wsgi根据请求调用django工程的某个文件或函数,处理完后django将返回值交给wsgi,wsgi将返回值进行打包,转发给uWSGI,uWSGI接收后转发给nginx,nginx最终将返回值返回给客户端(浏览器或APP)。
/2/虚拟机安装和静态IP配置
虚拟机的安装网上有很多成熟的例子,需要VMware软件和Ubuntu系统安装文件,安装结果如图:
Django+uwsgi+nginx(Ubuntu:16.4)项目部署_第1张图片
为了能模拟服务器部署,需要对其网络进行配置。
虚拟机网络模式有三种:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。
选择NAT方式连入互联网的话,那么虚拟机的IP地址非配,网关以及互联网访问权限均由VMWare提供的叫做VMnet8虚拟网卡所提供。通VMnet8虚拟网卡,主机可以访问虚拟机的IP,虚拟机可以连入主机的互联网连接连入外网。
VMWare Workstation已经启用VMnet8虚拟网卡,在主机系统中设置IP:
Django+uwsgi+nginx(Ubuntu:16.4)项目部署_第2张图片
Django+uwsgi+nginx(Ubuntu:16.4)项目部署_第3张图片
在VMWare主界面,点击编辑>虚拟网络编辑器菜单进入虚拟网卡参数设置界面,选择VMnet8条目,点击NAT Settings按钮后可以看到我们的VMWare Workstation为NAT连接的虚拟机设定的默认网关。
Django+uwsgi+nginx(Ubuntu:16.4)项目部署_第4张图片
在虚拟机上设置IP:
Django+uwsgi+nginx(Ubuntu:16.4)项目部署_第5张图片
这样就可以用独立的IP在虚拟机和主机之间进行通信了,虚拟机也可以连互联网了。
/3/配置环境
(1)安装虚拟环境
ubuntu中默认安装Python2.7和Python3.5,在这里使用3.5。为方便环境配置,首先安装虚拟环境:
当然如果出现权限问题,sudo就好:
Django+uwsgi+nginx(Ubuntu:16.4)项目部署_第6张图片

apt-get install python3-venv

在你建立的目录下:

python3 -m venv ven(虚拟环境名)

在生成ven/binwen目录下启动虚拟环境:

source activate

安装项目所需包,requirement.txt:

sudo apt-get install pip3
pip3 install -r requirement.txt

(2)安装uwsgi

sudo apt-get install python3-setuptoolssudo apt-get install python3-devpip3 install uwsgi

(3)安装Nginx

sudo apt-get update
sudo apt-get install nginx

(4)安装mysql并导入数据库
安装mysql:

sudo apt-get install mysql-server mysql-client

安装过程中会出现叫你输入密码,这个密码一定要记住!
Django+uwsgi+nginx(Ubuntu:16.4)项目部署_第7张图片
完成后进入数据库:

mysql -u root -p

建立数据库:

create database onlinetestbc1;

选择数据库:

use onlinetestbc1;

导入SQL文件:

source onlinetestbc1.sql;

Django+uwsgi+nginx(Ubuntu:16.4)项目部署_第8张图片
查看最终结果:
Django+uwsgi+nginx(Ubuntu:16.4)项目部署_第9张图片

(5)配置

在项目目录新建uwsgi.ini文件:

[uwsgi]chdir   = /你的路径/项目module  = 项目名称.wsgimaster  = trueprocesses = 10socket  = :8000vacuum  = true

新建nginx.conf文件

[uwsgi]
chdir   = /你的路径/项目
module  = 项目名称.wsgi
master  = true
processes = 10
socket  = :8000
vacuum  = true
pythonpath = /你的虚拟环境的路径/lib/python3.5/site-packages/
daemonize = /路径/项目/run.log
disable-logging = true

链接到uwsgi的启动配置文件中

ln -s /你的目录/项目/nginx.conf  /etc/nginx/conf.d/

新建run.log文件
修改setting.py文件:

DEBUG = False
ALLOWED_HOSTS = [‘192.168.23.130’]

配置完成重启Nginx

service nginx restart

进入项目目录下,开启uwsgi:

uwsgi -i uwsgi.ini

Django+uwsgi+nginx(Ubuntu:16.4)项目部署_第10张图片
/4/最终结果
主机浏览器输入192.168.23.130/login/,结果如图:
Django+uwsgi+nginx(Ubuntu:16.4)项目部署_第11张图片
至此,django项目在ubuntu系统上的部署完成了。

关注公众号,送海量学习资源,一起学django~

Django+uwsgi+nginx(Ubuntu:16.4)项目部署_第12张图片

1024程序开发者社区的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里就技术问题进行交流,还没有加入的小伙伴可以扫描下方“社区物业”二维码,让管理员帮忙拉进群,期待大家的加入。

Django+uwsgi+nginx(Ubuntu:16.4)项目部署_第13张图片

//猜你喜欢//

  • Django+xadmin打造在线考试系统(一)

  • Django+xadmin打造在线考试系统(二)

  • Django+xadmin打造在线考试系统(三)

  • Django+xadmin打造在线考试系统(四)

  • Django+xadmin打造在线考试系统(五)完结

  • 《解忧杂货店》豆瓣书评爬取和情感分析初探

你可能感兴趣的:(web开发)