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安装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的画面。