Dado el SetupPiolaEnDreamHost la idea es la siguiente:
Vamos a crear un directorio ${RUN}/etc/moinfarm y ahí vamos dejar el farmconfig.py, a colgar el underlay, un data por default, y a crear un subdirectorio para cada instancia del farm que tenga el data específico y el xxxxx.py de configuración.
En ${HOME}/www voy a dejar un directorio MOIN-WIKI-TEMPLATE para generar automáticamente el directorio web para cada instancia.
Empecemos creando los directorios para la instancia default:
export RUN=${HOME}/run
export SHARE=${RUN}/share/moin
mkdir -pv ${RUN}/etc/moinfarm ${RUN}/etc/moinfarm/TEMPLATES
export FARMDIR=${RUN}/etc/moinfarm
cp -R $SHARE/data $FARMDIR
cp -R $SHARE/underlay $FARMDIR
# El usuario y grupo bajo el que corre el CGI es nuestro propio usuario y grupo, entonces:
export USER=`id -un`
export GROUP=`id -gn`
chown -R $USER.$GROUP $FARMDIR
chmod -R ug+rwX $FARMDIR
chmod -R o-rwx $FARMDIRAhora vamos a crear el farmconfig.py basándonos en el que viene en el paquete moin... ya que estamos, lo vamos a pasar de iso-8859-1 a utf-8.
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
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.pyY ahora creamos el INSTEMPLATE.py con el que vamos a ir creando cada una de las instancias:
sed -e 's/MyWiki/NOMBREWIKI/' -e "s#/org/mywiki/data/#${FARMDIR}/NOMBREWIKI/data/#" <${FARMDIR}/TEMPLATES/mywiki.py >${FARMDIR}/TEMPLATES/INSTEMPLATE.pyAcá les hago las modificaciones importantes (esto, obviamente puede variar con el tiempo, pero el farmconfig.py.patch y INSTEMPLATE.py.patch deberían dar una buena idea de lo que hacemos). Bajarse el farmconfig.py.patch y INSTEMPLATE.py.patch y hacer:
cd ${FARMDIR}
patch <farmconfig.py.patch
cd TEMPLATES
patch <INSTEMPLATE.py.patchCreo un directorio para dejar todos los themes generados por nosotros:
mkdir -pv ${FARMDIR}/THEMES
cp -p ${FARMDIR}/data/plugin/theme ${FARMDIR}/THEMESAhora creemos los directorios que van a estar visibles en la web:
export WWWDIR=${HOME}/www
mkdir -pv ${WWWDIR}
mkdir -pv ${WWWDIR}/MOIN-WIKI-TEMPLATE
cp -R ${SHARE}/htdocs ${WWWDIR}/MOIN-WIKI-TEMPLATE/wikistaticPasemos a utf-8 y copiemos el moin.cgi:
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
chmod --reference=${SHARE}/server/moin.cgi ${WWWDIR}/MOIN-WIKI-TEMPLATE/moin.cgiAcá le hago las modificaciones importantes (esto, obviamente puede variar con el tiempo, pero el moin.cgi.patch debería dar una buena idea de lo que hacemos). Bajarse el moin.cgi.patch y hacer:
cd ${WWWDIR}/MOIN-WIKI-TEMPLATE
patch <moin.cgi.patchCreamos el directorio para los themes compartidos:
mkdir -pv ${WWWDIR}/SHAREDAhora, por cada theme que queremos agregar, ponemos el <nombre_del_tema>.py en ${HOME}/run/etc/moinfarm/THEMES/ y el directorio <nombre_del_tema> que contiene los subdirectoios css e img en ${HOME}/www/SHARED.
Cuando tengamos los themes hechos tenemos que "apuntarlos" (por ahora lo pongo a mano, después haremos un script):
export WWWDIR=${HOME}/www
export TARGET=${WWWDIR}/MOIN-WIKI-TEMPLATE/wikistatic
for todo in ${WWWDIR}/SHARED/*
do
nombre=`basename $todo`
if [ -e ${TARGET}/${nombre} ]
then
if [ -h ${TARGET}/${nombre} ]
then
echo "ya hay un link simbólico ${nombre}:"
ls -l ${TARGET}/${nombre}
else
echo "OJO hay 'ALGO' en ${TARGET}/${nombre} que no es un link simbólico:"
ls -l ${TARGET}/${nombre}
fi
else
# no hay nada en ${TARGET}/${nombre}, así que creo el symlink
ln -sv ../../SHARED/${nombre} ${TARGET}
fi
doneFinalmente, necesitamos el superscript crear_instancia_del_farm.sh, bajémoslo de crear_instancia_del_farm.sh y pongámoslo en ${HOME}/run/bin y hagámoslo ejecutable:
chmod +x ${HOME}/run/bin/crear_instancia_del_farm.shAhora, para crear una nueva instancia, se hace con una sóla línea.
Supongamos que queremos crear un wiki llamado "simplementewiki" para el dominio "simplementewiki.org" y con nombre "SimpleMente", entonces:
crear_instancia_del_farm.sh simplementewiki simplementewiki.org SimpleMente
lo crea.
.