Ejecutando Zope y Plone con Servidor Web Apache

Este documento busca explicar los conceptos intrínsecos para instalar y configurar un servidor Web Apache 2 en frente del servidor Zope/Plone, a través de técnicas de reescritura URL.

Acerca de Servidor HTTP Apache

Según la documentación sobre Servidor HTTP Apache en Wikipedia Español ‘es un servidor web HTTP de código abierto, para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual’.

Terminología en Apache

Hay que entender varios conceptos sobre el servidor Web Apache antes de continuar:

Módulos Apache 2

Una lista de todos los módulos de Apache 2.2 con sus opciones.

Truco

Más información consulte la referencia de módulos Apache 2.

Como reescribir dirección URL

Un buen sobre la técnica de reescritura de direcciones URL con las reglas de reescritura.

Truco

Más información consulte la referencia de rewrite.

Referencias de módulo mod_proxy

La referencias oficial desde la documentación de Apache 2.2.

Truco

Más información consulte la referencia de mod_proxy.

Referencias de módulo mod_ssl

Cifrado SSL con apache 2.

Truco

Más información consulte la referencia de mod_ssl.

Instalar y configurar Servidor Web Apache

Para instalar debe iniciar sesión como usuario “root” ejecute el siguiente comando:

# aptitude install apache2

Habilitar módulos de mod_rewrite y mod_proxy

Próximo paso es habilitar mod_proxy y mod_rewrite.

  • Módulo mod_rewrite: es usado como un motor de reescritura basado en reglas para reescribir direcciones URL solicitadas en tiempo de ejecución, es decir le permite a usted apuntar a una dirección URL en otra dirección URL. Para habilitar ese módulo debe ejecutar el siguiente comando:

    # a2enmod proxy
    Enabling module proxy.
    Run '/etc/init.d/apache2 restart' to activate new configuration!
    
  • Módulo mod_proxy: es un Proxy inverso que le permite apuntar a una dirección URL en otro servidor en otro puerto. Este sirve como un traductor, para que el usuario nunca se comunique con cualquier otro servicio que use otro puerto que no sea el 80, es decir es un intermediario transparente hacia otro sitio. Con este módulo los usuarios pueden ir de Plone hacia una aplicación PHP, y luego a una aplicación Java y nunca saberlo. Para habilitar ese módulo debe ejecutar el siguiente comando:

    # a2enmod rewrite
    Enabling module rewrite.
    Run '/etc/init.d/apache2 restart' to activate new configuration!
    

Luego puede editar la configuración del módulo mod_proxy, con el siguiente comando:

# vim /etc/apache2/mods-enabled/proxy.conf

Ahora, encontramos los siguientes ajustes y coinciden con lo que tengo aquí. Siga exactamente esto, o usted podría terminar con teniendo un proxy abierto que permite a otros rebote a través de su máquina para llegar a cualquier lugar que desee de forma anónima, enviar spam, etc. Hagas lo que hagas, nunca active su ProxyRequests On.

ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
     Order deny,allow
     #Deny from all
     Allow from all
</Proxy>

Regla de Re-escritura de Zope

Y defina la política de virtual host del sitio, con el siguiente comando:

# vim /etc/apache2/sites-available/cliente1-intranet

Agregue la siguiente configuración:

<VirtualHost *:80>
  ServerName    www.cliente1.com
  ServerAlias   intranet.cliente1.com
  ServerAdmin   webmaster@intranet.cliente1.com
  ServerSignature On

  CustomLog     /var/log/apache2/cliente1-intranet-access.log combined
  ErrorLog      /var/log/apache2/cliente1-intranet-error.log
  LogLevel warn

  # registro del rebajar la tasa de compresión a un archivo
  #CustomLog /var/log/apache2/deflate_log deflate

  <IfModule mod_rewrite.c>
    RewriteEngine On

    # uso RewriteLog para la depuración de problemas con sus reglas
    # de reescritura debe desactivar después de encontrar el error,
    # ya que el disco duro se llenaría *muy rápido*.
    # RewriteLog "/var/log/apache2/rewrite_log"
    # RewriteLogLevel 2

    # sirviendo los iconos desde el servidor Apache 2
    RewriteRule ^/icons/ - [L]

    # reescribir cualquier acceso al ZMI en un servidor seguro
    # RewriteRule ^/(.*)/manage(.*) \
    # https://secure.cliente1.com/Zope/cliente1_instance/cliente1_com/$1/manage$2 \
    #[NC,R=301,L]
    # RewriteRule ^/manage(.*) \
    # https://secure.cliente1.com/Zope/cliente1_instance/cliente1_com/manage$1 \
    #[NC,R=301,L]


   # reescribir cualquier otro acceso al servidor Zope usando un proxy [P]
   # y añadir las palabras claves mágicas del VMH.
   # usar la variable de servidor %{SERVER_NAME} en lugar de cliente1.com
   # para evitar que se desborde la directiva ServerAlias​​,
   # usar la variable de servidor %{HTTP_HOST} no es recomendable ya que puede
   # contener el puerto

   RewriteRule ^/manage/(.*) \
       http://127.0.0.1:8080/VirtualHostBase/http/%{SERVER_NAME}:80/\
       manage_main/VirtualHostRoot/$1 [L,P]

   RewriteRule ^/(.*) \
       http://127.0.0.1:8080/VirtualHostBase/http/%{SERVER_NAME}:80/\
       cliente1_intranet/VirtualHostRoot/$1 [L,P]

  </IfModule>

  <IfModule mod_proxy.c>
    ProxyVia On

    # evitar que el servidor web sea utilizado como proxy
    <LocationMatch "^[^/]">
      Deny from all
    </LocationMatch>
  </IfModule>

  # almacenamiento en caché (inhabilitado)
  # esto cacheará todos los archivos con
  # la información correcta de caché a partir /
  <IfModule mod_mem_cache.c>
  # CacheEnable mem /
  </IfModule>

  # compresión (inhabilitado)
  <IfModule mod_deflate.c>
   SetOutputFilter DEFLATE
  </IfModule>
</VirtualHost>

Realice un enlace simbólico desde el directorio de Apache 2.2 sites-available/ al directorio sites-enabled/, para que su configuración previa este disponible

# ln -s /etc/apache2/sites-available/cliente1-intranet \
/etc/apache2/sites-enabled/cliente1-intranet

Habilite el virtual host

Debe habilitar la configuración de VirtualHost definida en el archivo cliente1-intranet, con el siguiente comando:

# a2ensite cliente1-intranet

Reinicie el servidor

Luego reinicie su servidor Apache con el siguiente comando:

# /etc/init.d/apache2 reload

Otras configuraciones

A continuación, algunas configuraciones muy características:

Plone como un domino completo

Tener un nombre de host completo (es decir, todo bajo “/”) que es servido por un único sitio Plone, añade esto a su configuración de VirtualHost de Apache la siguiente configuración:

RewriteEngine On
RewriteRule ^/(.*)$
  http://127.0.0.1:8080/VirtualHostBase/http/%{SERVER_NAME}:80/cliente1_intranet\
  /VirtualHostRoot/$1 [L,P]

Plone como una porción de su sitio

Alternativamente, usted podría mapear su sitio Plone dentro de un sub- directorio de un sitio existente sin subsumirlo como todo el sitio. ¿Para hacer esto hay es usar una regla de reescritura ligeramente diferente?. En primer lugar, lo mejor es crear un sitio Plone con un ID que coincida con el nombre de directorio en el que desea que el sitio este publicado. Por ejemplo, si desea que la dirección URL de su sitio Plone sea así:

http://cliente1.com/cliente1_intranet

Entonces debería crear su sitio Plone con el identificador cliente1_intranet. Para aparejar eso a este sitio que se muestra cuando usted navega a la dirección http://cliente1.com/cliente1_intranet, debe especificar la reescritura de la siguiente forma:

RewriteEngine On
RewriteRule ^/cliente1_intranet($|/.*) http://127.0.0.1:8080/VirtualHostBase\
/http/%{SERVER_NAME}:80/VirtualHostRoot/cliente1_intranet$1 [L,P]

Soporte HTTPS

Si usted quiere soportar acceso seguro HTTPS a su sitio Plone, es algo parecida la regla de reescritura anterior para su VirtualHost. Cambie http a https y cambiar los números de puerto de 80 a 443, de esta forma:

RewriteRule ^/(.*)$ \
 http://127.0.0.1:8080/VirtualHostBase/https/%{SERVER_NAME}:443/VirtualHostRoot/$1 \
 [L,P]

Reglas más elegantes

Si usted tiene necesidades mas exóticas, tome un tiempo y lea la página de Virtual Host Monster, y considere tener a la mano el RewriteRule Witch, el cual es un generador de directivas RewriteRule de Apache para Virtual Host en Zope.

Recomendaciones

Suprimiendo virtual host monster

En el caso de que usted ha establecido reglas de virtual hosting de modo que ya no se Zope le permiten acceder a la interfaz de gestión, puede agregar _SUPPRESS_ACCESSRULE" a la dirección URL para desactivar VirtualHostMonster.

los comentarios son proporcionados por Disqus

Editar este documento

El código fuente de este archivo esta hospedado en GitHub. Todos pueden actualizar y corregir errores en este documento con unos clic - sin necesidad de descargar.

  1. Vaya hacia el articulo Ejecutando Zope y Plone con Servidor Web Apache en GitHub.
  2. Presione el botón Fork. Este creara su propia copia personal de la documentación.
  3. Edite los archivos usando el editor de texto de GitHub desde su navegador Web
  4. Rellene en la caja de texto Commit message al final de la pagina indicando por que usted realizo estos cambios. Presione el botón Propose file change próximo a ese cuando haya finalizado.
  5. Luego diríjase a la página Send a pull request (no será necesario rellenar ningún texto adicional). Sólo tiene que pulsar el botón Send pull request.
  6. Sus cambios serán consultados por un revisor dentro de la pestaña Pull requests del proyecto en Github.

Para mas información básica acerca de como actualizar este manual y referencia a sintaxis Sphinx, por favor consulte la guía Escribiendo y actualizando el manual.