美文网首页
Nginx+Django部署实战笔记

Nginx+Django部署实战笔记

作者: 沐文乘光 | 来源:发表于2019-05-15 19:40 被阅读0次

    使用python调研一个东西,结果需求增加,需要做成服务器的形式供别人访问。搜寻了下,目前python较为常见的是django框架 与Nginx配合使用。我的PC环境是ubuntu。

    要说运行django就已经可以在网页上访问相应链接了,为什么还要整个Nginx呢?查询了下,大致原因是因为django不具备作为服务器的能力,所以需要Nginx承担服务器的功能。今天费了差不多半天时间来搞这个配置,本来以为很简单,结果因为我的Nginx的版本太低1.4.6,跟网上别人贴的不太一样。所以还是记录下来,以备日后查阅。

    先说Django的安装

    输入以下命令就可以自动安装django

    $sudo pip install django

    创建hello world工程

    在一个文件夹下,输入下面命令

    $django-admin startproject HelloWorld

    再用tree看看生成了哪些文件:

    再在工程目录下输入下面命令,就可以在网页上访问了。如下图

    $python manage.py runserver 0.0.0.0:8000 

    但是如果输入的ip地址加port的话,就会有下图提示

    在HelloWorld/settings.py中的ALLOWED_HOSTS = ['your ip'] 填上再运行就好了。

    Nginx和安装和配置

    输入sudo apt-get install nginx进行安装。然后看看版本号:

    nginx -v

    nginx version: nginx/1.4.6 (Ubuntu)

    需要注意的是,nginx 1.4.6版本的server配置是在/etc/nginx/sites-available/default。现在来看看nginx是否可以正常运行吧。

    打开/etc/nginx/sites-available/default,在里面的server中追加listen 8099; 这样当访问这个端口时,会默认定向到index.html。

    启动服务:

    sudo /etc/init.d/nginx restart

    * Restarting nginx nginx                                                                                                                                                                            [ OK ]

    在浏览器里面输入ip:8099回车。于是出现nginx的欢迎界面。检测nginx正常运行了

    将Nginx与Django关联

    因为需要用到uwsgi,所以需要先安装它。输入下面命令

    pip install uwsgi

    安装后。可以使用uwsgi命令将py文件关联来处理http消息。这里先使用uwsgi命令来将django工程关联来处理web消息。

    在工程目录下,输入下面命令

    $uwsgi --http :8091 --chdir . --wsgi-file HelloWorld/wsgi.py --master --processes 4 --threads 2

    这时候会报错:

    File "HelloWorld/wsgi.py", line 12, in

        from django.core.wsgi import get_wsgi_application

    ImportError: No module named django.core.wsgi

    这是因为django.core.wsgi 的包不在系统默认路径里面。先确认自己安装的pthon2.7的路径在哪,输入下面命令:

    >>>importsite; site.getsitepackages()

    ['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

    在uwsgi.ini追加下面一行,再次运行uwsgi --http :8091 --chdir . --wsgi-file HelloWorld/wsgi.py --master --processes 4 --threads 2就可以了

    pythonpath = /usr/local/lib/python2.7/dist-packages

    再通过网页访问8091端口,展示如下面的页面,可以看出是DJango的介绍页。

    下面再介绍将Nginx和Django关联。网上抄了一个uwsgi.ini文件,内容如下:

    在/etc/nginx/sites-available/default文件的server的location里追加

    uwsgi_pass  127.0.0.1:9090;

    uwsgi_param UWSGI_SCRIPT HelloWorld.wsgi;

    uwsgi_param UWSGI_CHDIR /home/xxx/django/HelloWorld

    然后保存重起Nginx服务器

    在服务器中输入127.0.0.1:8099, 展示的是django的index.html而不是Nginx的主页

    相关文章

      网友评论

          本文标题:Nginx+Django部署实战笔记

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