2011-03-17 17 views
15

web2py es un impresionante marco de Python que tiene una gran documentación que incluye varias implementaciones recipes. Sin embargo, lo que echo de menos allí es la receta para implementar usando nginx (preferiblemente con uwsgi). Hay algunas notas incompletas en la web (como here), pero no pude encontrar ninguna guía completa e independiente. Entonces, agradezco tu ayuda.¿Cómo depilar web2py usando nginx?

Respuesta

12

Bien, mirando más de cerca en la lista de correo electrónico web2py que he vinculado anteriormente, me di cuenta de que la solución copmlete ya está allí. Pude seguir las instrucciones y, gracias a la brillante publicación de pbreit, ahora mi implementación funciona como un encanto (usando solo 38MB de RAM en estado inactivo) con nginx + uwsgi.

Aquí están las partes que utilicé (simplemente desglosé el fabfile.py para usarlo en la línea de comandos) Nota: donde hay 'put (' .... 'Utilicé el editor de nano texto para crear y editar archivos

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/; 
     } 
    } 

} 

Derivado de web2py email list Con la ayuda de this Linode publicar

+1

cuenta que este archivo de configuración tiene un poco de trayectoria reasignación ... parece asumir una aplicación de inicio. – Massimo

+0

wget -O init-deb.sh http://library.linode.com/assets/661-init-deb.sh – Unitech

+0

@massimo: ¿qué se debe cambiar para admitir varias aplicaciones? – hoju