2011-03-17 69 views
15

web2py是一个很棒的python框架,它有很多文档,包括几个部署recipes。然而我错过的是使用nginx进行部署的配方(最好使用uwsgi)。网络上有一些不完整的笔记(如here),但我找不到任何完整的独立指南。所以,我感谢你的帮助。如何使用nginx deply web2py?

回答

12

好吧,仔细查看我上面链接的web2py电子邮件列表,我发现copmlete解决方案已经存在。我可以按照说明操作,并感谢pbreit的精彩帖子,现在我的部署像nginx + uwsgi的魅力一样(在空闲状态下仅使用38MB RAM)。

以下是我使用过的部分(我刚删除了fabfile.py以便在命令行上使用它) 注意:哪里有put('....')我使用nano文本编辑器创建并编辑文件

apt-get -y install build-essential psmisc python-dev libxml2 libxml2-dev python-setuptools 
cd /opt; 
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz 
tar -zxvf uwsgi* 
mv /opt/uwsgi*/ /opt/uwsgi/ 
cd /opt/uwsgi/; python setup.py install 
chown -R www-data:www-data /opt/uwsgi 
touch /var/log/uwsgi.log 
chown www-data /var/log/uwsgi.log 
apt-get -y install libpcre3-dev build-essential libssl-dev 
cd /opt; wget http://nginx.org/download/nginx-0.8.54.tar.gz 
cd /opt; tar -zxvf nginx* 
cd /opt/nginx*/; ./configure --prefix=/opt/nginx --user=nginx --group=nginx --with-http_ssl_module 
cd /opt/nginx*/; make 
cd /opt/nginx*/; make install 
adduser --system --no-create-home --disabled-login --disabled-password --group nginx 
cp /opt/uwsgi*/nginx/uwsgi_params /opt/nginx/conf/uwsgi_params 

wget https://library.linode.com/web-servers/nginx/installation/reference/init-deb.sh 
mv init-deb.sh /etc/init.d/nginx 

chmod +x /etc/init.d/nginx 
/usr/sbin/update-rc.d -f nginx defaults 
/etc/init.d/nginx start 

cd /opt/ 
wget https://library.linode.com/web-servers/nginx/python-uwsgi/reference/init-deb.sh 
mv /opt/init-deb.sh /etc/init.d/uwsgi 
chmod +x /etc/init.d/uwsgi 

echo 'PYTHONPATH=/var/web2py/ MODULE=wsgihandler' >> /etc/default/uwsgi 
/usr/sbin/update-rc.d -f uwsgi defaults 
/etc/init.d/uwsgi start 


rm /opt/nginx/conf/nginx.conf 
# modify nginx.conf below and save it as /opt/nginx/conf/nginx.conf 
cd /opt/nginx/conf; openssl genrsa -out server.key 1024 
cd /opt/nginx/conf; openssl req -batch -new -key server.key -out server.csr 
cd /opt/nginx/conf; 
openssl x509 -req -days 1780 -in server.csr -signkey server.key -out server.crt 

/etc/init.d/nginx restart 

nginx.conf

 user www-data; 
    worker_processes 4; 

    events { 
     worker_connections 1024; 

    } 

    http { 
     include  mime.types; 
     default_type application/octet-stream; 
     keepalive_timeout 2; 
     sendfile  on; 
     #tcp_nopush  on; 
     tcp_nodelay  on; 
     gzip on; 
     server { 
      listen  80; 
      server_name example.com www.example.com; 

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

      location /static { 
       root /var/web2py/applications/init/; 
      } 
     } 

    # HTTPS server 
    server { 
     listen  443; 
     server_name www.example.com example.com; 
     ssl     on; 
     ssl_certificate  /opt/nginx/conf/server.crt; 
     ssl_certificate_key /opt/nginx/conf/server.key; 

     location/{ 
      uwsgi_pass 127.0.0.1:9001; 
      include uwsgi_params; 
      uwsgi_param  UWSGI_SCHEME $scheme; 
     } 


    location /static { 
      root /var/web2py/applications/init/; 
     } 
    } 

} 

web2py email list 0123派生从this的Linode帮助发布

+1

记住,这个配置文件有一定的路径重新映射......似乎假定一个初始化程序。 – Massimo 2011-04-10 23:15:01

+0

wget -O init-deb.sh http://library.linode.com/assets/661-init-deb.sh – Unitech 2011-10-18 23:33:03

+0

@massimo:应该更改以支持多个应用程序? – hoju 2012-02-09 00:33:43