centos 6.5下搭建django+nginx+uwsgi环境
一.编译安装python
在centos上安装Python方法:
1.安装必要的开发包
[root@localhost ~]# yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
2.下载python 2.7.10
centos 6.5自带的有Python2.6.6版本,这里使用2.7.10版本
[root@localhost ~]# wget
[root@localhost ~]# cd /usr/local
[root@localhost src]# tar xf /root/Python-2.7.10.tgz -C ./
3.编译安装
[root@localhost Python-2.7.10]# ./configure --prefix /etc/python --enable-unicode=ucs4
[root@localhost Python-2.7.10]# make
[root@localhost Python-2.7.10]# make altinstall
安装完毕后可使用python2.7命令进入python2.7环境;
4.安装python包管理
4.1 安装setuptools
[root@localhost python]# /etc/python/bin/python2.7 ez_setup.py
4.2 安装pip
[root@localhost python]# /etc/python/bin/easy_install-2.7 pip
pip安装好后,可以用pip做如下事情:
install Install packages.
download Download packages.
uninstall Uninstall packages.
freeze Output installed packages in requirements format.
list List installed packages.
show Show information about installed packages.
search Search PyPI for packages.
wheel Build wheels from your requirements.
hash Compute hashes of package archives.
completion A helper command used for command completion
二.安装uwsgi
uwsgi下载地址:
1.安装
[root@localhost ~]# /etc/python/bin/pip2.7 install uwsgi
[root@localhost ~]# /etc/python/bin/uwsgi --version
2.0.12
2.创建页面测试uwsgi是否正常
[root@localhost ~]# vim test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello,the world!!!"
3.在终端运行
[root@localhost ~]# /etc/python/bin/uwsgi --http :8001 --wsgi-file test.py
uwsgi具体选项说明可以uwsgi --help查看
[root@localhost ]# ps -ef | grep uwsgi
root 2822 9321 0 20:49 pts/1 00:00:00 /etc/python/bin/uwsgi --http :8001 --wsgi-file test.py
root 2823 2822 0 20:49 pts/1 00:00:00 /etc/python/bin/uwsgi --http :8001 --wsgi-file test.py
root 2842 9274 0 20:51 pts/0 00:00:00 grep uwsgi
4.在浏览器地址栏中输入http://本地IP:8001,若有Hello,the world!!!输出则安装正确
三.安装django
1.安装
[root@localhost ~]# /etc/python/bin/pip2.7 install django
2.测试django是否正常运行
[root@localhost ~]# /etc/python/bin/django-admin.py startproject demosite
[root@localhost ~]# cd demosite/
[root@localhost demosite]# ls
demosite manage.py
[root@localhost demosite]# /etc/python/bin/python2.7 manage.py runserver 0.0.0.0:8002
[root@localhost nginx]# ps -ef | grep python2.7
root 2880 9321 1 21:08 pts/1 00:00:01 /etc/python/bin/python2.7 manage.py runserver 0.0.0.0:8002
root 2883 2880 6 21:08 pts/1 00:00:04 /etc/python/bin/python2.7 manage.py runserver 0.0.0.0:8002
root 2893 9274 1 21:10 pts/0 00:00:00 grep python2.7
django正常运行;
四.安装Nginx
Nginx已经在之前安装过了,这里省略其安装过程;
http://blog.chinaunix.net/uid-30212356-id-5672283.html
五.配置uwsgi
1.在/etc目录下创建uwsgi配置文件
[root@localhost ~]# vim /etc/uwsgi9090.ini
[uwsgi]
socket = 127.0.0.1:9090 #指定uwsgi的客户端将要连接的socket的路径或者地址
master = true #启动主进程
vhost = true #开启虚拟主机模式
no-stie = true #不加载python的site.py模块
workers = 2 #为预先派生模式设置工作进程的数量
reload-mercy = 10 #设置等待平滑重启一个工作子进程结束的超时时间(秒)
vacuum = true #当服务器退出的时候自动删除unix socket文件和pid文件
max-requests = 1000 #当工作进程处理的请求数没达到设定值时,该进程会被回收重用
limit-as = 512 #限制每个uWSGI的进程的虚拟内存使用数
buffer-size = 30000 #设置用于uwsgi包解析的内部缓存区大小,默认是4k
pidfile = /var/run/uwsgi9090.pid #指定pid文件位置
daemonize = /var/log/uwsgi9090.log #使进程在后台运行,指定日志文件的了位置
具体参数说明可参考如下资料:
uwsgi参数官方说明:
中文版:
http://www.cnblogs.com/zhouej/archive/2012/03/25/2379646.html
2.创建uwsgi控制脚本(根据自己安装uwsgi的路径更改脚本部分内容)
[root@localhost ~]# cat /etc/rc.d/init.d/uwsgi9090
#! /bin/sh
# chkconfig: 2345 55 25
# Description: Startup script for uwsgi webserver on Debian. Place in /etc/init.d and
# run 'update-rc.d -f uwsgi defaults', or use the appropriate command on your
# distro. For CentOS/Redhat run: 'chkconfig --add uwsgi'
### BEGIN INIT INFO
# Provides: uwsgi
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the uwsgi web server
# Description: starts uwsgi using start-stop-daemon
### END INIT INFO
# Author: licess
# website:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/etc/python/bin
DESC="uwsgi daemon"
NAME=uwsgi9090
DAEMON=/etc/python/bin/uwsgi
CONFIGFILE=/etc/$NAME.ini
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON $CONFIGFILE || echo -n "uwsgi already running"
}
do_stop() {
$DAEMON --stop $PIDFILE || echo -n "uwsgi not running"
rm -f $PIDFILE
echo "$DAEMON STOPED."
}
do_reload() {
$DAEMON --reload $PIDFILE || echo -n "uwsgi can't reload"
}
do_status() {
ps aux|grep $DAEMON
}
case "$1" in
status)
echo -en "Status $NAME: \n"
do_status
;;
start)
echo -en "Starting $NAME: \n"
do_start
;;
stop)
echo -en "Stopping $NAME: \n"
do_stop
;;
reload|graceful)
echo -en "Reloading $NAME: \n"
do_reload
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload}" >&2
exit 3
;;
esac
exit 0
将uwsgi其添加进服务:
[root@localhost ~]# chkconfig --add uwsgi9090
3.设置Nginx
修改server段部分配置如下:
server {
listen 80;
server_name 192.168.85.128;
#charset koi8-r;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9090; #和uwsgi中的配置一致
uwsgi_param UWSGI_SCRIPT demosite.wsgi; #入口文件,即wsgi.py相对于项目根目录的位置,这个.相当于一层目录
uwsgi_param UWSGI_CHDIR /root/demosite; #项目根目录
index index.html;
}
六.测试
1.上述配置完成后开启uwsgi和Nginx服务
[root@localhost ~]# service uwsgi9090 start
Starting uwsgi9090:
[uWSGI] getting INI configuration from /etc/uwsgi9090.ini
[root@localhost ~]# nginx -c /etc/nginx/nginx.conf
[root@localhost ~]# ps -ef | grep uwsgi
root 3074 1 0 09:26 ? 00:00:00 /etc/python/bin/uwsgi /etc/uwsgi9090.ini
root 3075 3074 0 09:26 ? 00:00:00 /etc/python/bin/uwsgi /etc/uwsgi9090.ini
root 3076 3074 0 09:26 ? 00:00:01 /etc/python/bin/uwsgi /etc/uwsgi9090.ini
root 3085 3046 0 09:30 pts/0 00:00:00 grep uwsgi
[root@localhost ~]# ps -ef | grep nginx
root 3078 1 0 09:27 ? 00:00:00 nginx: master process nginx -c /etc/nginx/nginx.conf
nginx 3079 3078 0 09:27 ? 00:00:00 nginx: worker process
root 3087 3046 0 09:30 pts/0 00:00:00 grep nginx
2.在浏览器地址栏中输入http://本地IP
文章来源:
http://www.cnblogs.com/xiongpq/p/3381069.html
可参考文章: