• nginx + uwsgi en modo vhost

    View Comments

    Finalmente hice andar nginx con uwsgi. Al principio lo hice funcionar con supervisor + uwsgi corriendo en un socket para cada sitio, pero luego de intentar (ya que no encontré documentación de cómo hacerlo) pude poner uwsgi en modo vhost para solo tener una instancia corriendo para todos los sitios.

    Desde supervisor, uwsgi esta funcionando con los siguientes parametros:

    [program:uwsgi_vhost]
    command=/usr/local/bin/uwsgi
      --socket 127.0.0.1:1088
      --processes 3
      --master
      --uid www-data
      --no-site
      --vhost
      --reload-os-env
    
    user=www-data
    autostart=true
    autorestart=true
    stdout_logfile=/var/log/uwsgi_main.log
    redirect_stderr=true
    stopsignal=QUIT

    En nginx , un virtualhost de ejemplo (netpastiche.com.ar)

    server {
        listen   xx.xx.xxx.xx:80;
        server_name  netpastiche.com.ar;
    
        # uwsgi for django
        location / {
            include uwsgi_params;
            uwsgi_param UWSGI_CHDIR /path/to/netpastiche.com.ar/public_html;
            uwsgi_param UWSGI_MODULE netpastiche_wsgi;
            uwsgi_pass  127.0.0.1:1088;
        }
        # static content
        location /static {
            root    /path/to/netpastiche.com.ar/public_html;
            expires 24h;
        }
    }

    Lo mas dificil fue hacer funcionar el sitio, ya que no estaba incluyendo en el pythonpath los paths donde estaba django instalado (netpastiche_uwsgi.py)

    import os, sys
    
    sys.path.append(os.path.dirname(__file__))
    sys.path.append('/usr/lib/pymodules/python2.6')
    sys.path.append('/usr/local/lib/python2.6/dist-packages/')
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
    import django.core.handlers.wsgi
    application = django.core.handlers.wsgi.WSGIHandler()
  • blog comments powered by Disqus