美文网首页djangodjango
Django+uwsgi+nginx(Ubuntu:16.4)项

Django+uwsgi+nginx(Ubuntu:16.4)项

作者: f5065e26181b | 来源:发表于2019-04-26 19:12 被阅读14次

    在实际工程实践中,需要将所构建的项目部署在云端服务器上。本文以虚拟机为例,在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系统安装文件,安装结果如图:


    image

    为了能模拟服务器部署,需要对其网络进行配置。
    虚拟机网络模式有三种:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。
    选择NAT方式连入互联网的话,那么虚拟机的IP地址非配,网关以及互联网访问权限均由VMWare提供的叫做VMnet8虚拟网卡所提供。通VMnet8虚拟网卡,主机可以访问虚拟机的IP,虚拟机可以连入主机的互联网连接连入外网。
    VMWare Workstation已经启用VMnet8虚拟网卡,在主机系统中设置IP:


    image
    image
    在VMWare主界面,点击编辑>虚拟网络编辑器菜单进入虚拟网卡参数设置界面,选择VMnet8条目,点击NAT Settings按钮后可以看到我们的VMWare Workstation为NAT连接的虚拟机设定的默认网关。
    image

    在虚拟机上设置IP:


    image
    这样就可以用独立的IP在虚拟机和主机之间进行通信了,虚拟机也可以连互联网了。

    /3/配置环境

    (1)安装虚拟环境
    ubuntu中默认安装Python2.7和Python3.5,在这里使用3.5。为方便环境配置,首先安装虚拟环境:
    当然如果出现权限问题,sudo就好:


    image
    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
    

    安装过程中会出现叫你输入密码,这个密码一定要记住!


    image

    完成后进入数据库:

    mysql -u root -p
    

    建立数据库:

    create database onlinetestbc1;
    

    选择数据库:

    use onlinetestbc1;
    

    导入SQL文件:

    source onlinetestbc1.sql;
    
    image

    查看最终结果:


    image

    (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
    
    image

    /3/最终结果

    主机浏览器输入192.168.23.130/login/,结果如图:


    image

    至此,django项目在ubuntu系统上的部署完成了。

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

    image

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

    image

    //猜你喜欢//

    相关文章

      网友评论

        本文标题:Django+uwsgi+nginx(Ubuntu:16.4)项

        本文链接:https://www.haomeiwen.com/subject/yeofnqtx.html