CentOS5.8+Nginx+uWSGI+Django開發環境

  之前使用Nginx+Fastcgi來搭建python web服務器,本文介紹Nginx+UWSGI組合來實現。uWSGI 是一個快速的、純C語言開發的、自維護的、對開發者友好的WSGI服務器,旨在提供專業的 Python web應用發佈和開發。它更符合python web的標準協議,速度要比Fastcgi要快、性能更加穩定。

這裏有一組性能測試對比 http://www.peterbe.com/plog/fcgi-vs-gunicorn-vs-uwsgi

一、安裝軟件
1、安裝pcre
cd /opt
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.31.tar.gz
tar zxvf pcre-8.31.tar.gz
cd pcre-8.31
./configure
make && make install

cd ..
2、安裝nginx
tar zxvf nginx-1.2.4.tar.gz
cd nginx-1.2.4

./configure --prefix=/usr/local/nginx/ --with-http_stub_status_module --with-pcre=../pcre-8.31/

make && make install

3、yum安裝mysql
yum -y install mysql*
/etc/init.d/mysqld start

4、安裝python
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
tar jxvf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure 
make && make install
改下yum的py版本,不然yum報錯
sed -i '1s/\/usr\/bin\/python/\/usr\/bin\/python2.4/1' /usr/bin/yum 

5、安裝MySql-python
wget http://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.3.tar.gz
cd MySQL-python-1.2.3.tar.gz
python setup.py install

6、安裝Django
wget http://www.djangoproject.com/m/releases/1.4/Django-1.4.2.tar.gz
tar zxvf Django-1.4.2.tar.gz
cd Django-1.4.2
python setup.py install

7、安裝uWSGI
wget http://projects.unbit.it/downloads/uwsgi-1.3.tar.gz
tar zxvf uwsgi-1.3.tar.gz
cd uwsgi-1.3
make
cp uwsgi /usr/bin
 
二、平臺配置:項目位置:/opt/www/Purgesys
1、mkdir -p /opt/www/
創建項目方法:
django-admin.py startproject Purgesys
 
查看項目(出現以下文件結構說明項目已創建成功)
tree Purgesys
[root@localhost www]# tree Purgesys
Purgesys
|-- Purgesys
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py
|   |-- urls.pyc
|   `-- wsgi.py
|-- django_wsgi.py
|-- django_wsgi.pyc
`-- manage.py

1 directory, 10 files

2、nginx配置
cd /usr/local/nginx/conf
vim django_uwsgi.conf
server {   
        listen  80;   
        server_name 10.1.20.151;   
  
        location / {   
            uwsgi_pass   127.0.0.1:9000;   
            include     uwsgi_params;   
            access_log  off;   
        }   
  
        location ^~ /static {   
                root   /opt/www/Purgesys;   
        }   
  
        location ^~ /admin/ {   
            uwsgi_pass   127.0.0.1:9000;   
            include  uwsgi_params;   
            access_log   off;   
        }   
  
        location ~* ^.+\.(mpg|avi|mp3|swf|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|rtf|mpeg)$ {   
            root   /opt/www/Purgesys/static;   
            access_log   off;   
        }   
  
}   

vim nginx.conf
http{   
........   
include django_uwsgi.conf;
}
 
3、uWSGI配置
mkdir -p /home/uwsgi;cd /home/uwsgi
mkdir -p /opt/www/logs 
echo "" > /opt/www/logs/django.log

vim uwsgi.xml
<uwsgi>  
  <socket>127.0.0.1:9000</socket>  
  <listen>200</listen>  
  <master>true</master>  
  <pidfile>/usr/local/nginx/uwsgi.pid</pidfile>  
  <processes>8</processes>  
  <pythonpath>/opt/www/Purgesys</pythonpath>  
  <pythonpath>/opt/www/</pythonpath>  
  <module>django_wsgi</module>  
  <profiler>true</profiler>  
  <memory-report>true</memory-report>  
  <enable-threads>true</enable-threads>  
  <logdate>true</logdate>  
  <limit-as>2048</limit-as>  
  <daemonize>/opt/www/logs/django.log</daemonize>  
</uwsgi>  

4、創建應用模塊
cd /opt/www/Purgesys
vi django_wsgi.py
import os  
os.environ['DJANGO_SETTINGS_MODULE'] = 'Purgesys.settings'   
import django.core.handlers.wsgi   
application = django.core.handlers.wsgi.WSGIHandler()   

5、啓動服務
/usr/bin/uwsgi -x /home/uwsgi/uwsgi.xml
uwsgi: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
解決方法:
64位系統 # ln -s /usr/local/lib/libpcre.so.1 /lib64
32位系統 # ln -s /usr/local/lib/libpcre.so.1 /lib

/usr/local/nginx/sbin/nginx

6、查看進程
[root@localhost ~]#  ps -ef|grep uwsgi|grep -v grep
root     13035     1  0 10:25 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi.xml
root     13036 13035  0 10:25 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi.xml
root     13037 13035  0 10:25 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi.xml
root     13038 13035  0 10:25 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi.xml
root     13039 13035  0 10:25 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi.xml
root     13040 13035  0 10:25 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi.xml
root     13041 13035  0 10:25 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi.xml
root     13042 13035  0 10:25 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi.xml
root     13043 13035  0 10:25 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi.xml

7、訪問測試
輸入http://ip/
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章