响水凹

欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki

用户工具

站点工具


computer:net:django

Django+uWSGI+Nginx的安装和配置

Django是一个流行的Python框架,Nginx是一个高性能的HTTP和反向代理服务器。本文讲述在CentOS 6下Django的安装,并通过uWSGI与Nginx集成的简单配置方法。

软件安装

安装Django

安装Django及其他Python软件包有很多方法,这里统一使用pip来安装。不建议多种方法混合使用。

首先安装pip,需要启用EPEL源:

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum update

安装pip:

yum install python-pip
较早版本的pip在CentOS下的命令为python-pip,新版本增加了pip命令,相应的,python-pip改成了指向pip的符号链接。

现在可以通过pip安装Django了:

python-pip install django

更多安装细节可参考官方说明:Quick install guide

安装Nginx

接下来安装Nginx服务器,安装方法可参考Installation on Linux的CentOS部分。

下载nginx-release-centos-6-0.el6.ngx.noarch.rpm并安装它,或者手工新建文件/etc/yum.repos.d/nginx.repo:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

安装:

yum install nginx

安装uWSGI

安装uWSGI需要用到系统开发工具包,如果尚未安装,则执行:

yum groupinstall 'Development tools'
yum install python-devel

通过pip安装uWSGI:

python-pip install uwsgi

更多安装细节可参考:Installing uWSGI

集成配置

Django项目

我们参照Django的Tutorial新建个应用项目。

首先创建一个普通用户django:

useradd django

以用户django登录,执行:

django-admin.py startproject mysite

手工运行:

cd mysite/
python manage.py runserver

配置uWSGI

开始之前,建议先看看官方这篇快速文档:Quickstart for python/WSGI applications

配置刚才建立的Django应用,新建/etc/uwsgi.ini(这里采用INI格式的配置文件):

[uwsgi]
socket = 127.0.0.1:3031
chdir = /home/django/mysite/
wsgi-file = mysite/wsgi.py
master = ture
processes = 4
threads = 2
#stats = 127.0.0.1:9191
uid = django
gid = django
die-on-term = true
pidfile = /var/run/uwsgi.pid
logto = /var/log/uwsgi.log

更多参数说明可参见:Configuration Options

运行:

uwsgi /etc/uwsgi.ini

测试时可以手工启动,实际运行时要配置成开机自启动。

CentOS 6的init系统是Upstart,新建/etc/init/uwsgi.conf:

# simple uWSGI script

description "uwsgi tiny instance"
start on runlevel [2345]
stop on runlevel [06]

exec /usr/bin/uwsgi /etc/uwsgi.ini

启动服务:

start uwsgi

停止服务:

stop uwsgi

更多Upstart的信息可参考:Running uWSGI via Upstart

配置Nginx

Nginx的配置文件在/etc/nginx目录下。当前这个样例只运行一个Django应用,故直接编辑/etc/nginx/conf.d/default.conf,添加:

location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:3031;
}

对于静态资源,直接由Nginx来负责,不用通过Django:

location /static {
    alias /usr/lib/python2.6/site-packages/django/contrib/admin/static;
}

更多信息可参考:Nginx support

配置完毕。

使用浏览器直接访问服务器的80端口,无误的话,将显示Django的画面。

computer/net/django.txt · 最后更改: 2014/11/01 02:02 由 127.0.0.1