nginx+uwsgi部署web2py

第一次在nginx上部署web2py花了我3天时间,找资料找得晕头转向,偏偏google这位大爷的了传染病,已经一个多星期都不能用了。唉,最后在我使尽了坑蒙拐骗偷这个终极绝招,这小子投降了。下面奉上我的部署脚本:
#!/bin/bash
echo 'setup-web2py-nginx-uwsgi-ubuntu-precise.sh'
echo 'Requires Ubuntu > 12.04 and installs Nginx + uWSGI + Web2py'


# Get web2py admin password
echo "Web2py admin password:"
read  web2py_password
# Get webfaction application name
echo "Webfaction application name:"
read  webfaction_app_name
# Get webfaction port number
echo "Webfaction application port:"
read  webfaction_app_port
# port betweet nginx and uwsgi
echo "Port number for communication between nginx and uswgi (eg. 9001):"
read nginx_uwsgi_port
#获取app的地址
echo "svn_adderess of the project:"
read files_address
#routes.py中的控制器
echo 'app default_controller:'
read controler
#routes.py中的函数
echo 'app default_function:'
read functions
#安装svn
sudo aptitude install subversion


mkdir /opt/${webfaction_app_name}
mkdir /opt/${webfaction_app_name}/down
cd /opt/${webfaction_app_name}/down


#安装nginx
echo "install nginx---------------------"
wget http://nginx.org/download/nginx-1.0.11.tar.gz
tar -zxvf nginx-1.0.11.tar.gz
cd nginx-1.0.11
./configure \
  --prefix=/opt/${webfaction_app_name}/nginx \
  --sbin-path=/opt/${webfaction_app_name}/nginx/sbin/nginx \
  --conf-path=/opt/${webfaction_app_name}/nginx/nginx.conf \
  --error-log-path=/opt/${webfaction_app_name}/nginx/log/error.log \
  --pid-path=/opt/${webfaction_app_name}/nginx/run/nginx.pid  \
  --lock-path=/opt/${webfaction_app_name}/nginx/lock/nginx.lock \
  --with-http_gzip_static_module \
  --http-log-path=/opt/${webfaction_app_name}/nginx/log/access.log \
  --http-client-body-temp-path=/opt/${webfaction_app_name}/nginx/tmp/client/ \
  --http-proxy-temp-path=/opt/${webfaction_app_name}/nginx/tmp/proxy/ \
  --http-fastcgi-temp-path=/opt/${webfaction_app_name}/nginx/tmp/fcgi/
make && make install
cd /opt/${webfaction_app_name}/
mkdir logs
mkdir nginx/tmp
mkdir nginx/tmp/client
echo "config nginx----------------"
cd nginx
echo "
worker_processes  2;
events {
    worker_connections  1024;
}
http {
    access_log  /opt/${webfaction_app_name}/logs/access_appname.log  combined;
    error_log   /opt/${webfaction_app_name}/logs/error_appname.log   crit;


    include                mime.types;
    client_max_body_size   5m;
    default_type           application/octet-stream;
    gzip_static            on;
    gzip_vary              on;
    sendfile               on;
    tcp_nodelay            on;


    server {
        listen ${webfaction_app_port};
        server_name  localhost;
        location ~* /(\w+)/static/ {
            root /opt/${webfaction_app_name}/web2py/applications/;
        }
        location / {
            uwsgi_pass      127.0.0.1:${nginx_uwsgi_port};
            include         uwsgi_params;
        }
    }
}
" > nginx.conf
#安装uwsgi
echo "install uwsgi---------------------------------"
cd /opt/${webfaction_app_name}
mkdir uwsgi
cd /opt/${webfaction_app_name}/down
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar -zxvf  uwsgi-latest.tar.gz
cd uwsgi-2.0.5.1
#python setup.py install
make -f Makefile
cp uwsgi /opt/${webfaction_app_name}/uwsgi/
cd  /opt/${webfaction_app_name}/uwsgi
echo "<uwsgi>
    <socket>127.0.0.1:${nginx_uwsgi_port}</socket>
    <workers>4</workers>
    <no-orphans/>
    <pythonpath>/opt/${webfaction_app_name}/web2py</pythonpath>
    <pidfile>/opt/${webfaction_app_name}/uwsgi/uwsgi.pid</pidfile>
    <daemonize>/opt/${webfaction_app_name}/uwsgi/uwsgi.log</daemonize>
    <mount>/=wsgihandler:application</mount>
</uwsgi>" > uwsgi.xml


#安装web2py
echo "install web2py------------------"
cd /opt/${webfaction_app_name}
wget http://www.web2py.com/examples/static/web2py_src.zip
unzip web2py_src.zip
cp  web2py/handlers/wsgihandler.py  web2py/
cd web2py/
echo "default_application = '${webfaction_app_name}'
default_controller = '${controler}'
default_function = '${functions}'" > routes.py
python -c "from gluon.main import save_password;save_password('${web2py_password}',443)"
cd ..
rm  web2py_src.zip
cd /opt/${webfaction_app_name}/web2py/applications/
svn co ${files_address}
cd /opt/${webfaction_app_name}


#nginx,uwsgi启动控制脚本
touch web2py_control.sh
echo "
#!/bin/bash


install_path="/opt/${webfaction_app_name}"


function killall(){
   ps -e | grep $1 | {
   while read pid tty time cmd; 
   do
      echo "Killing $pid ==> $cmd"
      kill -9 $pid
   done
}
#exit
}


function service_control(){
    if  [ $1 = nginx -a $2 = start ]; then
        $install_path/$1/sbin/nginx -c  $install_path/$1/nginx.conf
        echo "nginx start ..... [ok]"
        exit
    elif [ $1 = nginx -a $2 = stop ]; then
        killall $1 -QUIT
        echo "nginx stop ...... [ok]"
        exit
    elif [ $1 = nginx -a $2 = restart ]; then
        killall $1 -QUIT
        $install_path/$1/sbin/nginx  -c $install_path/$1/nginx.conf
        echo "nginx restart ..... [ok]"
        exit
    elif [ $1 = "uwsgi" -a $2 = start ];then
             
         $install_path/$1/uwsgi -x $install_path/$1/uwsgi.xml
         echo "uwsgi start ...... [ok]"
         exit
     elif [ $1 = "uwsgi" -a $2 = stop ];then
         killall $1 -QUIT
         echo "uwsgi stop ...... [ok]"
         exit
     elif [ $1 = "uwsgi" -a $2 = restart ];then
         killall $1 -QUIT
         $install_path/$1/uwsgi  -x $install_path/$1/uwsgi.xml
         echo "uwsgi restart ......[ok]"
         exit
fi
}
service_control $1 $2"> web2py_control.sh


chmod +x web2py_control.sh
# start nginx
/opt/${webfaction_app_name}/nginx/sbin/nginx -c /home/${webfaction_app_name}/nginx/nginx.conf


# start uwsgi
/opt/${webfaction_app_name}/uwsgi/uwsgi -x /opt/${webfaction_app_name}/uwsgi/uwsgi.xml
rm -rf down

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值