(adaptado de lo que escribí en la wiki de DreamHost)

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.patch

Ahora 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:

  1. 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.

  2. Nombre del dominio (el nombre de dominio de esta instancia wiki). En este ejemplo: my-super-wiki.example.com.

  3. (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

InstalaciónDeMoinEnUbuntu (última edición 2008-01-29 14:14:49 efectuada por localhost)

Edit and actions menu

  • Página inmutable
  • Información
  • Adjuntos