Instalación de MoinMoin en un sitio virtual en Pericles
Tabla de Contenidos
Pasos previos
Antes de instalar el MoinMoin, es necesario tener una versión razonable de Python instalada. El Ensim tiene la 2.2.3 que es compeltamente inútil. Conviene instalar la versión 2.4. Esto hay que hacerlo antes de empezar con el MoinMoin.
También es necesario cambiar el propietario del /var/www al administrador del sitio donde se va a instalar el MoinMoin (esto lo tiene que hacer el administrador de Pericles).
Instalación del MoinMoin
Nos logueamos via ssh como administradores del sitio virtual.
Definiciones de paths y nombres
Es necesario tomar nota del directorio home del administrador del sitio (usualmente /home/admin, pero depende del username específico del administrador). Atención: en esta explicación asumiremos que el directorio es /home/admin para todas las configuraciones. Pero hay que tener en cuenta que esto puede no ser así.
Hay que definir en qué path se va a ver el MoinMoin en la web. Puede ser en la raíz del sitio virtual o en un subdirectorio. Supongamos que queremos que se vea en un subdirectorio /moin. Esto es, para ver la página inicial del moin usaremos http://www.example.com/moin (esto no crea un subdirectorio /moin real, si no que se maneja entre el moin.cgi (que en realidad está en /var/www/cgi-bin/moin.cgi) y el archivo /var/www/html/.htaccess.
También hay que definir en qué path van a ir los datos estáticos (este path tiene que ser distinto del anterior). Usaremos el subdirectorio /wiki (que es el default de MoinMoin) para esto.
Crearemos un subdirectorio moin-<numero de versión> en el home del administrador para dejar los datos que no pueden ser accedidos directamente desde la web (si no que sólo los ve el moin.cgi). También crearemos un link simbólico para no tener que cambiar toda la configuración si hacemos un upgrade del MoinMoin.
Supongamos que vamos a instalar la versión 1.5.4 de MoinMoin, entonces, hacemos lo siguiente:
mkdir /var/www/html/wiki mkdir ~/moin-1.5.4 cd ~ ln -s moin-1.5.4 moin
Tenemos que definir el nombre de usuario MoinMoin que va a ser el administrador (superuser). Conviene que sea el WikiWord NombreApellido correspondiente al nombre y apellido del administrador. Digamos que usamos JoséYoAdministroElMoin para los ejemplos. Si no queremos que cualquiera pueda editar las páginas, nos conviene crear un GrupoDeEditores a los que les daremos permiso de edición (y al resto de los usuarios no).
También es necesario definir si el wiki va a ser multiidioma o va a estar mayormente en un solo idioma (castellano o inglés, por ejemplo). Supongamos que lo vamos a tener en un solo idioma.
- Finalmente, para que funcione el mail, tenemos que tener un server de mail, una dirección remitente y un usuario/clave en el server para poder enviar los mensajes. Supognamos que estos datos son los siguientes para los ejemplos:
Servidor de mail saliente: smtp.example.com
Remitente de los mensajes del wiki: Administrador del Wiki <wiki@example.com>
Usuario para autenticarse en smtp.example.com: fulano@example.com
Clave de fulano@example.com en smtp.example.com: sEcReTo
Bajar el paquete, abrirlo y copiar
Hacemos lo siguiente (en algún subdirectorio dentro del home del administrador, no hacerlo directamente en /home/admin si no en algún subdirectorio (por ejemplo /home/admin/soft:
wget http://umn.dl.sourceforge.net/sourceforge/moin/moin-1.5.4.tar.gz tar xvfz moin-1.5.4.tar.gz cd moin-1.5.4 cp -R MoinMoin ~/moin cd wiki # deshabilitamos la web hasta que terminemos de configurar echo "deny from all" > /var/www/html/.htaccess cp -R data underlay ~/moin cp -R htdocs/* /var/www/html/wiki cp config/wikiconfig.py ~/moin cp server/moin.cgi /var/www/cgi-bin
Configuraciones
moin.cgi
Editamos el archivo /var/www/cgi-bin/moin.cgi:
- Cambiamos la primera línea por la siguiente:
(suponiendo que allí esté el Python 2.4 que compilamos).
- Cambiamos la línea que dice
sys.path.insert(0, '/path/to/wikiconfig')
- por una que diga
sys.path.insert(0, '/home/admin/moin')
(que es el directorio donde dejamos el wikiconfig.py).
- Debajo de la linea (comentada) que dice:
## sys.path.insert(0, 'PREFIX/lib/python2.3/site-packages')
- ponemos:
sys.path.insert(0, '/home/admin/moin/MoinMoin')
(que es el directorio donde dejamos las libs MoinMoin)
- Finalmente, buscamos la línea que dice:
request = RequestCGI()
- y la cambiamos para que diga:
# OJO: en /var/www/html/.htaccess DEBE decir lo siguiente:
# RewriteRule ^moin(.*)$ /cgi-bin/moin.cgi$1 [type=application/x-httpd-cgi]
request = RequestCGI(properties={'script_name':'/moin'})Pero si queremos que el MoinMoin esté en la raíz del sitio virtual, entonces esta línea tiene que ser:
# OJO: en /var/www/html/.htaccess DEBE decir lo siguiente:
# RewriteRule ^(.*)$ /cgi-bin/moin.cgi/$1 [type=application/x-httpd-cgi]
request = RequestCGI(properties={'script_name':'/'})(y también hay que hacer un cambio en el .htaccess).
wikiconfig.py
Editamos el archivo ~/moin/wikiconfig.py:
- Buscamos la línea que dice:
sitename = u'Untitled Wiki'
y cambiamos Untitled Wiki por el nombre que querramos darle a nuestro wiki (aparecerá en la barra de la ventana de los browsers).
- Buscamos la línea que dice:
data_dir = './data/'
- y ponemos:
data_dir = '/home/admin/moin/data/'
- Buscamos la línea que dice:
data_underlay_dir = './underlay/'
- y ponemos:
data_underlay_dir = '/home/admin/moin/underlay/'
Si dejamos /wiki como el path para datos fijos, entonces la línea:
url_prefix = '/wiki'
- queda como está.
Permisos
- Buscar la línea (comentada) que dice:
#acl_rights_before = u"YourName:read,write,delete,revert,admin"
- y a continuación poner:
# habilitamos acl (¿ahora es por defecto?) acl_enabled = 1 # permisos de superuser acl_rights_before = u"JoséYoAdministroElMoin:read,write,delete,revert,admin" # permisos para editores (todo menos admin) acl_rights_default = u"GrupoDeEditores:read,write,delete,revert All:read" # el resto, aunque esté registrado, sólo puede leer acl_rights_after = u"All:read"
- Buscar la línea (comentada) que dice:
#mail_smarthost = ""
- y a continuación poner:
mail_smarthost = "smtp.example.com"
- Buscar la línea (comentada) que dice:
#mail_from = u""
- y a continuación poner:
mail_from = u"Administrador del Wiki <wiki@example.com>"
- Buscar la línea (comentada) que dice:
#mail_login = ""
- y a continuación poner:
mail_login = "fulano@example.com sEcReTo"
Idioma (language)
- Si queremos cambiar el idioma por defecto de inglés a castellano, buscamos la línea que dice:
language_default = 'en'
- y ponemos:
language_default = 'es'
Es obligatorio definir cuál va a ser la página de inicio. Buscar la línea (comentada) que dice:
#page_front_page = u"MyStartingPage"
- y a continuación poner el nombre que queremos que tenga la página inicial, por ejemplo:
page_front_page = u"PáginaInicial"
si en lugar de esto queremos que el wiki sea multiidioma, ponemos lo siguiente:
page_front_page = u"FrontPage"
y el MoinMoin elegirá la página inicial según el idioma que desee el usuario (suponiendo que dicho idioma esté instalado).
.htaccess
Editamos el archivo /var/www/html/.htaccess:
- Ya tenemos todo razonablemente configurado, así que podemos quitar la única línea que tiene este archivo que dice:
deny from all
Si vamos a hacer que el wiki sea accesible desde http://www.example.com/moin, entonces el archivo .htaccess debería tener el siguiente contenido:
# start the rewrite engine
RewriteEngine On
RewriteRule ^(wiki/.*)$ $1 [last]
# OJO en /var/www/cgi-bin/moin.cgi DEBE decir lo siguiente:
# request = RequestCGI(properties={'script_name':'/moin'})
RewriteRule ^moin(.*)$ /cgi-bin/moin.cgi$1 [type=application/x-httpd-cgi]
Por el contrario, si queremos que el wiki sea accesible desde la raíz de http://www.example.com/, entonces el archivo .htaccess debería tener el siguiente contenido:
# start the rewrite engine
RewriteEngine On
RewriteRule ^(wiki/.*)$ $1 [last]
# OJO en /var/www/cgi-bin/moin.cgi DEBE decir lo siguiente:
# request = RequestCGI(properties={'script_name':'/'})
RewriteRule ^(.*)$ /cgi-bin/moin.cgi/$1 [type=application/x-httpd-cgi]
Otras configuraciones opcionales
Usar expresiones regulares en castellano (o bilingües) para categorías, grupos y plantillas
No es complicado cambiar el idioma de las expresiones regulares que se utilizan para detectar tipos especiales de páginas... es más, vamos a dejar una versión bilingüe (inglés/castellano).
Editamos el archivo ~/moin/wikiconfig.py:
- Buscamos las líneas que dicen:
page_category_regex = u'^Category[A-Z]'
page_dict_regex = u'[a-z]Dict$'
page_form_regex = u'[a-z]Form$'
page_group_regex = u'[a-z]Group$'
page_template_regex = u'[a-z]Template$'- y las cambiamos para que queden así:
page_category_regex = u'^Categor(y|ía)[A-Z]'
page_dict_regex = u'[a-z]Dict$'
page_form_regex = u'[a-z]Form$'
page_group_regex = u'([a-z]Group$)|(^Grupo[A-Z])'
page_template_regex = u'([a-z]Template$)|(^Plantilla[A-Z])'(no cambié page_dict_regex y page_form_regex porque no sé lo que son y nunca las usé, pero se pueden modificar en forma análoga).
Logo
Es fácil de cambiar (o sacar) el logo que aparece arriba a la izquierda.
Editamos el archivo ~/moin/wikiconfig.py:
- Buscamos la línea que dice:
logo_string = u'<img src="/wiki/common/moinmoin.png" alt="MoinMoin Logo">'
y cambiamos el string por lo que querramos. OJO, hay que tener cuidado con el .htaccess para que el MoinMoin no interprete el path hacia el gráfico.
"Bajar" el título de la página
MoinMoin usualmente muestra el nombre de la página al lado del logo (arriba del menú). Si queremos bajar esto a lo que sería el contenido en sí de la página, hay que hacer lo siguiente:
Editamos el archivo ~/moin/MoinMoin/theme/modern.py (hacer un backup antes, por si acaso):
- Buscamos las líneas que dicen:
u'<div id="locationline">',
self.interwiki(d),
self.title(d),
u'</div>',las sacamos de donde están y las insertamos inmediatamente antes de una línea que dice:
self.startPage(),
pero para que no se junten las dos líneas de arriba (la de comandos/preferencias y la de las últimas páginas visitadas), en el lugar donde estaba el <div id="locationline"> ponemos lo siguiente:
u'<div id="BABY_ParaQueBajeLoDeAbajo">',
u'</div>',
.