para compilar el wiki (crear o actualizar los archivso .html) ir a la carpeta del ikiwiki:
ikiwiki --verbose --setup <nombre_wiki>.setup
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
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
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
- http://ikiwiki.info/tips/distributed_wikis/
- ikiwiki.info -> "laptop wiki with git"
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 - actualizacion: si se instala provoca que dalwiki no compile, revisar wiki.setup) - si
gitorigin_branch:
no funciona probar congitorigin_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 necesitaikiwiki -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 eninstancia/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
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
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/
Compilar e instalar manualmente
(version 3.20170111 para debian jessie)
requisitos
herramientas para compilacion:
gettext build-essential git checkinstall
dependencias de ikiwiki
libmarkdown2 libjson-perl libhtml-scrubber-perl libhtml-template-perl libhtml-parser-perl libyaml-libyaml-perl libtext-markdown-discount-perl liburi-perl perl gcc
sugerencias y reecomendacion (los plugins pueden necesitar paquetes extras que no son dependencias de ikiwiki)
libimage-magick-q16-perl libimage-magick-perl libauthen-passphrase-perl libcgi-formbuilder-perl libcgi-session-perl libcgi-pm-perl libcrypt-ssleay-perl libgravatar-url-perl libmail-sendmail-perl libnet-openid-consumer-perl librpc-xml-perl libterm-readline-gnu-perl libtimedate-perl libxml-simple-perl libhighlight-perl libhtml-tree-perl liblocale-gettext-perl libtext-multimarkdown-perl libxml-feed-perl libxml-writer-perl
obtener el código
mkdir /opt/src
cd /opt/src
git clone git://ikiwiki.branchable.com/source.git ikiwiki
cd ikiwiki
git fetch
git checkout debian-jessie-backports
compilar e instalar
compilar:
perl Makefile.PL PREFIX=/usr
make
instalar:
confirmar que exista /usr/lib/ikiwiki
, sino crearlo
crear el paquete para debian:
checkinstall -D --install=no
(hay que cambiar la version y eliminar los requerimientos)
instalar el paquete debian creado con dpkg
:
dpkg -i ikiwiki*.deb