lunes, 26 de septiembre de 2011

Instalación de MOINMOIN sobre Apache en Windows Server 2008 R2


Moinmoin sobre Apache con Microsoft Windows Server 2008 R2

El siguiente documento asume que se tiene un equipo funcionando con Microsoft Windows Server 2008 R2 y se tienen los privilegios necesarios para la administración del mismo (instalación de aplicaciones y cuenta con privilegios de administrador).



Primero...



Instalar Apache (versión recomendada Apache 2.2.X)
  1. Descargar e Instalar Apache 2.0.xx or posterior.
    1. Nota acerca de la versiones: Apache2 fue reescrita con un major soporte para sistemans no-linux (como Windows), es por esto que se recomienda fuertemente versiones 2.X para usuarios de Windows.
    2. Ir a http://httpd.apache.org
    3. Descargar el fichero Win32 Binary (MSI Installer) para obterner la ultima version de Apache 2.
    4. Leer la documentación de  Apache para determiner el procedimiento de instalación correcto para su determinada situación.
    5. Probar la instalacion de de Apache para estar seguros que se funciona correctamente antes de proceder con la instalación del resto de compomentes de la wiki.
    6. Para comprobar la instalación y correcto funcionamiento de Apache basta con abrir un navegador de internet y escribir “localhost” o “127.0.0.1” en la barra de direcciones y presionar enter. Deberá apacer la frase “It works!”.
Instalar Python (versión recomendada Python 2.6.X)
  1. Descargar e Instalar Python para Windows.
    1. Ir a http://www.python.org
    2. Nota acerca de la versiones: Moin ha sido bien probado con la version 2.5.x. de Python y por lo tanto se recomienda la instalación de esta versión. La versión de Python 2.6.x debería funcionar bien pero ha sido menos probada que la versión anterior. Moin no es compatible con Python 3.0.
Instalar Notepad++
  1. Descargar e Instalar Notepad++ para Windows.
    1. Ir a http://notepad-plus-plus.org e instalar el programa.
    2. Nota acerca de la instalación: Es posible utilizar otro editor de texto como Vim, UltraEdit, etc.
Instalar 7zip
  1. Descargar e Instalar Notepad++ para Windows.
    1. Ir a http://www.7zip.org e instalar el programa.
    2. Nota acerca de la instalación: Este programa es necesario para descomprimir el fichero de instalación de MoinMoin.
Instalar MoinMoin (versión recomendada moin-1.9.X)
  1. Descargar MoinMoin
    • La version más actualizada esta aquí: http://moinmo.in/MoinMoinDownload
  2. Expandir el fichero
    • Se recomiendo usar la herramienta 7-Zip .
    • Expandir el fichero dentro de una carpeta temporal, por ejemplo en C:\TEMP o en una ubicación alternativa.
    • Deberá quedar una carpeta tal como: C:\TEMP\moin-x.x donde "x.x"  es la actual versión descargda y expandida de MoinMoin. Esta carpeta deberá contener un fichreo setup.py además de varios otros ficheros y subcarpetas.
  3. Ejecutar Setup.py desde la consola de comandos
    • Abrir una ventana de DOS (Inicio > Ejecutar… > Escribir cmd) y luego ingresar los siguientes commandos:
C:
cd \TEMP\moin-1.9.x
C:\Python26\python.exe setup.py install --record=install.log

Los comandos de arriba agregarán MoinMoin a la carpeta de instalación de Python (C:\Python26) y generará un fichero  install.log  dentro de  C:\temp\moin-x.x  listando todos los ficheros copiados. Para ver los ficheros dentro de C:\Python26 creados tras la instalación se pueden ver usando el Explorador de Windows. Deberá encontrar una carpeta C:\Python26\share\moin y otra carpeta C:\Python26\Lib\site-packages\MoinMoin . La carpeta MoinMoin contiene muchos scripts de Python y varias subcarpetas.
Ahora estamos preparados para crear una instacia de wiki.

Configuración
Es una buena práctica el tartar de tener toda la información y ficheros dentro de unos cuantos directorios principales. De esta forma será mas fácil realizar una copia de respaldo regular sin tener que buscar en varias rutas los ficheros y carpetas/directorios la información a ser respaldada. Se recomienda evitar tener las instancias de wiki dentro de la carpeta de instalación de Python o de MoinMoin (ésta última generalmente estará dentro de Python) ya que evitará tener problemas a la hora de actualizar las instalaciones de Python o de MoinMoin lo que podría llevar a modificar accidentalmente ficheros de configuración de las instancias de wikis. De la misma manera evitar tener las instancias de wikis dentro de las carpetas de instalación de Apache.

Elije una ubicación apropiada para las instancias de wiki. Las siguientes instrucciones asumen que se crearán mas de una instancia de wiki dentro de la carpeta C:\Moin\ y que la primera instancia de wiki se llamará mywiki.

Se puede reemplazar el nombre mywiki con casi cualquier nombre imaginable, pero no usar wiki porque ese nombre es usado por MoinMoin para cargar imagenes y hojas de estilo. Aunque el nombre puede ser cambiado luego, el nombre a reemplazar a mywiki será parte de la URL de acceso al sitio que contenga la wiki, por ejemplo: http://server.myorganization.org/mywiki/FrontPage.

Creando una instancia de Wiki
Iniciar una ventana de DOS e ingresar los comandos de abajo. Escto creará un clon de MoinMoin llamado mywiki dentro de la carpeta C:\Moin .

cd C:\
md Moin
md Moin\mywiki
md Moin\mywiki\data
md Moin\mywiki\underlay
cd C:\Python26\share\moin
xcopy data        C:\Moin\mywiki\data /E
xcopy underlay    C:\Moin\mywiki\underlay /E
copy  config\*.* C:\Moin\mywiki\*.*
copy  server\*.* C:\Moin\mywiki\*.*

Si el servidor va a ejecutar multiples wikis, se necesitará crear clones adicionales utilizando el mismo procedimiento de creación de instancias pero cambiando el nombre de la instancia a “mywiki2

Configurando wikiconfig.py
Editar C:\Moin\mywiki\wikiconfig.py  y por lo menos cambiar  sitename  y ponerle el nombre de la wiki a crear: (alrededor de la línea 68)

    sitename = 'My Wiki'

Adicionalmente, establecer data_dir y data_underlay_dir a las rutas absolutas de los directories en particular tal como: (alrededor de la línea 51-54)

    data_dir = r'C:\Moin\mywiki\data'
    data_underlay_dir = r'C:\Moin\mywiki\underlay'

Para una instalación pública, generalmente será necesario prohibir algunas acciones perligrosas. Agregar una línea como ésta dentro de wikiconfig.py:

    actions_excluded = ['AttachFile', 'DeletePage', 'RenamePage', ]

Si no desea utilizar una granja de wikis (wiki farm) asegurese que no exista el fichero farmconfig.py dentro de la carpeta C:\Moin\mywiki, o sinó moin.cgi seguramente mostrará varios errores (incluyendo uno sobre no poder encontrar un fichero de configuracion)  y finalmente fallará en iniciar apropiadamente.

Configurando moin.cgi
Use su editor de texto para editar el fichero C:\Moin\mywiki\moin.cgi. Reemplace la primera línea (the shebang statement o “#!/usr/bin/env python”) para que apunte al archivo ejecutable de Python local (python.exe).

Notar las barras oblicuas “/” -- Apache usa la convención de separación de carpetas como en UNIX. Esto le dice a Apache que el fichero  moin.cgi  es un script ejecutable  que será interpretado por C:/Python26/python.exe

 #!C:/Python26/python.exe

Configurando Apache httpd.conf
El siguiente paso es decirle a Apache que tiene más trabajo que hacer. Use su editor de texto para agregar las siguientes líneas a C:\Program Files (x86)\Apache Software Foundation\Apache2.2 \conf\httpd.conf. (la ubicación de httpd.conf puede variar dependiendo de la instalación de Apache).
Por favor ver las 3 notas siguientes:

#1- El número "193" deberá ser cambiado para reflejar la version de MoinMoin que se ha instalado en los pasos previos.

#2- Desde la versión de MoinMoin 1.9.2 la ruta o path del alias ha sido cambiada a "C:/Python26/Lib/site-packages/MoinMoin/web/static/htdocs/". (Antes era "C:/Python/share/moin/htdocs/")

#3- Notar que "C:/Python26/" deberá ser cambiada para reflejar la versión instalada de Python. En este caso, la versión instalada es la Python26)

Alias /moin_static193/ "C:/Python26/Lib/site-packages/MoinMoin/web/static/htdocs/"
ScriptAlias /mywiki "C:/Moin/mywiki/moin.cgi"
#
# Las líneas de abajo son muy necesarias si se usa Apache 2.2 o posterior.
#
<Directory "C:/Moin/mywiki/moin.cgi">
AllowOverride All
Allow From All
Options +ExecCGI
</Directory>
<Directory "C:/Python26/Lib/site-packages/MoinMoin/web/static/htdocs/">
AllowOverride All
Allow From All
Options +ExecCGI
</Directory>

La línea Alias de arriba le da instrucciones a Apache para servir imágenes, hojas de estilo, etc. Desde las carpetas y subcarpetas especificadas. La línea ScriptAlias es necesaria una vez para cada instancia de wiki, para que en caso de tener multiples wikis se deberá repetir el enunciado o sentencia usando mywiki2, mywiki3 u otro nombre según convenga. La sentencia ScriptAlias le da instrucciones a Apache para ejecutar scripts desde la carpeta especificada. Para más información sobre la sentencia ScriptAlias es necesario ver la documentación de Apache.
Reiniciar Apache y probar los cambios accediendo a la recien creada wiki en la dirección http://127.0.0.1/mywiki. Deberá ser capaz de ver la página inicial FrontPage, trate de editar y guardar algun cambio, y si eso funciona verificar los cambios en la página RecentChanges.
Nota: Puede que sea necesario permitir acceso a “/”. Para ello será necesario modificar la sección “<Directory />” dentro del fichero httpd.conf.

# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>

# Será necesario modificar lo mostrado en el anterior cuadro por lo siguiente:
<Directory />
AllowOverride All
Allow From All
Options +ExecCGI
</Directory>

Si todo ha ido bien, ha obtenido una wiki funcional y lista para ingresar contenido.
Para ver el contenido de esta nueva wiki ir a:

http://localhost/mywiki
http://127.0.0.1/mywiki


mod_wsgi

Por qué usar mod_wsgi?
mod_wsgi esta escrito directamente con las APIs de Python y Apache y como tal, correr Moin sobre Apache con mod_wsgi tendrá un desempeño mejor que otros aceleradores existentes tales como FastCGI, mod_python, u otras soluciones basadas en proxy.
Ir a mod_wsgi homepage (http://modwsgi.org/) para más detalles.

Primeros pasos
Se recomienda instalar y configurar primero MoinMoin sobre Apache usando CGI (Instalación estándar). Probar y asegurarse que todo funcione, luego cambiar la configuración para usar mod_wsgi. De esta forma nos aseguramos que si existen problemas estos solamente se deban a transición a mod_wsgi y no a la instalación básica o estándar de MoinMoin.

La configuración de ejemplo mostrada más abajo es para una instancia wiki llamada mywiki instalada en la carpeta o directorio C:/Moin/mywiki y con la instalación principal de MoinMoin dentro de la ruta de la librería de Python instalada por defecto.

Descargar e instalar mod_wsgi
  1. Descargar la versión más reciente que corresponda con la versión de Apache instalada. Ir a mod_wsgi homepage (http://modwsgi.org/) para mayor información.
  2. Modificar el fichero de configuración de Apache httpd.conf para agregar la siguiente línea:
  3. Instalar el módulo mod_wsgi (copiar y renombrar a mod_wsgi.so ) dentro de la carpeta “modules”  del la instalación de Apache.
    1. Los usuarios de Linux tendrán que compilar desde las fuentes (lo que debería ser sencillo dado que ya se tiene un ambiente de desarrollo instalado necesario para los pasos previos para la instalación de MoinMoin y Python).
    2. Los usuarios Windows necesitarán obtener el archivo binario pre-compilado desde el sitio web de mod_wsgi.
LoadModule wsgi_module modules/mod_wsgi.so
  1. Reiniciar Apache. Asegurarse que Apache inicie exitosamente y revisar el log de errores por algun mensaje o error.

Modificar Apache httpd.conf
Anteriormente la wiki estaba ejecutandose como un script cgi, ahora la convertiremos para que se ejecute con mod_wsgi.

Si estaba ejecutando la wiki como cgi le recomendamos que eliminar o comentar la directive ScriptAlias:

# ScriptAlias /mywiki "C:/Moin/mywiki/moin.cgi"

Luego, agregar esto a la misma definición del virtualhost:

    WSGIScriptAlias /mywiki "C:/Moin/mywiki/moin.wsgi"
    ## in case you want your wiki under the root url (http://server.example.com/), use this instead:
    #Alias /robots.txt /usr/share/moin/htdocs/robots.txt
    #Alias /favicon.ico /usr/share/moin/htdocs/favicon.ico
    #WSGIScriptAlias / /var/www/moin/mywiki/moin.wsgi

    ## Linux-only (Windows users, please ignore):
    ## uncomment & create some wsgi daemons - use someuser.somegroup same as your data_dir :
    #WSGIDaemonProcess moin user=someuser group=somegroup home=/home/someuser processes=5 threads=10 maximum-requests=1000 umask=0007

    ## Linux-only (Windows users, please ignore):
    ## for mod_wsgi >= 2.0: uncomment & append this to have a nice ps aux display:
    # display-name=wsgi-moin

    ## Linux-only (Windows users, please ignore):
    ## uncomment & use the daemons we defined above to process requests!
    #WSGIProcessGroup moin

    ## This is required if you plan to use HTTP authorization. Without it the user name won't
    ## be passed to MoinMoin.
    #WSGIPassAuthorization On

Editar moin.wsgi
Es necesario darle una mirada dentro de moin.wsgi – probablemente sea necesario cambiar las instruccionessys.path.insert de tal manera que Python pueda encontrar la carpeta y ficheros de configuración de la wiki que acabamos de crear. En Windows tendrás que agregar la siguiente línea despues de “import sys, os“:

import sys, os
sys.path.insert(0, r'C:\Moin\mywiki')

Finalizado!
Reiniciar Apache – todo debería funcionar correctamente. De lo contrario, ir a la sección de Solución a problemas comunes más abajo.


Solución de problemas comunes
El primer logar para buscar pistas sobre algo que no funcione o muestre mensajes no estandares es en: http://127.0.0.1/mywiki?action=test. Si Apache puede encontrar y ejecutar el módulo C:/Moin/mywiki/moin.cgi, una página de diagnóstico titulada MoinMoin CGI Diagnosis será mostrada. Mirar por mensajes de error en ella.

El segundo lugar para mirar es en: C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs\error.log (o su equivalente según la instalación local de Apache). Los siguientes sor errores communes agrupados por el mensaje mostrado en el navegador:
  • Forbidden: You don't have permission to access /mywiki on this server.
    • La seguridad del directorio "default" esta configurado de manera muy restrictiva. Revisar la sección <Directory /> en el fichero httpd.conf de Apache. Se sugiere la siguiente configuración:
<Directory />
AllowOverride All
Allow From All
Options +ExecCGI
</Directory>
  • Internal Server Error
    • Si el log de Apache muestra el mensaje "The system cannot find the file specified." Existe la posibilidad que la sentencia shebang en moin.cgi es incorrecta.
    • Si el log de Apache muestra un mensaje de error diferente, entonces los scripts de MoinMoin o Python  pueden estar fallando (crash/abnormal-end). Para determinar la causa, renombrar temporalmente moin.cgi a  moin.py, abrir moin.py con el idle IDE de Python y ejecutarlo para determinar si hay mensajes de error.
  • Not Found
    • Si el log de errores de Apache muestra el mensaje: "File does not exist: C:/Apache/htdocs/mywiki", la sentencia ScriptAlias en httpd.conf podría ser incorrecta.
  • The Page Cannot be found
    • Si el log de errores de Apache muestra el mensaje: "File does not exist: C:/Apache/htdocs/????", Puede que se haya escrito mal la dirección url de la wiki o que el servidor/servicio de Apache no se este ejecutando o este detenido.
  • FrontPage Loads Without Icons
    • Si el log de errores de Apache muestra varios mensajes: "File does not exist: C:/Apache/htdocs/wiki", entonces puede que la sentencia Alias en httpd.conf sea incorrecta.

No hay comentarios:

Publicar un comentario