2011-03-17 17 views
15

web2py è un fantastico framework python con una grande documentazione che include diverse distribuzioni recipes. Eppure quello che mi manca è la ricetta per la distribuzione usando nginx (preferibilmente con uwsgi). Ci sono alcune note incomplete sul web (come here), ma non sono riuscito a trovare alcuna guida completa e autonoma. Quindi, apprezzo il tuo aiuto.Come deply web2py usando nginx?

risposta

12

OK, guardando più vicino alla mailing list di web2py che ho linkato sopra, ho capito che la soluzione copmlete è già lì. Potrei seguire le istruzioni e, grazie al brillante post di pbreit, ora la mia implementazione funziona come un incantesimo (usando solo 38MB di RAM in stato di inattività) con nginx + uwsgi.

Qui ci sono le parti che ho usato (ho appena messo a nudo giù per la fabfile.py di utilizzarlo su riga di comando) Nota: dove c'e 'messo (' ....' ho usato nano editor di testo per creare e modificare i file

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

} 

derivato dalla web2py email list Con l'aiuto di this Linode inviare

+1

mente che questo file di configurazione ha un certo percorso rimappatura ... sembra assumere un app init. – Massimo

+0

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

+0

@massimo: cosa deve essere modificato per supportare più app? – hoju