Tabla de Contenidos
Instalación básica
Ver http://moinmo.in/HelpOnInstalling/BasicInstallation
# this is an EXAMPLE, replace the number with the actual version
# of MoinMoin that you are going to install (the new version)
# !!!!! make sure this is the rigth version !!!!!
export MOINNEWVERSION=1.5.8
export RUN=/usr/local
cd ${HOME}/soft
wget http://prdownloads.sourceforge.net/moin/moin-${MOINNEWVERSION}.tar.gz
tar xvzf moin-${MOINNEWVERSION}.tar.gz
export MOINSRCDIR=${HOME}/soft/moin-${MOINNEWVERSION}
cd ${MOINSRCDIR}
mkdir -pv ${HOME}/log/setup
sudo python setup.py install --prefix=$RUN --record=${HOME}/log/setup/moin-${MOINNEWVERSION}-install.log
Patch para palabras de una sola letra
Ver http://moinmo.in/FeatureRequests/OneLetterWordInWikiWords
# ${PYLIBPKG} Python library site packages directory
export PYLIBPKG=/usr/local/lib/python2.5/site-packages/
cd ${HOME}/soft
wget -O wiki.py-OneLetterWikiWords-1.5.5a.patch \
'http://moinmo.in/FeatureRequests/OneLetterWordInWikiWords?action=AttachFile&do=get&target=wiki.py-OneLetterWikiWords-1.5.5a.patch'
cd ${PYLIBPKG}/MoinMoin/parser
sudo patch <${HOME}/soft/wiki.py-OneLetterWikiWords-1.5.5a.patch
Configuración Inicial
Crear variables de entorno y directorios que usaremos
En la variable $WIKIADMIN poner el NombreWiki del administrador del wiki (este va a ser el super user).
# ${WIKIADMIN} The MoinMoin SUPER USER (be careful)
export WIKIADMIN=<The WikiName of the SuperUser for this installation>
# this is an EXAMPLE, replace the number with the actual version
# of MoinMoin that you are going to install (the new version)
# !!!!! make sure this is the rigth version !!!!!
export MOINNEWVERSION=1.5.8
export MOINSRCDIR=${HOME}/soft/moin-${MOINNEWVERSION}
# ${PYVERS} Python version
export PYVERS=`python -V 2>&1 | cut -d ' ' -f 2`
# ${PYLIBPKG} Python library site packages directory
export PYLIBPKG=/usr/local/lib/python2.5/site-packages/
# ${SHARE} holds the common MoinMoin files
export SHARE=${RUN}/share/moin
# ${FARMDIR} will have the farm configuration file and
# the instances configuration directories (including
# the instance configuration file and the data directory)
export FARMDIR=${RUN}/etc/moin
# ${MOINBACKUP} will hold backups
export MOINBACKUP=${FARMDIR}/backup
# ${WWWDIR} is the directory under which we place web
# sites directories.
export WWWDIR=/var/vhost-www
sudo mkdir -pv ${FARMDIR}
sudo mkdir -pv ${FARMDIR}/TEMPLATES
sudo mkdir -pv ${FARMDIR}/patches
sudo mkdir -pv ${MOINBACKUP}
# Link the <code>underlay</code> directory to the ${FARMDIR}
#(the data directories will be generated for each instance
# of the farm)
sudo ln -sv ${SHARE}/underlay ${FARMDIR}
sudo ln -sv ${SHARE}/data ${FARMDIR}
sudo mkdir -pv ${WWWDIR}
# ${WWWDIR}/MOIN-WIKI-TEMPLATE directory to hold a template to create instances
sudo mkdir -pv ${WWWDIR}/MOIN-WIKI-TEMPLATE
# ${WWWDIR}/SHARED directory to hold common files used by all
# instances (that have to be visible from the web).
sudo mkdir -pv ${WWWDIR}/SHARED
# ${FARMDIR}/THEMES will hold the non-web-visible files for
# common themes
sudo mkdir -pv ${FARMDIR}/THEMES
Copiar algunos archivos de la distribución
# copy wiki static files
if [ -d ${WWWDIR}/MOIN-WIKI-TEMPLATE/wiki ]
then
sudo cp -R ${SHARE}/htdocs/* ${WWWDIR}/MOIN-WIKI-TEMPLATE/wiki
else
sudo cp -R ${SHARE}/htdocs ${WWWDIR}/MOIN-WIKI-TEMPLATE/wiki
fi
# copy provided themes
sudo cp -p ${SHARE}/data/plugin/theme/* ${FARMDIR}/THEMES
# copy documentation
sudo cp -r ${MOINSRCDIR}/docs ${SHARE}
if [ -d ${RUN}/share/doc ]
then
sudo ln -svf ../moin/docs ${RUN}/share/doc/moin
fi
Crear archivos y templates de configuración
farmconfig.py y mywiki.py
Empezamos a tocar los archivos de configuración. Instalamos el archivo de configuración del farm (farmconfig.py) y el archivo de configuración de una instancia wiki (mywiki.py) en nuestro ${FARMDIR}. Estos archivos están en iso-8859-1 y los convertimos a utf-8 que es más flexible (también cambiamos la declaración interna del charset para que Python sepa que son utf-8). Generamos el archivo template de configuración de instancia INSTEMPLATE.py basándonos en el mywiki.py:
sudo bash -c "iconv --from-code=ISO-8859-1 --to-code=UTF-8 ${SHARE}/config/wikifarm/farmconfig.py | \
sed -e 's/# -\*- coding: iso-8859-1 -\*-/# -*- coding: utf-8 -*-/' > ${FARMDIR}/farmconfig.py "
sudo bash -c "iconv --from-code=ISO-8859-1 --to-code=UTF-8 ${SHARE}/config/wikifarm/mywiki.py | \
sed -e 's/# -\*- coding: iso-8859-1 -\*-/# -*- coding: utf-8 -*-/' > ${FARMDIR}/TEMPLATES/mywiki.py "
sudo bash -c "sed -e 's/MyWiki/NAMEOFWIKI/' -e \"s#/org/mywiki/data/#${FARMDIR}/NAMEOFINSTANCE/data/#\" \
<${FARMDIR}/TEMPLATES/mywiki.py >${FARMDIR}/TEMPLATES/INSTEMPLATE.py "bajamos y aplicamos un patch para configurar el archivo automáticamente
cd ${FARMDIR}/patches
sudo wget http://ybab.net/moin.baby.com.ar/patches/farmconfig.py.patch
# adapt the patch to our environment variable ${RUN}
sudo sed -i.download -e "s#FARMDIRENVVAR#${FARMDIR}#" -e "s#WIKIADMINENVVAR#${WIKIADMIN}#" farmconfig.py.patch
cd ${FARMDIR}
sudo patch < ${FARMDIR}/patches/farmconfig.py.patchAhora hay que configurar ${FARMDIR}/farmconfig.py como haga falta.
Poner en ${FARMDIR}/farmconfig.py todos los seteos que queremos que se apliquen a todas las instancias del farm.
- Si se cambia algo luego de crear algunas instancias, los cambios se aplicarán a todas las instancias ya creadas (excepto las que hayan configurado el mismo seteo en su archivo de configuración individual).
También se pueden poner seteos por default que suelan ser modificados individualmente para cada instancia. Estos seteos hay que ponerlos en ${FARMDIR}/TEMPLATES/INSTEMPLATE.py
- Este archivo se usa para generar el archivo de configuración de cada instancia que se crea.
- Una vez que haya sido generado, se puede modificar
Si se modifica el archivo ${FARMDIR}/TEMPLATES/INSTEMPLATE.py después de haber generado algunas instancias, los cambios en el template sólo se aplicarán a las instancias que se creen luego de dicha modificación.
Las instancias que ya fueron creadas no son afectadas por estos cambios.
moin.cgi
Ahora hay que poner el script principal moin.cgi en el directorio ${WWWDIR}/MOIN-WIKI-TEMPLATE. Vamos a convertir este archivo de iso-8859-1 a utf-8.
También vamos a crear un .htaccess razonable en el directorio de template:
sudo bash -c "iconv --from-code=ISO-8859-1 --to-code=UTF-8 ${SHARE}/server/moin.cgi | \
sed -e 's/# -\*- coding: iso-8859-1 -\*-/# -*- coding: utf-8 -*-/' > ${WWWDIR}/MOIN-WIKI-TEMPLATE/moin.cgi "
# let's patch the file:
cd ${FARMDIR}/patches
sudo wget http://ybab.net/moin.baby.com.ar/patches/moin.cgi.patch
# adapt the patch to our environment variable ${RUN}
sudo bash -c "sed -i.download -e "s#RUNENVVAR#${RUN}#" -e "s#PYLIBENVVAR#${PYLIBPKG}#" moin.cgi.patch "
cd ${WWWDIR}/MOIN-WIKI-TEMPLATE
sudo patch < ${FARMDIR}/patches/moin.cgi.patch
sudo chmod --reference=${SHARE}/server/moin.cgi ${WWWDIR}/MOIN-WIKI-TEMPLATE/moin.cgi
sudo bash -c "cat >${WWWDIR}/MOIN-WIKI-TEMPLATE/.htaccess <<EOF
DirectoryIndex moin.cgi index.html
Options FollowSymLinks ExecCGI
# start the rewrite engine
RewriteEngine On
RewriteBase /
RewriteRule ^(wiki/|moin.cgi) - [last]
# If you want to hide the moin.cgi from the URLs, in moin.cgi
# replace the line that says
# request = RequestCGI()
# for a line like this one:
# request = RequestCGI(properties={'script_name':'/'})
# and uncomment the following line
#RewriteRule ^(.*) moin.cgi/\$1 [type=application/x-httpd-cgi]
EOF
"
Themes
Si se quieren usar temas propios (o bajados del MoinMoin's Theme Market) hay que hacer lo siguiente:
- Para cada tema nombre_del_tema
Poner el archivo nombre_del_tema.py en ${FARMDIR}/THEMES
Poner el directorio nombre_del_tema en ${WWWDIR}/SHARED
Después hay que hacer un link simbólico a cada uno de los directorios en ${WWWDIR}/SHARED que se quieran usar desde cada directorio correspondiente a una instancia de MoinMoin.
Hacemos un symlink a todos los que hay en MOIN-WIKI-TEMPLATE para que cada nueva instancia tenga todos estos temas disponibles (se pueden borrar los symlinks de las instancias en las que no se quiera que estén disponibles).
TARGET=${WWWDIR}/MOIN-WIKI-TEMPLATE/wiki
for theme in ${WWWDIR}/SHARED/*
do
name=`basename $theme`
if [ -e ${TARGET}/${name} ]
then
if [ -h ${TARGET}/${name} ]
then
echo "there already is a symlink ${name}:"
sudo ls -l ${TARGET}/${name}
else
echo "LOOKOUT! there's 'SOMETHING' in ${TARGET}/${name} but it's not a symlink:"
sudo ls -l ${TARGET}/${name}
fi
else
# there's nothing in ${TARGET}/${name}, so we create the symlink
sudo ln -sv ../../SHARED/${name} ${TARGET}
fi
done
Instancias (sitios)
Script de creación de sitio
Ahora está todo listo, excepto los sitios en sí. Para facilitar la creación de instancias, bajamos el script create_moin_instance.sh, lo copiamos en algún lugar del ${PATH} y lo hacemos ejecutable:
sudo wget -O ${RUN}/bin/create_moin_instance.sh http://ybab.net/moin.baby.com.ar/scripts/create_moin_instance.sh
sudo chmod -v +x ${RUN}/bin/create_moin_instance.sh
Creación de una instancia del Farm
Configurar el dominio o subdominio donde se va a poner el wiki (suponemos que el wiki va en la raíz del dominio/subdominio). Hay que configurar el DNS y el apache (ver que funcione con el directorio vacío).
Supongamos que creamos un subdominio my-super-wiki.example.com. Esto debería terminar quedando en ${WWWDIR}/mi-super-wiki.example.com.
Ahora, para crear la instancia, simplemente invocamos el script create_moin_instance.sh con los parámetros apropiados:
Nombre de la instancia (un nombre corto que identifica la instancia localmente, sólo minúsculas y dígitos comenzando con una letra). En este ejemplo: misuperwiki.
Nombre del dominio (el nombre de dominio de esta instancia wiki). En este ejemplo: my-super-wiki.example.com.
(opcional) Nombre Wiki (el NombreWiki de esta wiki. Tiene que ser un NombreWiki). En este ejemplo: MiSuperWiki
La invocación quedaría:
sudo create_moin_instance.sh misuperwiki mi-super-wiki.example.com MiSuperWiki
La salida de esto se va a parecer a esto:
Creating and populating instance directory /usr/local/etc/moinfarm/misuperwiki creating symlinks to see the themes from /usr/local/etc/moinfarm/THEMES Creating and populating web directory /home/inst/www/mi-super-wiki.example.com Creating instance configuration file /usr/local/etc/moinfarm/misuperwiki/misuperwiki.py Generating farm configuration file /usr/local/etc/moinfarm/farmconfig.20070724_173742.py moving /usr/local/etc/moinfarm/farmconfig.py ===> /usr/local/etc/moinfarm/BACKUP_PRE-misuperwiki.20070724_173742-farmconfig.py moving /usr/local/etc/moinfarm/farmconfig.20070724_173742.py ===> /usr/local/etc/moinfarm/farmconfig.py Ready. Old farm configuration file saved in /usr/local/etc/moinfarm/BACKUP_PRE-misuperwiki.20070724_173742-farmconfig.py
Ahora hay que revisar los cambios en ${RUN}/etc/moin/farmconfig.py, notar que hay un nuevo directorio ${RUN}/etc/moin/misuperwiki que tiene el archivo de configuración de la instancia ${RUN}/etc/moin/misuperwiki/misuperwiki.py (este archivo se puede configura como se quiera para personalizar la instancia) y el directorio ${RUN}/etc/moin/misuperwiki/data que va a contener todos los datos de esta wiki.
En /var/vhost-www/mi-super-wiki.example.com va a estar el script principal moin.cgi y un subdirectorio llamado wiki que tiene los archivos que deben ser visibles desde la web. El archivo /var/vhost-www/mi-super-wiki.example.com/.htaccess tiene instrucciones para evitar que se vea el nombre moin.cgi en la barra de navegación de los browsers.
Upgrades
Falta adaptar lo de http://wiki.dreamhost.com/MoinMoin#Upgrading
.