环境:
系统:Centos 6.3 64位
Nginx版本:1.4.4
Django版本:1.5.5
Python版本:2.6.6
Uwsgi版本:1.4.2
安装MySQL-python:
yum install -y MySQL-python
也可以用源码包进行安装,下载地址:http://sourceforge.net/projects/mysql-python/files/mysql-python/
安装好后,进入python,import MySQLdb看下是否正常,如果这里出错,那么以后你项目中使用到mysql时,将会出错,在uwsgi给出的信息中就是导入MySQLdb出错。
安装nginx:
cd /usr/local/src useradd www wget http://nginx.org/download/nginx-1.4.4.tar.gz tar xf nginx-1.4.4.tar.gz cd nginx-1.4.4 ./configure --prefix=/usr/local/nginx --user=www --group=www make make install
更多的安装参数,可自行定义,我这里只是用最简单的几个参数
安装uwsgi:
cd /usr/local/src wget http://projects.unbit.it/downloads/uwsgi-1.4.2.tar.gz tar -xf uwsgi-1.4.2.tar.gz cd uwsgi-1.4.2 make
cp uwsgi /usr/bin
uwsgi最新版本有2.x的,官网地址: http://projects.unbit.it/uwsgi/
安装django:
cd /usr/local/src wget 'https://www.djangoproject.com/download/1.5.5/tarball/' tar xf Django-1.5.5.tar.gz cd Django-1.5.5.tar.gz python setup.py install
目前django最新版是1.6.2,用哪个版本,根据自己需求
创建django项目:
项目位置:/python
创建项目方法:
mkdir -p /python cd /python django-admin.py startproject umework
umework 是我的项目名,这个可根据自己的项目名称自定义了,如果你已经有了django项目了,以上创建项目步骤可省略。我这里是把项目放在/python目录下。
配置nginx:
在nginx配置文件中添加以下内容:
vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name umework.linuxyw.com;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9000;
uwsgi_param UWSGI_CHDIR /python/umework;
uwsgi_param UWSGI_SCRIPT django_wsgi;
#access_log off;
access_log /usr/local/nginx/logs/access.log;
}
}
以下是全配置文件,关于性能调优方面,根据自己的情况进行优化:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name umework.linuxyw.com;
location / {
root /python/umework;
include uwsgi_params;
uwsgi_pass 127.0.0.1:9000;
uwsgi_param UWSGI_CHDIR /python/umework;
uwsgi_param UWSGI_SCRIPT django_wsgi;
#access_log off;
access_log /usr/local/nginx/logs/access.log;
}
}
}
配置uwsgi:
在nginx目录中添加一个uwsgi配置文件
vim /usr/local/nginx/conf/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>/python/umework </pythonpath> <pythonpath>/python </pythonpath> <module>django_wsgi</module> <profiler>true </profiler> <memory-report>true </memory-report> <enable-threads>true </enable-threads> <logdate>true </logdate> <limit-as>6048 </limit-as> <daemonize>/dev/null</daemonize> </uwsgi>
socket 这里要跟nginx.conf配置中的uwsgi_pass一致,这里都用127.0.0.1:9000
daemonize 这里是uwsgi的信息,我这里不记录,全导到/dev/null上去了
创建django应用模块:
在项目目录里面,创建以下文件和内容,我的项目在/python/umework/
注意第三行中的umework.settings.这个umework是我的项目名,如果你不是按着我文档做的,就在这里修改成自己的项目名就OK了
vim /python/umework/django_wsgi.py import os os.environ['DJANGO_SETTINGS_MODULE'] = 'umework.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
本文博客:www.linuxyw.com
配置nginx启动脚本:
vim /etc/init.d/nginx
#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
# It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/usr/local/nginx/logs/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
echo "nginx already running...."
exit 1
fi
echo -n $"Starting $prog: "
daemon $nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
return $RETVAL
}
# Stop nginx daemons functions.
stop() {
echo -n $"Stopping $prog: "
killproc $nginxd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
}
reload() {
echo -n $"Reloading $prog: "
#kill -HUP `cat ${nginx_pid}`
killproc $nginxd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|reload|status|help}"
exit 1
esac
exit $RETVAL
配置uwsgi启动脚本:
vim /etc/init.d/uwsgi
#!/bin/bash
# uwsgi script
# it is v.0.0.1 version.
# chkconfig: - 89 19
# description: uwsgi script
# processname: uwsgi
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
uwsgi_config=/usr/local/nginx/conf/uwsgi.xml
uwsgi_pn=`ps aux|grep -v "grep"|grep -c "uwsgi"`
uwsgi_pid=`ps -eo pid,comm|grep uwsgi|sed -n 1p|awk '{print $1}'`
uwsgi_PID=/usr/local/nginx/logs/uwsgi.pid
uwsgi=/usr/bin/uwsgi
RETVAL=0
prog="uwsgi"
# Source function library.
. /etc/rc.d/init.d/functions
if [ $(id -u) != "0" ]; then
printf "Error: You must be root to run this script!\n"
exit 1
fi
# Start nginx daemons functions.
start() {
if [ $uwsgi_pn -gt 5 ];then
action "uwsgi is running!" /bin/true
exit 0
fi
daemon $uwsgi -x ${uwsgi_config}
action "uwsgi start ..." /bin/true
}
# Stop nginx daemons functions.
stop() {
if [ $uwsgi_pn -gt 5 ]
then
kill -9 `ps -eo pid,comm|grep uwsgi|sed -n 1p|awk '{print $1}'`
RETVAL=$?
action "uwsgi stopping ..." /bin/true
else
action "uwsgi not running!" /bin/false
fi
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
*)
echo $"Usage: $prog {start|stop|restart}"
exit 1
esac
exit $RETVAL
启动nginx和uwsgi:
chmod a+x /etc/init.d/nginx chmod a+x /etc/init.d/uwsgi service nginx start service uwsgi start
2016-03-16 18:00:11