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

nginx+uwsgi+django整合部署

2015-12-28 15:13 821 查看
#!/bin/bash
#
#CentOS6.x系统

#1、安装依赖包
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
yum -y install libxml*

#2、python2.7安装
mkdir -p /data/source
cd /data/source/
wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz tar zxvf Python-2.7.8.tgz
cd Python-2.7.8
./configure --prefix=/usr/local/python2.7
make && make install
mv /usr/bin/python /usr/bin/python_old
ln -s /usr/local/python2.7/bin/python /usr/bin/
sed -i 's@#!/usr/bin/python@#!/usr/bin/python2.6@' /usr/bin/yum
echo "export PATH=$PATH:/usr/local/python2.7/bin:/usr/local/python2.7/lib" >> /etc/profile
source /etc/profile

#3、安装easy_install工具
cd /data/source/
wget https://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz tar zxvf distribute-0.6.49.tar.gz
cd distribute-0.6.49
python setup.py install
easy_install --version

#4、安装pip工具
easy_install pip

#5、安装uwsgi
pip install uwsgi

#6、安装django
pip install django==1.7.11

#7、安装 Nginx
cd /data/source/
mkdir -p /data/soft
wget http://nginx.org/download/nginx-1.5.6.tar.gz tar zxvf nginx-1.5.6.tar.gz
cd nginx-1.5.6
./configure --prefix=/data/soft/nginx --with-http_stub_status_module --with-http_gzip_static_module
make && make install

#8、创建mysite项目
mkdir /data/www
cd /data/www/
django-admin.py startproject mysite

#9、创建uwsgi和static目录
mkdir -p /data/www/mysite/uwsgi
mkdir -p /data/www/mysite/static

#10、在uwsgi目录创建相关配置文件
touch /data/www/mysite/uwsgi/django_wsgi.py
touch /data/www/mysite/uwsgi/uwsgi.ini
touch /data/www/mysite/uwsgi/uwsgi.log
touch /data/www/mysite/uwsgi/uwsgi.pid

#11、配置uwsgi.ini文件
echo '[uwsgi]
socket = 127.0.0.1:8000
master = true
module = django_wsgi
processes = 8
listen = 120
enable-threads = true
daemonize = /data/www/mysite/uwsgi/uwsgi.log
pidfile = /data/www/mysite/uwsgi/uwsgi.pid
pythonpath = /data/www/mysite
pythonpath = /data/www/mysite/mysite
pythonpath = /data/www/mysite/uwsgi
buffer-size = 32768
reload-mercy = 8
vacuum = true' >/data/www/mysite/uwsgi/uwsgi.ini

#12、配置django.wsgi.py文件(vim /data/www/mysite/uwsgi/django_wsgi.py)
#!/usr/bin/env python
#coding:utf-8
import os
os.environ['PYTHON_EGG_CACHE'] = '/<a path>/.python-eggs/' #为了防止Permission denied的web请求访问错误。
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

#13、修改nginx配置文件(vim /data/soft/nginx/conf/nginx.conf)
server {
listen 80;
server_name 127.0.0.1;

location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
uwsgi_read_timeout 2;
}

location /static {
expires 30d;
autoindex on;
add_header Cache-Control private;
alias /data/www/mysite/static/;
}

#14、启动uwsgi,并设置开机自启动。
uwsgi --ini /data/www/mysite/uwsgi/uwsgi.ini
echo 'uwsgi --ini /data/www/mysite/uwsgi/uwsgi.ini' >> /etc/rc.local
#启动:uwsgi --ini /data/www/mysite/uwsgi/uwsgi.ini
#停止:uwsgi --stop /data/www/mysite/uwsgi/uwsgi.pid
#重新加载: uwsgi --reload /data/www/mysite/uwsgi/uwsgi.pid

#15、启动nginx
/data/soft/nginx/sbin/nginx
#启动:/data/soft/nginx/sbin/nginx
#停止:/data/soft/nginx/sbin/nginx -s stop
#重新加载:/data/soft/nginx/sbin/nginx -s reload

#16、配置nginx自启动服务
echo '#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /data/soft/nginx/conf/nginx.conf
# pidfile: /data/soft/nginx/logs/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/data/soft/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/data/soft/nginx/conf/nginx.conf"

lockfile=/var/lock/subsys/nginx

start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
configtest || return $?
stop
start
}

reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}

force_reload() {
restart
}

configtest() {
$nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
status $prog
}

rh_status_q() {
rh_status >/dev/null 2>&1
}

case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac' > /etc/init.d/nginx

#17、授执行权限,并设置自启动
chmod 755 /etc/init.d/nginx
service nginx restart
chkconfig --add nginx
chkconfig nginx on

本文出自 “kundylee” 博客,请务必保留此出处http://kundylee.blog.51cto.com/6605245/1729164
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: