Existen varias formas de acceder a un servicio de Zope (cualquier Puerto) desde Apache (puerto 80), sin embargo si por alguna razón, por ejemplo un firewall a nivel de cliente, no permite acceder directamente al puerto de Zope, es mejor utilizar RewriteRules para realizar este acceso. En la siguiente dirección se encuentra una explicación de esto: http://www.zope.org/Members/regebro/Zope_and_Apache

La descripción que sigue a continuación supone que Apache y Zope+Plone ya están debidamente configurados y funcionando.

Configuración de Zope 2.7.5

Entrar a través de la interfaz administrativa de Zope.

En el Root Folder verificar si existe un objeto tipo Virtual Host Monster, colocando el puntero del ratón en los iconos se puede saber de que tipo son. Si no se tiene un objeto de este tipo adicionarlo. El ID puede tener cualquier nombre.

Configuración de Apache 1.3

Paso 1: Cargar Módulos

Para empezar debemos asegurarnos que Apache tenga configurado los módulos rewrite y proxy. Para ello se debe verificar que en el archivo /etc/apache/modules.conf se encuentre lo siguiente:

AddModule mod_rewrite.c
AddModule mod_proxy.c
LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so
LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so

Si con el siguiente comando se detectan errores de sintaxis, probablemente se debe quitar las entradas AddModule.

# apache -t

Más información sobre rewrite en http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html, y sobre proxy en http://httpd.apache.org/docs/1.3/mod/mod_proxy.html

Paso 2: Configurar Host Virtual

Para crear el host virtual que manejará en apache el acceso a Zope+Plone, se tomo como referencia la descripción contenida en: http://www.zope.org/Members/mwr/VHosts_With_Zope_Default

NameVirtualHost my.real.host.name
<VirtualHost my.virtual.host.name>
    ServerName my.virtual.host.name
    DocumentRoot /var/www

   <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteLog "/var/log/apache/rewrite_log"
        RewriteLogLevel 1
        RewriteRule ^/local/ - [ L ]
        RewriteRule ^/icons/ - [ L ]
        RewriteRule ^/~(.*) - [ L ]
        RewriteRule ^/cgi-bin/ - [ L ]
        RewriteRule ^/(.*) \
        http://my.real.host.name:9673/VirtualHostBase/http/my.virtual.host.name:80/MyTopLevelContentFolder/VirtualHostRoot/$1 [ P ]
   </IfModule>
</VirtualHost>

Remplazar my.virtual.host.name con el nombre de dominio a través del cual se va a acceder. Por ejemplo: www.cae.tntech.edu.

Remplazar my.real.host.name en la línea NameVirtualHost y en la línea RewriteRule con la dirección real de acceso al servidor zope. Por ejemplo: ch208h.cae.tntech.edu.

Remplazar MyTopLevelContentFolder con el nombre del directorio que contiene el contenido que se va a publicar.

Lo mejor de utilizar rewrite es que permite tener la mayor parte del contenido en Zope, pero dejar la posibilidad de utilizar otras cosas con apache como aplicaciones CGI, PHP, etc. El contenido estático entra en el directorio de /local/, los CGIs están disponibles en /cgi-bin/, y la regla del ~ toma los directorios public_html de los usuarios. La regla de /icons/ es para los iconos de apache.

En la siguiente dirección se da una descripción del papel que juega cada parámetro en de la ruta que se coloca en el RewriteRule: http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/VirtualHosting.stx

Si además del redirecionamiento se desea que el ingreso de información sensible se realice a través de https, se debe crear un hostvirtual para el puerto 443, y desde el hostvirtual del puerto 80 hacer redireccionamiento. Una forma de hacer esto se encuentra en la siguiente dirección: http://www.cps-project.org/static/doc/howto-virtual_hosts.html

Una manera alternativa es la siguiente:

ProxyPass / http://my.real.host.name:9673/VirtualHostBase/http/my.virtual.host.name:80/MyTopLevelContentFolder/VirtualHostRoot/
ProxyPassReverse / http://my.real.host.name:9673/VirtualHostBase/http/my.real.host.name:80/MyTopLevelContentFolder/VirtualHostRoot/

No olvidar verificar la sintaxis de los archivos de configuración, antes de reiniciar el servidor web:

# apache -t
# /etc/init.d/apache restart


Acceso_a_Zope_desde_Apache (last edited 2008-06-26 14:08:03 by Ariel Calzada)