Instalar ikiwiki

ver: http://ikiwiki.info/setup/ y http://ikiwiki.info/tips/dot_cgi/

instalar ikiwiki de los repositorios

 apt-get install ikiwiki

crear una instancia de ikiwiki

 ikiwiki --setup /etc/ikiwiki/auto.setup

pregunta el entre otros datos y crea los archivos en el directorio del usuario!

mover los archivos (ej: /opt/ikiwiki y /var/www)

config file

 mv /<carpeta_usuario>/<nombre_wiki>.setup /opt/ikiwiki

static files

 mv /<carpeta_usuario>/public_html/<nombre_wiki> /var/www/<nombre_wiki> 

ikiwiki repo

 mv /<carpeta_usuario>/<nombre_wiki>.git /opt/ikiwiki/<nombre_wiki>.git

borrar el ikiwiki src (el que contiene los archivos .md fuente)

 rm -r /<carpeta_usuario>/<nombre_wiki>

clonar el src de la nueva localizacion del repo

 cd /opt/ikiwiki
 git clone /opt/ikiwiki/<nombre_wiki>.git

se creará /opt/ikiwiki/<nombre_wiki>

setup wiki

editar .setup cambiando las nuevas direcciones y luego

 ikiwiki --verbose --setup <nombre_wiki>.setup

configurar apache

editar /etc/apache2/apache2.conf y agregar al final

 AddHandler cgi-script .cgi

luego agregar un virtualhost, por ejemplo /etc/apache2/sites-enabled/000-default

 <VirtualHost *:80>
     ServerName sitio.org
     ServerAlias www.sitio.org

     DocumentRoot /var/www/<nombre_wiki>
     ErrorLog ${APACHE_LOG_DIR}/<nombre_wiki>-error.log
     LogLevel warn
     CustomLog ${APACHE_LOG_DIR}/<nombre_wiki>-access.log combined

     AddHandler cgi-script .cgi
     Options FollowSymLinks +ExecCGI
 </VirtualHost>

reiniciar apache

 /etc/init.d/apache2 restart

voila!

Resetear password

ver https://ikiwiki.info/tips/inside_dot_ikiwiki/discussion/

para desactivar nuevas cuentas

http://ikiwiki.info/forum/Disable_account_creation_for_new_users/#comment-d9a464cd90e1b8f807b6979673a3a3a5

Activar Multimarkdown

Para activarlo modificar en wiki.setup

# mdwn plugin
# enable multimarkdown features?
multimarkdown => 1,

para instalar text::multimarkdown via cpan

 apt-get install build-essential cpanminus
 cpanm Text::MultiMarkdown

Por un bug de ikiwiki las notas al pie no funcionan correctamente si no se desinstala htmlscrubber

# plugins to disable
disable_plugins => [qw{openid htmlscrubber}],

Ejecutar ikiwiki para reconstruir el sitio

ikiwiki --verbose --setup <nombre_wiki>.setup

Links:

custom highlight

(dirty mode) modificando _DoItalicsAndBold en usr/share/perl5/Text/Markdown

    sub _DoItalicsAndBold {
        my ($self, $text) = @_;

        # Handle at beginning of lines:
        $text =~ s{ ^(\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) \1 }
            {<strong>$2</strong>}gsx;

    +   $text =~ s{ ^(\@\@) (?=\S) (.+?[@]*) (?<=\S) \1 }
    +       {<span class="custom-highlight">$2</span>}gsx;

        $text =~ s{ ^(\*|_) (?=\S) (.+?) (?<=\S) \1 }
            {<em>$2</em>}gsx;

        # <strong> must go first:
        $text =~ s{ (?<=\W) (\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) \1 }
            {<strong>$2</strong>}gsx;

    +   $text =~ s{ (?<=\W) (\@\@) (?=\S) (.+?[@]*) (?<=\S) \1 }
    +       {<span class="custom-highlight">$2</span>}gsx;

        $text =~ s{ (?<=\W) (\*|_) (?=\S) (.+?) (?<=\S) \1 }
            {<em>$2</em>}gsx;
        # And now, a second pass to catch nested strong and emphasis special cases
        $text =~ s{ (?<=\W) (\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) \1 }
            {<strong>$2</strong>}gsx;

        $text =~ s{ (?<=\W) (\*|_) (?=\S) (.+?) (?<=\S) \1 }
            {<em>$2</em>}gsx;

        return $text;
     }

ikiwikis distribuidos

notas para "laptop wiki with git":

clonar desde el repositorio remoto src.git usando git en la carpeta local donde se ubicara ikiwiki:

git clone ssh://user@server.com:<puerto>/ruta/miwiki/src.git /ruta/local/miwiki/src

uso de rsync para copiar carpetas remotas de la instancia ikiwiki:

# crear directorio y copiar (es decir, la primera vez)
rsync -avz --rsh 'ssh -p<puerto>' user@server.com:/ruta/miwiki/templates /ruta/local/miwiki/

# actualizar un directorio (ojo '/' final)
rsync -avz --rsh 'ssh -p<puerto>' user@server.com:/ruta/miwiki/templates/ /ruta/local/miwiki/templates/

más tips

  • seguir las instrucciones de laptop wiki with git
  • el plugin highlight se instala aparte, buscarlo en apt-get: libhighlight-perl
  • el plugin multimarkdown se instala aparte, en apt-get: libtext-multimarkdown-perl (verificar esto)
  • si gitorigin_branch: no funciona probar con gitorigin_branch => '',
  • antes de correr ikiwiki -setup miwiki.setup -getctime, asegurarse de que las rutas a /var/www/miwiki... y urls (ej: http://miwiki.localhost) estén bien configuradas
  • se debe crear el usuario admin con la clave para crear nuevos usuarios que esta en miwiki.setup account_creation_password => ...

uso:

  • luego de usar git en el sistema local para traer cambios (git pull) desde el servidor, se necesita ikiwiki -setup /ruta/a/wiki.setup para actualizar el wiki local, en cambio cuando se pushea un cambio hacia el servidor, este actualiza automáticamente

Sincronización con Github

Teniendo en cuenta el siguiente escenario:

  • Servidor A: $SOURCE, un repositorio en instancia/src con los archivos editables y $REPOSITORY, un repositorio bare en instancia/src.git
  • Servidor B: $GITHUB, un tercer repositorio de respaldo en el servicio de Github
  • Las actualizaciones via ikiwiki.cgi (interfaz web), y las realizadas en $SOURCE via edición de archivos, se deben propagar a $REPOSITORY y $GITHUB
  • Las modificaciones en $GITHUB se actualizan en $SOURCE solo manualmente

1) Crear un repositorio vacío en Github

Se debe seguir el proceso indicado en el tutorial sitio, y debemos tener una cuenta.

ToDo: describir como crear un repositorio bare en cualquier servidor y como autorizar push desde otros repositorios

2) Agregar el repositorio de Github como remote

Ir al repositorio $SOURCE (src) de la instancia ikiwiki, logueado con el usuario correspondiente y agregar el repositorio de Github como otro remote

 git remote add github https://github.com/<user>/<repositorio.git>

Verificar que se agregó correctamente

 git remote -v

 > github https://github.com/<user>/<repositorio.git> (fetch)
 > github https://github.com/<user>/<repositorio.git> (push)

Pushear el contenido de $SOURCE en $GITHUB (pedira usuario y contraseña del usuario Github por esta vez)

 git push github master

Entrar al sitio de Github y verificar via web que el repositorio se haya sincronizado

3) Crear llaves ssh para actualizar el repositorio de Github sin contraseña:

Para poder automatizar el proceso, denemos poder pushear desde $SOURCE en modo no interactivo, es decir sin la necesidad de ingresar usuario/contraseña para autorizar la modificación del repositorio en Github. Se debe seguir el procedimiento detallado en la documentación de Github para agregar una llave ssh como método de autenticación: Connecting to GitHub with SSH

Luego de agregar la llave en el servicio de GitHub, confirmar la autorizacion desde el servidor donde esté alojado $SOURCE con el comando:

 ssh -T git@github.com

por ultimo cambiar el tipo de url de http://github... por git@github...

 git remote set-url github git@github.com:<user>:/<repositorio>

luego al hacer git push github, no debería solicitar usuario/contraseña

4) Metodos para automatizar la propagación a Github:

Opción 1) modificar .setup y descomentar

 git_wrapper_background_command => 'git push github',

y reconstruir el wiki

 ikiwiki --verbose --setup </ruta/a/configuracion>.setup

nota: esta opción sólo funciona cuando se actualizan los archivos del repositorio $SOURCE manualmente y se realiza un commit desde la terminal, y no vía edición web (ikiwiki.cgi)

Opción 2) crear o editar el archivo .git/hooks/post-commit en $SOURCE

#!/bin/sh
git push github master

darle permisos de ejecución

chmod a+x .git/hooks/post-commit

Realizar una modificación via web en el ikiwiki alojado en el servidor A y verificar la modificacion en el repositorio de respaldo en Github

Traer los cambios de github al $SOURCE (testear!!)

git pull github master
git commit -m "from github"

Funcionamiento de Ikiwiki con Git

ver mas

Here is how a web edit works with ikiwiki and git:

  • ikiwiki cgi modifies the page source in the clone
  • git-commit in the clone
  • git push origin master, pushes the commit from the clone to the master repo
  • the master repo's post-update hook notices this update, and runs ikiwiki
  • ikiwiki notices the modifies page source, and compiles it

Here is a how a commit from a remote repository works:

  • git-commit in the remote repository
  • git-push, pushes the commit to the master repo on the server
  • (Optionally, the master repo's pre-receive hook runs, and checks that the update only modifies files that the pshing user is allowed to update. If not, it aborts the receive.)
  • the master repo's post-update hook notices this update, and runs ikiwiki
  • ikiwiki notices the modifies page source, and compiles it

ver además:

http://ikiwiki.info/templates/ http://ikiwiki.info/themes/

lindo tema: https://github.com/AntPortal/ikiwiked

!Bootstrap para ikiwiki

ver -> https://github.com/kheops2713/words.ceops.eu/blob/master/posts/Improving%20Ikiwiki%20style%20with%20Bootstrap.mdwn -> https://joel.porquet.org/wiki/hacking/ikiwiki_bootstrap/


http://library.linode.com/web-applications/wikis/ikiwiki/ubuntu-10.04-lucid http://www.deferredprocrastination.co.uk/blog/2011/getting-started-with-ikiwiki-part-1/