Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1485735
  • 博文数量: 230
  • 博客积分: 474
  • 博客等级: 下士
  • 技术积分: 1955
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-19 18:40
文章分类

全部博文(230)

文章存档

2020年(3)

2019年(3)

2018年(12)

2017年(13)

2016年(11)

2015年(55)

2014年(74)

2013年(39)

2012年(2)

2011年(18)

我的朋友

分类: AIX

2014-08-11 14:10:53

Centos下搭建 nginx+uwsgi+python

时间:2013-08-17 13:54来源:quanpower 作者:本站  点击:862次


用python做web应用最麻烦的还是配置服务器了,此话不假,光中间件就有好几种选择,fastcgi、wsgi、uwsgi,难 免让人眼花缭乱。 而听说uwsgi的效率是fastcgi和wsgi的10倍,因此初学python的我就有点跃跃欲试了,打算在centos下搭建个 nginx+uwsgi+python玩玩。

下面是本人经过google和亲身实践所得:

准备工作:

yum install python-devel libxml2-devel python-setuptools zlib-devel wget pcre-devel gcc make

编译安装nginx:

cd /tmp
    wget   tar -zxvf   ./configure				//此处可能会提示有些library未安装,安装完再运行此命令检查即可
    make;make install		//确认无误,编译安装

编译安装uwsgi:

wget  tar -zxvf 
 cd  python setup.py build
    make
    mv uwsgi /usr/bin		//将编译好的文件移动到此处

配置nginx

vim /usr/local/nginx/conf/nginx.conf

在server下的location下增加以下2行

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

	
	
	
	

新建test.py文件,内容如下:

def application(env, start_response):
        start_response('200 OK', [('Content-Type','text/html')])
        return "Hello World"

然后在终端运行:

/usr/local/nginx/sbin/nginx
    uwsgi -s 127.0.0.1:9001 --wsgi-file test.py  (居然没有采用9001端口端)改为:
        uwsgi --http :9001 --wsgi-file test.py   采用了9001端口。 


二,
	

1. 软件下载地址:

uwsgi 

wget uwsgi-latest.tar.gz

flup 

wget

django

wget

2. 安装

flup和django   都是用 python setup.py install

uwsgi安装 

cd  uwsgi-0.9.6.8
python uwsgiconfig.py --build
cd nginx
cp uwsgi_params /usr/local/nginx/conf/

 3. 建立项目目录

cd /root
django-admin.py startproject  my_django

vi uwsgi.xml

 
  0.0.0.0:8000 
  20 
  true 
  /usr/local/nginx/uwsgi.pid 
  2 
  django_wsgi  #这个文件下面要建立
  /root/my_django   #刚才建立项目的路径
  true 
  true 
  true 
  true 
  6048 

vi django_wsgi

import os
import django.core.handlers.wsgi
os.environ['DJANGO_SETTINGS_MODULE'] = 'my_django.settings'    #这里的my_django.settings 表示 "项目名.settings"
application = django.core.handlers.wsgi.WSGIHandler()

4. 添加nginx配置

server { 
        listen  80; 
         server_name 192.168.0.100; 
   
          location / { 
            root /root/my_django;
            uwsgi_pass   127.0.0.1:8000; 
            include     uwsgi_params; 
            access_log  off;  }
 

5. 启动uwsgi和nginx

/usr/local/nginx/sbin/nginx
uwsgi -x /root/my_django/uwsgi.xml &

好了,打开浏览器测试下吧

二,安装Django
Download:   
	
	

解压安装:

  tar xzvf Django-1.6b1.tar.gz

  cd Django-1.6b1   sudo python setup.py install 不到1分钟左右,就安装好了;如果安装过django需要卸载以后再安装;

  执行django-admin.py startproject PROJECT_NAME 创建项目

  其中PROJECT_NAME是项目的名称,这里假设项目的名称是Blog   那么可以得到这样的一个目录树:

Blog/ |____ manager.py |____ Blog/     |____ urls.py     |____ wsgi.py     |____ __init__.py     |____ settings.py

  执行 django-admin.py startproject ztgame 创建名为ztgame的项目

  执行  python ztgame/manage.py runserver 0.0.0.0:80 即可开启服务,输入IP,就可以打开Django的默认欢迎页面了;如下图:

在django项目主目录下创建 django_wsgi.py



[plain] view plaincopy
  1. import os,sys  
  2.   
  3. if not os.path.dirname(__file__) in sys.path[:1]:  
  4.     sys.path.insert(0, os.path.dirname(__file__))  
  5. os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'  
  6.   
  7. from django.core.handlers.wsgi import WSGIHandler  
  8. application = WSGIHandler()  
3)在django项目主目录下创建 django.xml



[plain] view plaincopy
  1.   
  2.     127.0.0.1:3031  
  3.     /home/hysia/website/blog  
  4.     ..  
  5.     wsgi  
  6.     /var/log/uwsgi/uwsgi.log  
  7.   
接下来运行



[plain] view plaincopy
  1. uwsgi -x /home/example/django.xml  


OK,输入127.0.0.1就能看到 django worked!

不过每次重启服务器都需要输上面那行代码比较麻烦,可以将代码复制到 /etc/init.d/rc.local ,这样开机就自动启动

从网上找了段代码也可以试试,或者将下面代码copy到 /etc/init.d/uwsgi


[plain] view plaincopy
  1. #!/bin/bash  
  2.   
  3. PORT=3031  
  4. PROCESSES=4  
  5. LOG=/var/log/uwsgi  
  6.   
  7. PID=`pidof -o %PPID /usr/bin/uwsgi`  
  8.   
  9. . /etc/rc.conf  
  10. . /etc/rc.d/functions  
  11.   
  12. case "$1" in  
  13.   start)  
  14.     stat_busy "Starting uwsgi"  
  15.     if [ -n "$PID" ]; then  
  16.       stat_busy "uwsgi is already running"  
  17.       stat_die  
  18.     else  
  19.       uwsgi -s ":$PORT" -M -p $PROCESSES -d $LOG &> /dev/null  
  20.       add_daemon uwsgi  
  21.       stat_done  
  22.     fi  
  23.     ;;  
  24.   stop)  
  25.     stat_busy "Stopping uwsgi"  
  26.     killall -QUIT uwsgi &> /dev/null  
  27.     rm_daemon uwsgi  
  28.     stat_done  
  29.     ;;  
  30.   restart)  
  31.     $0 stop  
  32.     sleep 1  
  33.     $0 start  
  34.     ;;  
  35.   *)  
  36.     echo "usage: $0 {start|stop|restart}"    
  37. esac  
  38. exit 0  


阅读(2592) | 评论(0) | 转发(0) |
0

上一篇:Centos IP、DNS设置

下一篇:WSGI初探

给主人留下些什么吧!~~