Foros del Web » Administración de Sistemas » Software para Servers »

Varias páginas con el mismo código

Estas en el tema de Varias páginas con el mismo código en el foro de Software para Servers en Foros del Web. Hola, Os explico lo que estoy intentando: Estoy intentando que, con el mismo código, las mismas aplicaciones y todo, gestione varias páginas. Mi idea es: ...
  #1 (permalink)  
Antiguo 09/04/2013, 21:13
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 13 años, 4 meses
Puntos: 7
Varias páginas con el mismo código

Hola,

Os explico lo que estoy intentando:

Estoy intentando que, con el mismo código, las mismas aplicaciones y todo, gestione varias páginas.

Mi idea es:

Corro dos servidores:
- dominio1.com
- dominio2.com

Código Python:
Ver original
  1. from django.contrib.sites.models import Site
  2. dominio = Site.objects.get_current().domain
  3. if dominio == 'dominio1.com':
  4.     SITE_ID = 1
  5.     SITE_URL = 'protectora1.com'
  6. elif dominio == 'dominio2.com':
  7.     SITE_ID = 2
  8.     SITE_URL = 'dominio2.com'
  9. else:
  10.     SITE_ID = 1
  11.     SITE_URL = 'dominio1.com'

Y con ese código, dependiendo del dominio que coja, asigne un ID y una URL distintas.

Estoy teniendo muchos problemas, cuando implemento ese mismo código me aparece algo como:

AttributeError: `Settings` object has no attribute `ROOT_URLCONF`

Cuando el atributo si que lo tengo, y es así:

ROOT_URLCONF = 'cms.urls'


A ver si me podéis ayudar y decirme si es viable y posible hacer lo que estoy haciendo.

No entiendo bien la documentación oficial de django cuando a varios sitios se refiere.

Yo lo que quiero es, con un mismo código, dependiendo del dominio, asigne un id y así trabajar toda la web sobre ese id.

Espero vuestra respuesta, muchas gracias!

-----------------------
EDITO
-----------------------

He conseguido que distinga los dos dominios, pero poniéndolos en puertos diferentes.

A la hora de subirlos al servidor y usar Nginx o Apache para servir el proyecto, ¿tendré problemas? ¿Tiene que correr todo en el puerto 80 para que no haya problemas?
__________________
@JaimeMSE - ¡Sígueme!

Última edición por JaimeMSE; 09/04/2013 a las 21:44
  #2 (permalink)  
Antiguo 10/04/2013, 13:20
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Varias páginas con el mismo código

Depende mucho de lo quieras hacer.

1.- Si lo quieres correr exactamente el mismo proyecto en varios dominios. Simplemente puedes hacer un alias, un redirect u otra cosa en el servidor web.
2.- Si lo quieres es correr el mismo proyecto pero con diferente base de datos en varios dominios. Puedes hacer algo mas sencillo como por ejemplo hacer todo un link simbolico y solamente tener diferentes settings.py

No lo veo como si realmente fuera un problema de python/django, si no mas bien un problema en la configuración del servidor web.
  #3 (permalink)  
Antiguo 10/04/2013, 13:33
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 13 años, 4 meses
Puntos: 7
Respuesta: Varias páginas con el mismo código

Hola,

He solucionado digamos el problema como me has dicho.

He creado dos settings, fuera aparte del creado por django.
Lo que hago es importar todos los datos del settings de django a los otros dos, y en los otros dos hago:

SITE_ID = x

Y así funciona.

Ahora estoy teniendo problemas con Nginx + Uwsgi + Django en Mac 10.7.

A ver, en mi nginx.conf tengo configurados los dos sitios, y en la carpeta del proyecto tengo un uwsgi.ini que tiene:

Código :
Ver original
  1. [uwsgi]
  2. # set the http port
  3. http = :8888
  4.  
  5. # change to django project directory
  6. chdir = /Users/jaimemse/Dropbox/protecms/cms/cms/
  7.  
  8. # add /var/www to the pythonpath, in this way we can use the project.app format
  9. pythonpath = /usr/bin/python2.7
  10.  
  11. # set the project settings name
  12. env = DJANGO_SETTINGS_MODULE=cms.settings
  13.  
  14. # load django
  15. module = django.core.handlers.wsgi:WSGIHandler()

Y en nginx.conf:
Código :
Ver original
  1. upstream cms {
  2.                 server protectora1.com:8888
  3.                 server protectora2.com:8888
  4.         }
  5.  
  6.  
  7.         # Protectora1
  8.         server {
  9.                 listen 80;
  10.                 server_name protectora1.com www.protectora1.com;
  11.  
  12.                 access_log /usr/local/src/nginx-1.2.6/logs/protectora1-access.log;
  13.                 error_log /usr/local/src/nginx-1.2.6/logs/protectora1-error.log;
  14.  
  15.                 location / {
  16.                         uwsgi_pass protectora1.com:8888;
  17.                         include wsgi_params;
  18.                 }
  19.  
  20.                 location /media {
  21.                         alias /Users/jaimemse/Dropbox/protecms/cms/cms;
  22.                 }
  23.         }
  24.  
  25. # Protectora2
  26.         server {
  27.                 listen 80;
  28.                 server_name protectora1.com www.protectora2.com;
  29.  
  30.                 access_log /usr/local/src/nginx-1.2.6/logs/protectora2-access.log;
  31.                 error_log /usr/local/src/nginx-1.2.6/logs/protectora2-error.log;
  32.  
  33.                 location / {
  34.                         uwsgi_pass protectora2.com:8888;
  35.                         include wsgi_params;
  36.                 }
  37.  
  38.                 location /media {
  39.                         alias /Users/jaimemse/Dropbox/protecms/cms/cms;
  40.                 }
  41.         }

Y accedo a las webs con protectora1.com:8888 y protectora2.com:8888

Lo que quiero ahora es acceder a esas webs pero a través del puerto 80, como tengo en nginx.
Cuando arranco el uwsgi en el puerto 80 me dice que ya está en uso por él mismo, así que no sé.

¿Alguna idea?
Gracias!
__________________
@JaimeMSE - ¡Sígueme!
  #4 (permalink)  
Antiguo 10/04/2013, 15:00
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Varias páginas con el mismo código

En tienes que usar diferentes puertos.

uwsgi_pass protectora1.com:8888;
uwsgi_pass protectora2.com:8887;
(Y obviamente configurar protectora2 con el puerto 8887.)

No se si esto es un ambiente en produccion o de desarrollo.

Si es en produccion y ya tienes tus dns apuntando a tu servidor. Entonces deberías de ser capas de acceder directamente a protectora1.com o a protectora2.com y ver diferentes sitios.

O si es un ambiente de desarrollo y tienes los dominios protectora1.com y protectora2.com en tu /etc/hosts entonces también deberías de ser capaz de acceder a protectora1.com, protectora2.com directamente por el puerto 80.
  #5 (permalink)  
Antiguo 10/04/2013, 15:04
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 13 años, 4 meses
Puntos: 7
Respuesta: Varias páginas con el mismo código

Estoy en desarrollo, y por eso te digo que no soy capaz de acceder a través del puerto 80.

He cambiado los puertos y nada, he creado 2 uwsgi.py, para que cada uno acceda a un settings.py que contiene el SITE_ID, eso todo perfecto.

Lo que me falla es que no puedo acceder por el puerto 80.

Y no sé si eso también pasará en un servidor.
__________________
@JaimeMSE - ¡Sígueme!
  #6 (permalink)  
Antiguo 11/04/2013, 11:03
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: Varias páginas con el mismo código

Hola, no te recomiendo correr un servidor para levantar aplicaciones en producción con macintosh, porque noto que no tienes amplios conocimientos en configuraciones propias.

Yo actualmente trabajo con el servidor uwsgi por defecto que trae Django en mac y en ubuntu he montado nginx como servidor y proxy, uwsgi corriendo con django.

Con unos cuantos comandos puedes tener un servidor virtual corriendo con Django.

Instalar Nginx:
apt-get install nginx
Instalar uWSGI
apt-get install uwsgi

Ya realizas las configuraciones en sites-available y apps-enabled para tus aplicaciones que quieras
correr.
  #7 (permalink)  
Antiguo 11/04/2013, 12:13
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 13 años, 4 meses
Puntos: 7
Respuesta: Varias páginas con el mismo código

A ver, si ya tengo os dos servidores corriendo, y cada uno con su ID.

Lo que es que no puedo acceder con dominio1.com:80 sino con dominio1.com:8881 y dominio2.com:8882.

Y lo que quiero saber si es cuando haga todo esto en el server, la gente podrá acceder como dominio1.com y dominio2.com

Apache2 y tal lo dominaba cuando usaba PHP. Nginx y Uwsgi lo tengo configurados como todo el mundo dice en foros y tal, por eso no sé.
__________________
@JaimeMSE - ¡Sígueme!
  #8 (permalink)  
Antiguo 11/04/2013, 14:30
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Varias páginas con el mismo código

La parte de "upstream cms" no lo veo necesaria.
  #9 (permalink)  
Antiguo 11/04/2013, 16:09
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: Varias páginas con el mismo código

Veo que te estas complicando mira, pones a correr a nginx en el puerto 80 para eso paras cualquier servicio que lo este usando, tu realmente le asignas los puertos a las aplicaciones en uWSGI y en nginx con el parámetro uwsgi_pass apuntas al sok y todas pueden apuntar al mismo puerto no tiene porque ser distinto, porque le estas asignando una sok y un directorio por lo tanto son diferentes.
  #10 (permalink)  
Antiguo 26/04/2013, 05:48
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 13 años, 4 meses
Puntos: 7
Respuesta: Varias páginas con el mismo código

Hola,

Dejé un poco de lado este tema.
Comento que ya conseguí arrancar Nginx + Uwsgi + Django con varias web en MAC.

Ahora mi duda es, en un servidor para ofrecer el contenido a la web. ¿Cómo lo haría?

Tengo algunos conocimientos en Debian.

¿Tendría que ejecutar o hacer que se ejecute por detrás cada UWSGI de cada sitio?
En Mac lo que hago es tener varios terminales abiertos con el uwsgi funcionando. En un servidor, ¿cómo sería?

Si alguien me puede orientar, pues me voy a poner en una máquina virtual Debian y voy a configurar como si de un VPS se tratase, y no creo que eso de tener 10,20 terminales sea la mejor manera de hacer funcionar uwsgi por cada sitio.

Gracias!
__________________
@JaimeMSE - ¡Sígueme!
  #11 (permalink)  
Antiguo 26/04/2013, 11:16
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Varias páginas con el mismo código

Movido desde python.

Razón: El tema esta enfocado a la configuración del servidor web.
  #12 (permalink)  
Antiguo 26/04/2013, 11:32
Avatar de JaimeMSE  
Fecha de Ingreso: diciembre-2010
Ubicación: Isla Cristina (Huelva)
Mensajes: 164
Antigüedad: 13 años, 4 meses
Puntos: 7
Respuesta: Varias páginas con el mismo código

Gracias por moverlo.

Espero que puedan resolverme la duda :)
__________________
@JaimeMSE - ¡Sígueme!

Etiquetas: django, python
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:28.