Personal tools
You are here: Home Plone Documentación Tutoriales Ejecutando Plone y Zope detrás de un servidor web Apache 2

Ejecutando Plone y Zope detrás de un servidor web Apache 2

Document Actions

Note: This is the print view with all the tutorial pages on one page. The paginated version is available here, if you prefer that.

Cómo instalar un servidor web Apache 2 como proxy con caché en disco y compresión.

Prefacio y configuración de módulos de Apache 2

Este tutorial describe cómo instalar Apache 2 como proxy para Zope, con caché en disco y compresión (usando el módulo mod_gzip) en Debian Testing. Puede que no funcione en otras distribuciones. Por favor envíenme comentarios.

Requisitos

  • Apache 2 instalado y funcionando
  • Los siguientes módulos de Apache 2 deben estar instalados (deberían venir con la instalación de Apache 2 por defecto)
  • mod_cache
  • mod_deflate
  • mod_disk_cache
  • mod_headers
  • mod_mime_magic
  • mod_proxy
  • mod_proxy_http
  • mod_rewrite
  • Zope instalado y funcionando

Este tutorial se enfoca en Zope 2.7 con Python 2.3.3, pero debería funcionar con cualquier versión de zope2. Para Zope 2.7 se necesita

  • Zope 2.7 con fuentes, desde un tar.gz o del repositorio cvs (Zope-2_7-branch) en http://zope.org/
  • Python 2.3.3 con unicode activado (python2.3)
  • python2.3-xml (PyXML)
  • python2.3-dev (headers, distutils)
  • python2.3-psyco (python code optimizer)
  • algunos paquetes adicionales como python2.3-docutils (reST), python2-3-imaging (PIL)

Objetivo

Tener un servidor Apache 2 server escuchando en los puertos http y https de todas las interfaces. El sitio http://example.org/ será zope con http://www.example.org/ como alias. Cualquier solicitud a una url de administración será reescrita hacia https://secure.example.org/ para tener un acceso seguro. El servidor http de zope estará escuchando en el puerto 10080 de localhost y el sitio estará almacenado en /example_org/.

Estructura de directorios Apache 2

Debian usa la siguiente jerarquía de directorios para Apache 2

/etc/apache2/
directorio de base para todos los archivos de configuración
/etc/apache2/apache2.conf
archivo de configuración principal. Este archivo carga todas las otras configuraciones de los directorios mencionados abajo.
/etc/apache2/ports.conf
archivo de configuración para Listen $Port
/etc/apache2/conf.d
directorio con opciones de configuración adicionales
/etc/apache2/sites-available
sitios disponibles
/etc/apache2/sites-enabled
sitios habilitados, puede contener softlinks (enlaces débiles) a archivos en /etc/apache2/site-available. Sólo se cargan estos sitios
/etc/apache2/mods-available
módulos disponibles (*.load) y configuración de los módulos (*.conf)
/etc/apache2/modules-enabled
módulos habilitados, puede contener softlinks a archivos en /etc/apache2/mods-available. Sólo se cargan estos módulos. Además se  debe enlazar el archivo conf, si existe.
/etc/apache2/ssl
directorio que contiene los archivos de certificados ssl. Sugiero crear los 3 directorios crl, crt y key acá.

Para habilitar un sitio o un módulo, haz un symlink hacia él desde el directorio -available hacia el directorio -enabled:

user@myhost:/etc/apache2/sites-enabled$ ln -s ../sites-available/default

Cargando los módulos Apache 2

Los usuarios Debian pueden usar los archivos por defecto.

deflate.load:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

headers.load:

LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so

mime_magic.load:

LoadModule mime_magic_module /usr/lib/apache2/modules/mod_mime_magic.so

mime_magic.conf:

<IfModule mod_mime_magic.c>
MIMEMagicFile /etc/apache2/magic
</IfModule>

proxy.load:

LoadModule cache_module /usr/lib/apache2/modules/mod_cache.so
LoadModule disk_cache_module /usr/lib/apache2/modules/mod_disk_cache.so
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so

proxy.conf

No hacer un symlink! Usaremos nuestro propio archivo de configuración.

rewrite.load:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

ssl.load

No hacer un symlink a menos que tengamos una configuración válida y todas las llaves ssl necesarias:

LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so

ssl.conf

No hacer un symlink! Usaremos nuestro propio archivo de configuración.

Después de haber revisado o creado estos archivos, haz un symlink a todos los archivos en mods-enabled. Ten en cuenta que el orden de carga de los módulos es muy importante. Si ya existen algunos archivos en el directorio mods-enabled, asegurémonos que ningún módulo es cargado dos veces!

Configuraciones propias

Crea los siguientes archivos en /etc/apache2/conf.d. Estos archivos contienen nuestras propias configuraciones, así no nos mezclamos con las que trae debian por defecto.

deflate.conf:

<IfModule mod_deflate.c>
DeflateCompressionLevel 3

DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio

LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate

# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
#BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

# Don't compress images, java scripts and style sheets
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png|js|css)$ no-gzip dont-vary

# Make sure proxies don't deliver the wrong content
# this needs mod_headers but it's very important
# so I don't add a IfModule around it
Header append Vary User-Agent env=!dont-vary

</IfModule>

namevirtualhost.conf:

# agregaremos la configuracion despues

proxy.conf (puedes copiar el archivo desde mods-available y modificarlo):

<IfModule mod_proxy.c>

#dejar ProxyRequests on y permitir proxying from all puede permitir
#a spammers usar tu proxy para enviar email.

ProxyRequests Off

#<Proxy *>
# Order deny,allow
# Deny from all
# #Allow from .your_domain.com
#</Proxy>

# permitimos conectarse a localhost con un puerto terminado con 80 y 90 (www, webdav)
# y que tenga al menos 2 dígitos antes del 80 o 90
<ProxyMatch http://localhost:[0-9]{2,}?[8|9]0/.*>
Order deny,allow
Allow from all
</ProxyMatch>

# Habilita/deshabilita el manejo de encabezados HTTP/1.1 "Via:".
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block

ProxyVia On

# Para habilitar el cache, edita y descomenta las siguientes lineas:
# (no hay cache sin CacheRoot)

CacheRoot "/var/cache/apache2/proxy"
# 300MB
CacheSize 307200
# in hours
CacheGcInterval 4
CacheMaxExpire 24
CacheLastModifiedFactor 0.1
CacheDefaultExpire 1
CacheForceCompletion 100
# Probablemente necesites cambiar esto tambien.
#NoCache a_domain.com another_domain.edu joes.garage_sale.com

</IfModule>

ssl.conf:

<IfModule mod_ssl.c>
SSLEngine on
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

# path to a directory containing the ssl ca keyring and revocation list
# you must create hash symlinks using the right Makefile!
SSLCACertificatePath /etc/apache2/crt/
SSLCARevocationPath /etc/apache2/crl/

SSLSessionCache shm:/var/log/apache2/ssl_scache(128000)
SSLMutex sem
SSLRandomSeed startup file:/dev/urandom 512
SSLRandomSeed connect file:/dev/urandom 512
</IfModule>

Si crees que todo está bien, reinicia apache2:

$ /etc/init.d/apache2 restart

Preparando virtual hosting

Virtual hosting significa servir más de un dominio desde la misma dirección ip. Los servidores web Apache 2 saben qué dominio quiere el navegador usando el nombre de dominio que es enviado por él. Por lo tanto, no es posible usar virtual hosting en http seguro (https, http sobre ssl) debido a que la negociaciónssl debe hacerse antes que comience la negociación por el nombre de dominio. Es una vergüenza que los navegadores y servidores web no soporten TLS.

Revisa el archivo /etc/apache2/ports.conf y ve si Apache 2 está escuchando en el puerto por defecto para http:

Listen 80

Si quieres usar SSL, debes escuchar en el puerto por defecto para https también:

Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>

Si tienes múltiples interfaces de red y/o direcciones ip, puedes obligar a Apache a usar una dirección única:

Listen 192.168.7.1:80

Ahora necesitas configurar Apache 2 para usar NameVirtualHost para virtual hosting. Esta es la configuración más simple porque solo necesitas indicar el nombre del srvidor y la dirección/puerto en cada sección del dominio virtual. Modifica el archivo /etc/apache2/conf.d/namevirtualhost.conf y agrega la siguiente línea:

NameVirtualHost *:80
<IfModule mod_ssl.c>
NameVirtualHost *:443
</IfModule>

Estas líneas se parecen a las de ports.conf pero sin el *: inicial, si Apache 2 escucha en todas las direcciones.

Reinicia Apache 2 y ve si puedes navegar a tu servidor. Quizás Apache 2 se queje de que no puede encontrar ningún virtual hosts que calce con la configuración de NameVirtualHost, pero eso no es problema. Lo arreglaremos más tarde.

Configuración de Zope

El siguiente paso es asegurarnos que el servidor Zope está configurado correctamente.

Configurando el servidor Zope

Ahora debemos configurar el servidor Zope. Al menos estas opciones deben cambiarse en tu etc/zope.conf:

debug-mode on
El modo de Debugging (depuración de errores) viene habilitado por defecto. Dejémolo habilitado hasta asegurarnos que el servidor Zope funciona bien, y luego hay que deshabilitarlo cuando el sitio esté en producción. CMF y Plone funcionan mucho más rápido cuando se deshabilita.
effective-user zope
Define un usuario efectivo existente, si no quieres que Zope parta con los permisos de proceso init o como root.
locale de_DE@euro
Habilita el uso de "locales" en Zope y lo define como de_De@euro (ISO-8859-15). Debes definir esta variable con el valor del locale por defecto del sistema. En debian usa dpkg-reconfigure -plow locales para ver una lista de locales y compilar alguno de ellos.
datetime-format international
Esta es una buena idea, a menos que vivas en usa.
#ip-address unset
Si no defines una ip entonces Zope escuchará por todas las interfaces
port-base 10000
Offset del puerto (ver más abajo)
address 127.0.0.1:80 (en <http-server>)
El servidor http se instalará en la interfaz de red loopback (localhost o 127.0.0.1) en el puerto 10080 (port-base 10000 + 80). Nadie podrá conectarse directamente a tu servidor Zope.
cache-size 5000 (en <zodb_db main>)
Aumenta el tamaño del cache de tu ZODB a 5000 objetos. El cache debiera ser lo más grande posible, para aumentar la velocidad de Zope, pero teniendo cuidado de que no se coma toda tu RAM. Si el cache es muy grande y tu sistema necesita usar espacio de swap en el disco duro, Zope se volverá extremadamente lento!

Si hemos definido el modo de debug es mejor utilizar $INSTANCE-HOME/bin/runzope para iniciar Zope. Así se puede leer toda la información de debug en la consola, y se puede detener Zope fácilmente, presionando CTRL+C. Después se debe deshabilitar el modo de debug y ejecutar Zope en modo daemon usando $INSTANCE-HOME/bin/zopectl. zopectl es una herramienta que se integra muy fácil en tu proceso de inicio del sistema (boot):

root@host:/$ cd /etc/init.d
root@host:/etc/init.d$ ln -s /path/to/your/zope/instance/bin/zopectl myzope
root@host:/etc/init.d$ /etc/init.d/myzope start

Configurando la instancia de Zope

Navega al ZMI (Zope management interface) de tu servidor Zope en forma directa (sin usar apache como proxy) http://localhost:10080/manage. Si no tienes un navegador en tu servidor puedes hacer que Zope escuche temporalmente en todas las interfaces quitando el 127.0.0.1 de la configuración, y reiniciando Zope.

Si tienes un servidor linux con lynx o links instalado, puedes usar este pequeño truco para evitar los problemas con los marcos (frames) y el menú para agregar:

host:/$ lynx http://localhost:10080/manage_addProduct/SiteAccess/manage_addVirtualHostMonsterForm

Agrega un Virtual Host Monster con el id VirtualHostMonster en la raíz de la instancia de Zope (asegúrate que no es en la instancia de Plone, debe ser un nivel más arriba). Puedes escoger el id que quieras, pero debe ser único para todo el sitio, así que pienso que VirtualHostMonster es una buena idea :) No agregues más de un VHM a tu instancia de Zope! Uno es suficiente para todas las subpáginas.

En este ejemplo necesitarás agregar un tipo "folderish" (por ejemplo un sitio plone en la raíz) con el id example_org en la raíz de la instancia Zope.

Host virtual en Apache 2

Ahora es el momento de configurar VirtualHost en Apache.

Un ejemplo muy sencillo

Archivo de configuración:

<VirtualHost *:80>
ServerAlias www.example.org
ServerAdmin webmaster@example.org
ServerSignature On

CustomLog /var/log/apache2/example.org-access.log combined
ErrorLog /var/log/apache2/example.org-error.log
LogLevel warn

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/(.*) \
http://localhost:10080/VirtualHostBase/http/%{SERVER_NAME}:80/example_org/VirtualHostRoot/$1 [L,P]
</IfModule>
</VirtualHost>

Un host virtual sirviendo zope

www.example.org.conf:

<VirtualHost *:80>
ServerAlias www.example.org
ServerAdmin webmaster@example.org
ServerSignature On

# no necesitamos un DocumentRoot para un sitio que es solo zope
#DocumentRoot /var/www/example.org

CustomLog /var/log/apache2/example.org-access.log combined
ErrorLog /var/log/apache2/example.org-error.log
LogLevel warn

# log the deflate compression rate to a file
#CustomLog /var/log/apache2/deflate_log deflate

<IfModule mod_rewrite.c>
RewriteEngine On

# usa RewriteLog para depurar problemas con tus reglas de reescritura
# deshabilitar luego de encontrar el error, o el disco duro se llenara *muy rapido*
# RewriteLog "/var/log/apache2/rewrite_log"
# RewriteLogLevel 2

# los iconos se sirven del servidor apache 2
RewriteRule ^/icons/ - [L]

# reescribamos cualquier acceso de administracion hacia nuestro sitio seguro
RewriteRule ^/(.*)/manage(.*) \
https://secure.example.org/zope/example_instance/example_org/$1/manage$2 [NC,R=301,L]
RewriteRule ^/manage(.*) \
https://secure.example.org/zope/example_instance/example_org/manage$1 [NC,R=301,L]

# reescribamos cualquier otro acceso al servidor zope usando un proxy [P] y agregando la seccion VMH
# usar %{SERVER_NAME} en vez de example.com para soportar el ServerAlias
# %{HTTP_HOST} es malo porque puede contener el puerto
RewriteRule ^/(.*) \
http://localhost:10080/VirtualHostBase/http/%{SERVER_NAME}:80/example_org/VirtualHostRoot/$1 [L,P]
</IfModule>

<IfModule mod_proxy.c>
ProxyVia On

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


# cache (deshabilitado)
# esto hace cache de todos los archivos de /
<IfModule mod_disk_cache.c>
#CacheEnable disk /
</IfModule>

# compresion (deshabilitada)
<IfModule mod_deflate.c>
#SetOutputFilter DEFLATE
</IfModule>
</VirtualHost>

Reglas de reescritura adicionales

Reglas de reescritura para tener un acceso seguro a la administración.

Redirigimos cualquier acceso a la dirección http al servidor https:

<VirtualHost *:80>
ServerName secure.example.org
ServerAdmin webmaster@example.org
ServerSignature On

# no necesitamos un DocumentRoot para un sitio que es solo zope
 #DocumentRoot /var/www/secure.example.org

CustomLog /var/log/apache2/secure.example.org-access.log combined
ErrorLog /var/log/apache2/secure.example.org-error.log
LogLevel warn


<IfModule mod_rewrite.c>
RewriteEngine On

# usa RewriteLog para depurar problemas con tus reglas de reescritura
# deshabilitar lueigo de encontrar el error, o el disco duro se llenara *muy rapido*
# RewriteLog "/var/log/apache2/rewrite_log"
# RewriteLogLevel 2

# Reescribir con el codigo de redireccion permanente
RewriteRule ^/(.*) https://secure.example.org/$1 [R=301, L]
</IfModule>
</VirtualHost>

Y ahora el servidor SSL que sirve los accesos a la administración zope:

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName secure.example.org
ServerAdmin webmaster@example.org
ServerSignature On

DocumentRoot /var/www/secure.example.org-ssl

CustomLog /var/log/apache2/secure.example.org-ssl-access.log combined
ErrorLog /var/log/apache2/secure.example.org-ssl-error.log
LogLevel warn

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/crt/secure.example.org.crt
SSLCertificateKeyFile /etc/apache2/ssl/key/secure.example.org.key

<Location />
# Forzamos el uso de encriptacion ssl
SSLRequireSSL

# certificados de cliente SSL: none, optional, require
# Nota: optional no funciona con todos los navegadores
SSLVerifyClient optional
SSLVerifyDepth 1

SSLOptions +StdEnvVars +StrictRequire
#opcional +ExportCertData
</Location>


<IfModule mod_rewrite.c>
RewriteEngine On

# usa RewriteLog para depurar problemas con tus reglas de reescritura
# deshabilitar lueigo de encontrar el error, o el disco duro se llenara *muy rapido*
# RewriteLog "/var/log/apache2/rewrite_log"
# RewriteLogLevel 2

# Las reglas siguientes reescriben cualquier acceso a https://secure.example.org/zope/example_instance/
# a la raiz de la instancia zope en localhost:10080

RewriteRule ^/zope/main_instance$ \
http://localhost:10080/VirtualHostBase/https/secure.example.org:443/VirtualHostRoot/_vh_zope/_vh_example_instance [L,P]
RewriteRule ^/zope/main_instance/(.*) \
http://localhost:10080/VirtualHostBase/https/secure.example.org:443/VirtualHostRoot/_vh_zope/_vh_example_instance/$1 [L,P]
</IfModule>

<IfModule mod_proxy.c>
ProxyVia On

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

# no intentes hacer cache de ssl!

# compresion (deshabilitada)
<IfModule mod_deflate.c>
#SetOutputFilter DEFLATE
</IfModule>
</VirtualHost>
</IfModule>

Descargar la configuración de ejemplo

Cómo funciona VHM

El "Virtual Host Monster" añade algo de magia al proceso de resolución de urls de Zope. Se añaden dos claves especiales (VirtualHostBase y VirtualHostRoot) que permiten configurar el host virtual y la carpeta base interna a la instancia Zope.

Hosting virtual con Zope

Una sección normal VHM de una regla de reescritura tiene esta forma:

^/(.*) \
http://localhost:10080/VirtualHostBase/http/www.example.org:80/example_site/VirtualHostRoot/$1

Esta dirección consta de siete partes:

http://localhost:10080
Esto sólo es necesario para el módulo mod_proxy. Indica qué servidor debiera ser contactado, incluyendo el protocolo, host y puerto. En este ejemplo mod_proxy está contactando el ZServer en el puerto 100080 del mismo host, usando http.
VirtualHostBase
Esta es la clave mágica para iniciar el hosting virtual. No debes crear ningún objeto llamado VirtualHostBase es la raíz de zope!
 
http
El primer segmento de ruta después de VirtualHostBase indica el protocolo de la url vhost.
www.example.org:80
El segundo segmento después de VirtualHostBase indica el servidor y puerto. Junto con el protocolo forman la parte base de la url, en este ejemplo http://www.example.org:80. Tal como VirtualHostBase, el protocolo y el servidor no son objetos reales. Se indican en la url tan solo con propósitos de configuración y son eliminados de la url después que se define el host virtual del requerimiento.
example_site
Ahora comienza la ruta de recorrido real en Zope. Después de indicar las partes de protocolo y servidor de la nueva url, comenzamos recorriendo a través de Zope la raíz del host virtual. Puedes agregar cero o más objetos aquí.
VirtualHostRoot
Finalmente hemos llegado a la clave mágica que indica la raíz del host virtual. Todo lo que va después de VirtualHostRoot será visible al navegador.
$1 y ^/(.*)
$1 y ^/(.*) son expresiones regulares. ^/(.*) quiere decir "Calza cualquier cosa que empiece con un / y guarda todo lo que siga después del / en la variable $1.
Caso especial _vh_foo

Imagina que quieres tener http://www.example.org/foo/ como la url raíz de tu url virtual. Puedes lograr este efecto usando la declaración especial _vh_ . Cualquier segmento de la ruta que comience con _vh_ será eliminado de la url que se recorra en zope, y luego del recorrido será añadido sin el _vh_. Por ejemplo:

^/foo/(.*) \
http://localhost:10080/VirtualHostBase/http/www.example.org:80/example_site/VirtualHostRoot/_vh_foo/$1

Nota No está permitido crear un objeto llamado VirtualHostBase ni VirtualHostRoot en tu zope, ni tampoco crear un objeto con el mismo id que tu VHM. Podría funcionar, pero también puede dañar el sitio.

FastCGI en Apache2

Cómo compilar el módulo mod_fastcgi para Apache 2 en Debian.

Instalamos los paquetes que son requisitos para compilar el módulo. Instalando apache2-dev debiera bastar:

apt-get install apache2-dev

He tenido algunos problemas con con un script que no encuentra libtool, así que lo enlazamos a mano:

cd /usr/share/apache2/build
ln -s /usr/lib/libtool .

Descargamos la extensión fastcgi desde http://www.fastcgi.com/ y desempacamos el tar.gz:

wget http://www.fastcgi.com/dist/mod_fastcgi-X.X.X.tar.gz
tar -xzf mod_fastcgi-X.X.X.tar.gz
cd mod_fastcgi-X.X.X

Nota: Debido a un bug en fastcgi, necesitarás al menos el snapshot desde mediados de Abril de 2004, o la versión 2.4.3 próxima a salir.

Copiar Makefile.AP2 a Makefile:

cp Makefile.AP2 Makefile

Modificar Makefile para Apache 2, para reflejar la configuración del sistema:

#
# Makefile for Apache2
#

builddir = .

# XXX cambiar esta linea
top_dir = /usr/share/apache2


top_srcdir = ${top_dir}
top_builddir = ${top_dir}

include ${top_builddir}/build/special.mk

APXS = apxs
APACHECTL = apachectl

#DEFS=-Dmy_define=my_value
#INCLUDES=-Imy/include/dir
#LIBS=-Lmy/lib/dir -lmylib

# XXX agrega esta linea
INCLUDES=-I /usr/include/apache2 -I /usr/include/apr-0

all: local-shared-build

install: install-modules

clean:
-rm -f *.o *.lo *.slo *.la

Ejecutamos make e instalamos los módulos:

make
make install

Ahora debiéramos tener un módulo llamado mod_fastcgi.so en /usr/lib/apache2/modules.

Variables mod_proxy vs. mod_ssl

Cómo acceder a las variables mod_ssl.

Variables mod_proxy vs. mod_ssl

Dentro de Zope no es posible acceder a las variables de ambiente especiales que agrega mod_ssl (SSLOptions +StdEnvVars) si estamos usando mod_proxy para acceder a Zope. Esto es por la forma en que funciona internamente el proxy. Todos los accesos a Zope a través del proxy transparente es un acceso nuevo, y no tiene contexto SSL. Para poder ver estar variables ambientales especiales es necesario configurar acceso CGI hacia Zope. El mejor método y el más rápido es FastCGI http://www.fastcgi.com.

Primero debemos instalar FastCGI para Apache 2, como fue explicado en la sección anterior. Una vez que mod_fastcgi esté compilado, instalado y cargado debemos reconfigurar tanto Zope como Apache2.

Lo siguiente es habilitar el servidor fast-cgi de Zope. Se puede escoger entre socket y tcp (host:port), donde socket es un poco más rápido, pero Apache2 debe tener acceso de lectura al directorio donde reside el socket. En este ejemplo INSTANCE_HOME es /var/lib/zope/example y la dirección fastcgi es $INSTANCE/var/zope.soc.

El último paso es reconfigurar Apache2. La configuración de ejemplo que sigue tiene solo las partes necesarias para fastcgi. Notar que el DocumentRoot debe existir y debe ser accesible por Apache2, pero el archivo zope.fcgi no debe existir. También se debe eliminar todas las reglas de reescritura de proxy (RewriteRules).

Configuración Apache2:

<IfModule mod_fastcgi.c>
FastCGIExternalServer /var/www/secure.example.org-ssl/zope.fcgi \
-socket /var/lib/zope/example/var/zope.soc \
-pass-header Authorization \
-pass-header Cookie \
-idle-timeout 60 \
-appConnTimeout 0
</IfModule>

<VirtualHost ...>

...

DocumentRoot /var/www/secure.example.org-ssl

...

<IfModule mod_fastcgi.c>
<Directory /var/www/secure.example.org-ssl>
AddHandler fastcgi-script .fcgi
</Directory>
</IfModule>

...

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/(.*) \
/zope.fcgi/VirtualHostBase/https/secure.example.org:443/VirtualHostRoot/_vh_zope/_vh_example_instance/$1 [L]
</IfModule>

...

</VirtualHost>

Apéndice

Otros recursos.

Preguntas frecuentes (FAQ)

Nadie me ha hecho preguntas :)

Configuración de ejemplo

El archivo de configuración de ejemplo contiene los archivos de configuración por defecto de debian (sin modificaciones), todas las configuraciones mencionadas en este tutorial, y los dos archivos "make" que crean los enlaces hash para la ruta de revocación y la ruta de certificación (tomadas de apache 1).

Archivos:

.
|-- README
|-- apache2.conf
|-- conf.d
| |-- deflate.conf
| |-- namedvirtualhost.conf
| |-- proxy.conf
| `-- ssl.conf
|-- httpd.conf
|-- magic
|-- mods-available
| |-- actions.load
| |-- asis.load
| |-- auth_anon.load
| |-- auth_dbm.load
| |-- auth_digest.load
| |-- auth_ldap.load
| |-- cache.load
| |-- cern_meta.load
| |-- cgi.load
| |-- cgid.conf
| |-- cgid.load
| |-- dav.conf
| |-- dav.load
| |-- dav_fs.conf
| |-- dav_fs.load
| |-- deflate.load
| |-- disk_cache.load
| |-- expires.load
| |-- ext-filter.load
| |-- ext_filter.load
| |-- fastcgi.load
| |-- file_cache.load
| |-- headers.load
| |-- imap.load
| |-- include.load
| |-- info.load
| |-- ldap.load
| |-- mem_cache.load
| |-- mime_magic.conf
| |-- mime_magic.load
| |-- proxy.conf
| |-- proxy.load
| |-- proxy_connect.load
| |-- proxy_ftp.load
| |-- proxy_http.load
| |-- rewrite.load
| |-- speling.load
| |-- ssl.conf
| |-- ssl.load
| |-- suexec.load
| |-- unique_id.load
| |-- userdir.conf
| |-- usertrack.load
| `-- vhost_alias.load
|-- mods-enabled
| |-- cgi.load -> ../mods-available/cgi.load
| |-- deflate.load -> ../mods-available/deflate.load
| |-- headers.load -> ../mods-available/headers.load
| |-- mime_magic.conf -> ../mods-available/mime_magic.conf
| |-- mime_magic.load -> ../mods-available/mime_magic.load
| |-- proxy.load -> ../mods-available/proxy.load
| |-- rewrite.load -> ../mods-available/rewrite.load
| `-- ssl.load -> ../mods-available/ssl.load
|-- ports.conf
|-- sites-available
| |-- default
| |-- example.org
| |-- secure.example.org
| `-- secure.example.org-ssl
|-- sites-enabled
| |-- example.org -> ../sites-available/example.org
| |-- secure.example.org -> ../sites-available/secure.example.org
| `-- secure.example.org-ssl -> ../sites-available/secure.example.org-ssl
`-- ssl
|-- crl
| |-- Makefile
| `-- README
|-- crt
| |-- Makefile
| |-- README
| `-- ca-bundle.crt
`-- key
`-- README

Descargar configuración de ejemplo

Créditos

Autor original y ubicación de la versión en inglés.

El presente tutorial es una traducción al español realizada por Hugo Salgado el día 28 de enero de 2007.

La versión original en inglés se encuentra disponible en http://plone.org, titulada "Running Plone and Zope behind an Apache 2 web server", creada por Christian 'Tiran' Heimes el 12 de febrero de 2006.

Su ubicación actual es http://plone.org/documentation/tutorial/plone-apache

La licencia del presente documento pertenecen al autor original.

Cualquier comentario o consulta del contenido por favor dirigirla al autor.

Problemas de traducción por favor dirigirlas al traductor.


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: