Nginx+Django部署实战笔记

2019-05-15  本文已影响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的主页

上一篇下一篇

猜你喜欢

热点阅读