That looks simpler than mine. Here is what I came up with (Fabric script): Credit: http://library.linode.com/web-servers/nginx/python-uwsgi/ubuntu-10.04-lucid
The two init.d files are: https://library.linode.com/web-servers/nginx/installation/reference/init-deb.sh https://library.linode.com/web-servers/nginx/python-uwsgi/reference/init-deb.sh (must edit "OWNER=www-data") === fabfile.py === def setup_nginx(): sudo('apt-get -y install build-essential psmisc python-dev libxml2 libxml2-dev python-setuptools') sudo('cd /opt; wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz') sudo('cd /opt; tar -zxvf uwsgi*') sudo('mv /opt/uwsgi*/ /opt/uwsgi/') sudo('cd /opt/uwsgi/; python setup.py install') sudo('chown -R www-data:www-data /opt/uwsgi') sudo('touch /var/log/uwsgi.log') sudo('chown www-data /var/log/uwsgi.log') sudo('apt-get -y install libpcre3-dev build-essential libssl-dev') sudo('cd /opt; wget http://nginx.org/download/nginx-0.8.54.tar.gz') sudo('cd /opt; tar -zxvf nginx*') sudo('cd /opt/nginx*/; ./configure --prefix=/opt/nginx --user=www-data --group=www-data --with-http_ssl_module') sudo('cd /opt/nginx*/; make') sudo('cd /opt/nginx*/; make install') sudo('cp /opt/uwsgi*/nginx/uwsgi_params /opt/nginx/conf/uwsgi_params') put('init-nginx', '/etc/init.d/nginx') sudo('chmod +x /etc/init.d/nginx') sudo('/usr/sbin/update-rc.d -f nginx defaults') sudo('/etc/init.d/nginx start') put('init-uwsgi', '/etc/init.d/uwsgi') sudo('chmod +x /etc/init.d/uwsgi') sudo("""echo 'PYTHONPATH=/var/web2py/ MODULE=wsgihandler' >> /etc/default/uwsgi""") sudo('/usr/sbin/update-rc.d -f uwsgi defaults') sudo('/etc/init.d/uwsgi start') sudo('rm /opt/nginx/conf/nginx.conf') put('nginx.conf', '/opt/nginx/conf/nginx.conf') sudo('cd /opt/nginx/conf; openssl genrsa -out server.key 1024') sudo('cd /opt/nginx/conf; openssl req -batch -new -key server.key -out server.csr') sudo('cd /opt/nginx/conf; openssl x509 -req -days 1780 -in server.csr -signkey server.key -out server.crt') sudo('/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; # HTTP server server { listen 80; server_name ""; 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 ""; 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; } } }