Servidor de Produccion nginx+uwsgi+web2py

263 views
Skip to first unread message

FERNANDO VILLARROEL

unread,
Dec 25, 2012, 11:02:40 PM12/25/12
to web2py-...@googlegroups.com
Hola.

Disculpen si esta pregunta esta repetida, pero no estoy muy seguro sobre como configurar mi ambiente de producción, he buscado en google pero no me queda muy claro.

Lo que sucede es que tengo mis sitios web2py hasta ahora corriendo con Apache y los estoy migrando a nginx+uwsgi.

Bueno hasta ahy todo bien,

http://code.google.com/p/web2py/source/browse/scripts/setup-web2py-nginx-uwsgi-ubuntu.sh

Esto lo tengo corriendo en un Ubuntu Server y me funciona perfecto; es decir cuando entro a la IP del server me lleva a la interfaz Welcome de Web2py.

Aqui esta mi duda cuando tenga que servir los dominios:

clientes.midominio.com y administrador.midominio.com


Bueno ahora lo que hice es configurar el host de nginx para los dominios que necesito levantar:

clientes

server {
listen 80;
server_name clientes.midominio.com;
location ~* /(\w+)/static/ {
root /home/www-data/web2py/applications/;
}
location / {
uwsgi_pass 127.0.0.1:9001;
#uwsgi_pass unix:///run/uwsgi/app/web2py/web2py.socket;
include uwsgi_params;
#uwsgi_param UWSGI_SCHEME $scheme;
#uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
}
}
server {
listen 443;
server_name clientes.midominio.com;
ssl on;
ssl_certificate /etc/nginx/ssl/web2py.crt;
ssl_certificate_key /etc/nginx/ssl/web2py.key;
location / {
#uwsgi_pass 127.0.0.1:9001;
uwsgi_pass unix:///run/uwsgi/app/web2py/web2py.socket;
include uwsgi_params;
uwsgi_param UWSGI_SCHEME $scheme;
uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
}

}

server {
listen 80;
server_name administrador.midominio.com;
location ~* /(\w+)/static/ {
root /home/www-data/web2py/applications/;
}
location / {
uwsgi_pass 127.0.0.1:9001;
#uwsgi_pass unix:///run/uwsgi/app/web2py/web2py.socket;
include uwsgi_params;
#uwsgi_param UWSGI_SCHEME $scheme;
#uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
}
}

server {
listen 443;
server_name administrador.midominio.com;
ssl on;
ssl_certificate /etc/nginx/ssl/web2py.crt;
ssl_certificate_key /etc/nginx/ssl/web2py.key;
location / {
#uwsgi_pass 127.0.0.1:9001;
uwsgi_pass unix:///run/uwsgi/app/web2py/web2py.socket;
include uwsgi_params;
uwsgi_param UWSGI_SCHEME $scheme;
uwsgi_param SERVER_SOFTWARE nginx/$nginx_version;
}

}

Luego en routes.py puse lo siguiente:

routers = dict(

# base router
BASE = dict(
default_application = 'welcome',
domains = {
'clientes.midominio.com' : 'cliente',
'administrador.midominio.com':'administrador'
},
applications = ['cliente','administrador','admin'],
controllers = 'DEFAULT'
),
)

Les consulto antes de levantar el server en producción y así evitar algún error del tipo BAD GATEWAY 502.

Tengo dudas con uwsgi lo debo retocar o basta con que tenga:

/etc/apps-enabled/web2py.xml

Debo crear una archivo del tipo clientes.xml y administrador.xml?

Me falta algo o esta bien lo que hice.

Fernando.


Alan Etkin

unread,
Dec 27, 2012, 8:27:31 AM12/27/12
to web2py-...@googlegroups.com
> El miércoles, 26 de diciembre de 2012 01:02:40 UTC-3, visuallinux escribió:Hola.

> Disculpen si esta pregunta esta repetida, pero no estoy muy seguro sobre como configurar mi ambiente de producción, he buscado
> en google pero no me queda muy claro.

Lo más fácil sería tener acceso al servidor de producción para ver si el enrutamiento como está configurado anda.
Tengo mis dudas sobre los parámetros en routes.py, nunca usé ese método y no sé si funcionará. Quizás puedas probar la configuración en desarrollo modificando los parámetros de dominio de nginx/uwsgi/web2py con localhost o 127.0.0.1 para ver si las redirecciones son correctas.

FERNANDO VILLARROEL

unread,
Dec 28, 2012, 2:51:42 PM12/28/12
to web2py-...@googlegroups.com
Hola.

Mi servidor Ubuntu para deploy con nginx + uwsgi corre perfecto. Cuando ingreso al dominio www.midominio.com me despliega la aplicacion Welcome.

Para instalar este ambiente solo corri el script:


Ahora lo que necesito es servir los siguientes subdominios (o virtualhosts de apache)


Estas aplicaciones estan en /home/www-data/web2py/applications/administrador y  /home/www-data/web2py/applications/administrador respectivamente.

Lo que no se es como hacerlo con nginx + uwsgi.

En /etc/nginx/sites-enabled tengo los archicos administrador y clientes con el siguiente contenido cada uno de ellos:

server {
        listen          80;
        server_name     administrador.midominio.com;
        location ~* /(\w+)/static/ {
           root /home/www-data/web2py/applications/;
        }
         location / {
                uwsgi_pass      127.0.0.1:9001;
                #uwsgi_pass      unix:///run/uwsgi/app/web2py/web2py.socket;
                include         uwsgi_params;
                #uwsgi_param     UWSGI_SCHEME $scheme;
                #uwsgi_param     SERVER_SOFTWARE    nginx/$nginx_version;
        }
}

server {
        listen          80;
        server_name     clientes.midominio.com;
        location ~* /(\w+)/static/ {
           root /home/www-data/web2py/applications/;
        }
         location / {
                uwsgi_pass      127.0.0.1:9001;
                #uwsgi_pass      unix:///run/uwsgi/app/web2py/web2py.socket;
                include         uwsgi_params;
                #uwsgi_param     UWSGI_SCHEME $scheme;
                #uwsgi_param     SERVER_SOFTWARE    nginx/$nginx_version;
        }
}

Ahora donde estoy perdido es como serian los archivos de configuracion uwsgi para administrador.xml y clientes.xml que debo poner en /etc/uwsgi/apps-enabled/ 

Es asi o estoy mal, por favor si alguien me puede expliacar como puedo desplegar estoy subdominios. 

Atte.

Fernando


--- On Thu, 12/27/12, Alan Etkin <spam...@gmail.com> wrote:

Alan Etkin

unread,
Dec 29, 2012, 7:44:48 AM12/29/12
to web2py-...@googlegroups.com
> El viernes, 28 de diciembre de 2012 16:51:42 UTC-3, visuallinux escribió:Hola.
> Mi servidor Ubuntu para deploy con nginx + uwsgi corre perfecto. Cuando ingreso al dominio www.midominio.com me despliega la
> aplicacion Welcome.

Supuestamente está bien. Estás definiendo dos server block, uno para cada host name en un mismo subdomain. No encuentro un ejemplo en la documentación de nginx para este caso pero por lo menos no dice que sea incorrecto.

Fernando Villarroel

unread,
Dec 29, 2012, 10:04:46 AM12/29/12
to web2py-...@googlegroups.com
Hola Alan.

Lo que pasa es que no le encuentro la vuelta de como hacerlo.

Ahora solo se me ocurre tener dos instancias distintas de web2py para qué cada una resuelva cada subdomaim; ejemplo:

/home/www-data/web2py/applications/clientes para el subdomain (virtualhost de apache) clientes.midominio.com

Y

/home/www-data/web2py/applications/administrador para el subdomain (virtualhost de apache) administrador.midominio.com

Que opinas, no se sí lo anterior sea muy elegante o como andará la performance, o si tendré algún conflicto de puertos?

Saludos

Enviado desde mi iPhone

Alan Etkin

unread,
Dec 29, 2012, 3:52:31 PM12/29/12
to web2py-usuarios
No creo que correr una instalación de web2py para cada hostname
aporte, así como está tendría que resolver las solicitudes a los dos
dominios. Tené en cuenta que había un problema con la app admin al
usar más de un hostname en routes.py pero supuestamente estaría
solucionado en las últimas versiones:

https://groups.google.com/d/topic/web2py/KIFPXU7g8kw/discussion

FERNANDO VILLARROEL

unread,
Dec 31, 2012, 9:04:34 AM12/31/12
to web2py-...@googlegroups.com
Hola Alan.

Es correcto con routes.py tal como dicen en el hilo funciona perfecto.

Gracias

--- On Sat, 12/29/12, Alan Etkin <spam...@gmail.com> wrote:

> From: Alan Etkin <spam...@gmail.com>
> Subject: Re: Servidor de Produccion nginx+uwsgi+web2py

Reply all
Reply to author
Forward
0 new messages