您的位置:首页 > 运维架构 > Nginx

Ubuntu12.4系统下配置Django+Nginx+uWSGI

2012-11-08 11:06 676 查看
基于性能等多方面考虑,搭建Nginx+uWSGI环境
环境:ubuntu12.04
安装版本:nginx1.3.4+python2.7.3(系统自带)+django1.4.1+uWSGI1.2.5

 
一.安装NGINX (使用官方PPA源安装最新版本)
    注:先更新源,安装最新nginx版本1.3.4,参考http://nginx.org/en/download.html


1)修改源信息:

sudo vim /etc/apt/sources.list
增加下面2行(此版本为1.3.4开发版)

deb http://ppa.launchpad.net/nginx/development/ubuntu precise main

deb-src http://ppa.launchpad.net/nginx/development/ubuntu precise main

增加公钥
sudo apt-key adv
--keyserver keyserver.ubuntu.com
--recv-keys C300EE8C #注意没有此行,会安装默认版本


官方源(安装版本1.2.2稳定版):

deb http://nginx.org/packages/ubuntu/ precise nginx

deb-src http://nginx.org/packages/ubuntu/ precise nginx

2)并update一下。

sudo apt-get update
3)安装NGINX

sudo apt-get install nginx



 
安装uWSGI可能提示没有python.h文件,需要安装python-dev


    sudo apt-get install python-dev





 
二.安装uWSGI
    注意:安装uWSGI可能提示没有python.h文件,需要安装python-dev


    sudo apt-get install python-dev





 
    


    方法1(安装默认1.0.3版本)

    apt-get install uwsgi uwsgi-plugin-python    #ubuntu12.04下默认安装uWSGI1.0.3,会自带安装上python-pulign

    方法2(编译安装1.2.5版本)

    wget -c http://projects.unbit.it/downloads/uwsgi-1.2.5.tar.gz
    tar zxvf uwsgi-1.2.5.tar.gz

    cd uwsgi-1.2.5

    make

    sudo cp uwsgi /usr/bin/


 
 

三.安装django


wget -c https://www.djangoproject.com/download/1.4.1/tarball
tar zxvf Django-1.4.1.tar.gz

cd Django-1.4.1

sudo python setup.py install #需要root权限创建文件

默认路径在: /usr/local/lib/python2.7/dist-pachages/Django-1.4.1


此处使用sqlite3数据库,如果使用mysql或其他数据库,需要安装python-mysql或其他相应包
 
环境配置:
 
配置django


mkdir /home/wwwdjango/

cd /home/wwwdjango/

django-admin.py startproject mysite

tree mysite    #查看django自动生成的文件目录结构如下:

mysite/
|-- manage.py

`-- mysite

    |--
__init__.py

    |-- settings.py    #这是主要的django配置文件

    |-- urls.py

    `-- wsgi.py

修改settings.py

配置数据库DATABASES中配置sqlite3

'ENGINE': 'django.db.backends.sqlite3', 
'NAME': '/home/wwwdjango/mysite/mysite.db',     #注意使用sqlite此文件及所在目录需要有读写权限
 
STATIC_ROOT = '/home/wwwdjango/mysite/mysite/static/'    #为了处理admin的样式问题

 
INSTALLED_APPS 中取消django.contrib.admin的注释

修改urls.py

取消下列行的注释
from django.contrib import admin
admin.autodiscover()
url(r'^admin/', include(admin.site.urls)),

生成数据表,处理admin样式

cd /home/wwwdjango/mysite

sudo ./manage.py syncdb    #首次使用按提示创建数据库用户

sudo ./manage.py collectstatic    #确保settings.py中设置的STATIC_ROOT目录存在,有写权限,nginx有读权限


 
配置nginx


cd /etc/nginx/sites-available/

sudo vi mysite.com.conf

添加下面内容
#django project conf
server {
        listen   80;
        server_name mysite.com;
        location / {
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:8080;    #注意此处与uwsgi配置的socket地址一致
        }
 

        location /static/ {
            alias /home/wwwdjango/mysite/mysite/static/admin/;
            #root /home/wwwdjango/mysite/mysite/static/;
            access_log off;
        }       
        location /admin {
            uwsgi_pass 127.0.0.1:8080;
            include uwsgi_params;
        } 

}
cd ../sites-enable

sudo ln -s /etc/nginx/sites-avilable/mysite.com.conf
mysite.com.conf



 
配置uwsgi


cd /home/wwwdjango/

sudo vi uwsgi.xml  或者 sudo vi uwsgi.ini  #参考https://docs.djangoproject.com/en/1.4/howto/deployment/wsgi/uwsgi/

添加如下ini格式:

[uwsgi]

chdir=/home/wwwdjango/mysite

module=mysite.wsgi

env DJANGO_SETTINGS_MODULE=mysite.settings

master=True

pidfile=/tmp/project-master.pid

socket=127.0.0.1:8080

porcesses=5

vacuum=True
max-requests=5000

daemonize=/var/log/uwsgi/mysite.log

xml格式


<uwsgi>
 <socket>127.0.0.1:8080</socket>
 <listen>80</listen>
 <master>true</master>
 <pythonpath>/home/wwwdjango/mysite</pythonpath>
 <module>django_uwsgi</module>
 <wsgi-file>/home/wwwdjango/mysite/mysite/wsgi.py</wsgi-file>
 <processes>8</processes>
 <logdate>true</logdate>
 <daemonize>/home/wwwdjango/uwsgi.log</daemonize>
 <plugins>python</plugins>
</uwsgi>




 
 


启动uwsgi

uwsgi --ini uwsgi.ini       关闭uwsgi:    killall
-9 uwsgi

uwsgi -x uwsgi.xml

启动nginx

sudo /etc/init.d/nginx restart    加载配置 sudo
/etc/init.d/nginx
reload

修改hosts

sudo vi /etc/hosts

添加
127.0.0.1    mysite.com


 
此时可以通过mysite.com访问,会提示page not found,访问mysite.com/admin应该可以登录
 
创建自动启用sh<或添加到开机自启动>
sudo vi /etc/rc.local
exit 0前添加
uwsgi -x /home/wwwdjango/uwsgi.xml
此处可参考 http://blog.liuts.com/post/216/ 改写 这是centos系统的配置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: