Opus, open source wiki

Opus es un interesante proyecto open source, mas que una wiki es una base de conocimiento, ya sea para concentrar la información y documentación, documentar procesos o para compartir y almacenar información.

Conforme un proyecto va creciendo, la necesidad de generar y administrar la documentación de este aumenta, el compartir la información con nuestros colaboradores se vuelve difícil sin la herramienta adecuada.

Entre las características de Opus podemos encontrar:

  • Crear y administrar wikis
  • Crear paginas anidadas dentro de las wikis
  • Administrar wikis y páginas por espacios y
    etiquetas
  • Invitar colaboradores por email
  • Una poderosa lista de control para asignar
  • diferentes roles y permisos a los colaboradores
  • Integración con Slack para las actualizaciones de las wikis
  • Añadir marcadores de favoritos a paginas y wikis
  • Vigilar paginas o wikis y ser notificados si cambian
  • Notificaciones dentro de la aplicación
  • Discusión usando comentario
  • Crear plantillas reusables para páginas
  • Búsqueda a través de la base de conocimiento

Instalación en Debian 8

Opus está desarrollada en PHP con el framework Laravel, si vemos la configuración default del proyecto podemos ver que usan homestead que es una imagen de vagrant dedicada al desarrollo con Laravel, para ponerlo en producción no usaremos homestead.

En este escenario instalaremos Opus en un servidor Debian Jessie 8.7 bajo un server web Nginx y un servidor de base de datos Mysql Server (la configuración no debe variar mucho para derivadas como Ubuntu).

Requerimientos

La documentación de Opus menciona dos requerimientos:

PHP 7.0+

MySQL 5+

PHP en los repositorios de Debian encontramos la versión 5, por lo que deberemos recurrir a otros repositorios para instalar la versión 7.

PHP7

No entraremos en este post en detalles de instalación cuando otros ya han escrito excelentes guías, podemos seguir esta guía de NixCraft para instalar PHP 7


MySQL

Una vez instalado PHP 7 instalamos MySQL con:

sudo apt-get install mysql-server

La instalación de MySQL es muy sencilla, nos solicitará el password de root y le damos uno seguro. Después de terminar la instalación de mysql es bueno ejecutar:

sudo mysql_secure_installation

Y responderemos algunas preguntas que ayudan a asegurar nuestra instalación básica de MySQL.

Una vez terminada la instalación y asegurada, procederemos a crear la base de datos y el usuario para nuestra aplicación, nos conectamos mediante terminal a nuestro servidor de base de datos:

mysql -U root -p

introducimos nuestro password de root, y una vez conectados ejecutaremos los siguientes comandos SQL:

CREATE USER 'opus_user'@'localhost' IDENTIFIED BY 'MiP4s5w0rd53gur0';
CREATE DATABASE opus DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON opus.* TO 'opus_user'@'localhost';
FLUSH PRIVILEGES;

Con esto habremos creado nuestra base de datos y usuario para nuestra aplicación.


Clonar aplicación Opus

Clonamos la aplicación en la siguiente ruta:
cd /var/www
sudo git clone https://github.com/zeeshanu/opus.git

y damos permisos a nuestro usuario y al servidor web:

sudo chown miusuario:www-data /var/www/opus

con esto podemos modificar los archivos necesarios de configuración con los permisos de nuestro usuario.


Instalar composer

Para el siguiente paso necesitamos instalar "Composer" una excelente herramienta para manejar las dependencias de proyectos de PHP, de igual forma no hay necesidad de reinventar el hilo negro, usaremos la siguiente guía de la magnifica documentación de Digital Ocean How to install composer on Debian 8

Una vez instalado lo podremos usar con nuestro usuario.


Crear y configurar nuestro archivo .env

Una vez clonado nuestra aplicación de Opus, en el directorio podemos encontrar un archivo llamado ".env.dist" el cual nos servirá de plantilla, lo copiaremos en el directorio y lo renombramos a ".env"

cd /var/www/opus
cp .env.dist .env

Una vez copiado lo modificaremos y reemplazaremos algunos de los valores:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=opus
DB_USERNAME=opus_user
DB_PASSWORD=MiP4s5w0rd53gur0

más adelante estaremos modificando de nuevo este archivo, por lo pronto guardamos los cambios y cerramos el archivo.


Instalar librerias faltantes de PHP

En la documentación del proyecto no se mencionan estas librerías, pero para poner en producción necesitaremos instalar los siguientes paquetes:

sudo apt-get install php7.0-mbstring php7.0-curl php7.0-zip php7.0-mcrypt

Una vez instalado reiniciamos el servicio de PHP FPM que estaremos usando para servir la aplicación en conjunto con Nginx

sudo service php7.0-fpm restart


Actualizar e instalar requerimientos con Composer

Con el siguiente comando estaremos actualizando las librerías requeridas por le proyecto y después instalaremos estas:

cd /var/www/opus
composer update
composer install


Ejecutar migraciones de base de datos y crear llave de aplicación

Lo siguiente es ejecutar las migraciones de la base de datos, esto creará las tablas necesarias para el proyecto:

php artisan migrate

Después crearemos la llave de aplicación, que reemplazaremos en nuestro archivo .env previamente editado:

php artisan key:generate

Una vez creadas las tablas hay que popularlas con la información básica necesaria para iniciar la aplicación:

php artisan db:seed

Para probar si nuestra aplicación de Opus ya está correctamente configurada e instalada podemos ejecutar:

php artisan serve

Esto lo ejecutará en un web server de desarrollo a través del puerto 8000 y solo acepta conexiones locales (si es un server remoto podemos hacer un tunel ssh para probarlo o desde el mismo host ejecutar: curl 127.0.0.1:8000 y nos mostrará la página de inicio de Opus)


Configurar Nginx

La instalación de Nginx no se cubrirá en este post, es bastante sencilla, nos concentraremos en la configuración del bloque del servidor para nuestra aplicación, como se mencionó con anterioridad, usaremos php-fpm para servir nuestra aplicación php de Laravel, el siguiente bloque lo podemos añadir a nuestra configuración de Nginx o bien crear un virtual host y añadir la configuración:

Reiniciamos nuestro servidor Nginx para que tome los cambios y con esto tendremos nuestra base de conocimiento ejecutándose en producción.