Cómo instalar BookStack Documentation Wiki en CentOS 7

BookStack es una plataforma de código abierto para crear contenido de documentación/wiki para tu proyecto. Está escrita en el lenguaje de programación PHP y utiliza el framework web Laravel. Básicamente, la documentación/wiki de tu proyecto se almacenará en BookStack como un ‘Libro’, seguido de ‘Capítulo’ y ‘Páginas’. Esto te facilita la creación y lectura de la documentación como un Libro, basado en Capítulos y Páginas.

En este tutorial, te mostraré paso a paso cómo instalar y configurar BookStack en CentOS 7 bajo la pila LEMP (Linux, Nginx, PHP-FPM, MySQL/MariaDB). Este tutorial cubrirá temas como la instalación de PHP Composer y la creación de la base de datos MySQL mediante la línea de comandos.

Requisitos previos

  • CentOS 7
  • Privilegios de root

Qué haremos

  1. Instalar el Repositorio EPEL
  2. Instalar Nginx
  3. Instalar y configurar PHP-FPM
  4. Instalar y configurar MySQL/MariaDB
  5. Instalar PHP Composer
  6. Instalar BookStack
  7. Configurar Nginx Virtual Host BookStack
  8. Probar

Paso 1 – Instalar el repositorio EPEL

Añade el nuevo repositorio de terceros al sistema. Necesitamos añadir el repositorio EPEL (Extra Packages for Enterprise Linux) a nuestro sistema CentOS 7, para poder instalar Nginx y otros paquetes.

Instala el repositorio EPEL con el siguiente comando yum.

sudo yum -y install epel-release

Paso 2 – Instalar Nginx en CentOS 7

En este tutorial, ejecutaremos la plataforma ‘BookStack’ bajo la pila LEMP, e instalaremos el servidor web Nginx desde el repositorio EPEL.

Instala el servidor web Nginx utilizando el comando yum que aparece a continuación.

sudo yum -y install nginx

Una vez completada la instalación, inicia el servicio y habilítalo para que se lance cada vez que se inicie el sistema.

systemctl start nginx
systemctl enable nginx

Ahora compruébalo utilizando el comando netstat.

netstat -plntu

Asegúrate de que aparece el puerto 80 en la lista, y que lo utiliza el servicio Nginx.

Instalar Nginx

El servidor web Nginx está ahora instalado en el sistema CentOS 7.

Adicional: Si estás ejecutando firewalld en tu sistema, añade un nuevo servicio HTTP a la configuración ejecutando los comandos siguientes.

firewall-cmd --add-service=http --permanent
firewall-cmd --reload

Paso 3 – Instalar PHP y PHP-FPM

En este paso, instalaremos y configuraremos PHP-FPM 7.0. Instalaremos PHP y PHP-FPM desde el repositorio ‘webtatic’ – instala PHP con algunas extensiones que necesita la plataforma ‘BookStack’, incluyendo PDO, Tokenizer, GD, Tidy, MBString y OpenSSL.

Antes de instalar PHP y PHP-FPM, añade el nuevo repositorio ‘webtatic’ al sistema CentOS 7 utilizando el comando rpm que aparece a continuación.

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Ahora instala PHP y PHP-FPM con todas las extensiones necesarias utilizando el comando yum de la siguiente manera.

sudo yum -y install php70w-fpm php70w-mcrypt php70w-curl php70w-cli php70w-mysql php70w-gd php70w-xsl php70w-json php70w-intl php70w-pear php70w-devel php70w-common php70w-mbstring php70w-tidy php70w-zip php70w-soap curl

Una vez completada la instalación, tenemos que editar el archivo de configuración ‘php.ini’ y editar la configuración del pool php-fpm ‘www.conf’.

Edita el archivo de configuración ‘php.ini’ utilizando el editorvim.

vim /etc/php.ini

Descomenta la línea ‘cgi.fix_pathinfo’ y cambia el valor a ‘0’.

cgi.fix_pathinfo=0

Guarda y sal.

A continuación, edita el archivo de configuración del pool ‘www.conf’.

vim /etc/php-fpm.d/www.conf

Cambia el usuario por defecto para ejecutar el servicio PHP-FPM por el usuario y grupo ‘nginx’.

user = nginx
group = nginx

En la línea ‘listen’, cambia el valor del archivo sock como se indica a continuación. Ejecutaremos PHP-fpm bajo el archivo sock.

listen = /var/run/php-fpm/php-fpm.sock

Ahora, la configuración del permiso y el propietario del socket. Descomenta estas líneas y cambia el valor como se indica a continuación.

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Por último, descomenta el entorno de PHP-FPM.

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Guarda y sal.

Si la configuración está completa, inicia el servicio PHP-FPM y habilítalo para que se inicie siempre al arrancar.

systemctl start php-fpm
systemctl enable php-fpm

Ahora compruébalo con el comando netstat.

netstat -pl | grep php

Y asegúrate de que tienes el archivo sock de PHP-FPM.

Configurar php.ini

Se ha instalado PHP y PHP-FPM 7.0 con todas las extensiones necesarias para la plataforma ‘BookStack’ en el sistema CentOS 7.

Paso 4 – Instalar y configurar MySQL/MariaDB

BookStack sólo admite la base de datos MySQL, y sólo funcionará bajo la versión de MySQL >= 5.6. Para este tutorial, usaremos MariaDB (la última versión) que se puede instalar desde el repositorio de Ubuntu.

Ejecuta el siguiente comando yum para instalar la base de datos MariaDB.

yum install -y mariadb mariadb-server

Una vez completada la instalación, inicia el servicio y habilítalo para que se inicie siempre al arrancar.

systemctl start mariadb
systemctl enable mariadb

Ahora tenemos que configurar la contraseña de ‘root’ para la base de datos.

Ejecuta el siguiente comando para configurar la contraseña de la base de datos ‘root’.

mysql_secure_installation

Configurar MariaDB

Se te pedirá la nueva contraseña de la base de datos MySQL – escribe tu contraseña para el usuario root y pulsa Intro. Para los demás, sólo tienes que escribir «Y» de «sí» y volver a pulsar Intro.

Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Ahora ya está configurada la contraseña de la raíz de MySQL.

A continuación, tenemos que crear una nueva base de datos MySQL para la instalación de BookStack. Crearemos una nueva base de datos llamada ‘bookstackdb’ con el usuario ‘bookstak’ y la contraseña ‘[email protected]’.

Accede al shell de MySQL con el usuario root.

mysql -u root -p

Ejecuta todas las consultas de MySQL que aparecen a continuación en la shell.

create database bookstackdb;
create user [email protected] identified by '[email protected]';
grant all privileges on bookstackdb.* to [email protected] identified by '[email protected]';
flush privileges;
exit;

Crear base de datos en MariaDB para BookStack

Se ha instalado MySQL/MariaDB en el sistema CentOS 7 y se ha creado la base de datos para la instalación de ‘BookStack’.

Paso 5 – Instalar PHP Composer en CentOS 7

El compositor es un gestor de dependencias para PHP. Te permite gestionar las dependencias de PHP que necesitas para tu proyecto. En este paso, instalaremos el Composer utilizando el script instalador. El Compositor se utilizará para descargar todas las librerías PHP que necesita el ‘BookStack’.

Ve al directorio principal y descarga el instalador usando curl.

cd ~/
curl -sS https://getcomposer.org/installer | php

Y obtendrás el archivo ‘composer.phar’ en tu directorio personal. Mueve el archivo al directorio ‘/usr/bin’ y prueba el comando ‘composer’ como se muestra a continuación.

mv composer.phar /usr/bin/composer
composer -v

Y obtendrás la versión de composer que está instalada en tu sistema.

Instalar PHP Composer

El PHP Composer está ahora instalado en el sistema CentOS 7.

Paso 6 – Instalar BookStack en CentOS 7

En este paso, instalaremos BookStack bajo el directorio ‘/var/www’ – ese directorio será el directorio raíz de la aplicación.

Antes de instalar ‘BookStack’, instala git en tu sistema.

yum -y install git

Ahora crea un nuevo directorio ‘/var/www’.

mkdir -p /var/www

Ve a ese directorio y clona el código fuente de BookStack utilizando el comando git.

cd /var/www
git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch

Ve al directorio ‘BookStack/’ e instala todas las dependencias de PHP necesarias utilizando el comando composer como se muestra a continuación.

cd BookStack/
composer install

Asegúrate de que no obtienes ningún error y cuando se haya completado. Verás el resultado que se muestra a continuación.

Instalar BookStack con Composer

Ahora copia el archivo de configuración del entorno ‘.env.example’ y edítalo usando vim.

cp .env.example .env
vim .env

En la línea de detalles de la base de datos, cambia todo con la información de tu base de datos como se muestra a continuación.

# Database details
DB_HOST=localhost
DB_DATABASE=bookstackdb
DB_USERNAME=bookstack
[email protected]

Guarda y sal.

Y cambia los permisos de propiedad del directorio ‘BookStack’ al usuario y grupo ‘nginx’.

chown -R nginx:nginx /var/www/BookStack

A continuación, tenemos que generar la clave única de la aplicación para BookStack y actualizar el esquema de la base de datos utilizando los comandos artisan de PHP.

En el directorio raíz de la aplicación ‘/var/www/BookStack’, ejecuta los siguientes comandos.

php artisan key:generate
php artisan migrate

Se te pedirá confirmación, escribe ‘sí’ y pulsa Enter.

Artesano PHP

Espera a que la migración de la tabla se realice con éxito.

La aplicación BookStack ha sido instalada, con la aplicación de clave única secreta generada y el esquema de base de datos para BookStack actualizado.

Paso 7 – Configurar el host virtual Nginx para BookStack

En este paso, configuraremos el host virtual nginx para BookStack. Utilizaremos ‘book.hakase-labs.co’ como nombre de dominio para nuestra URL de BookStack.

Ve al directorio ‘/etc/nginx’ y crea un nuevo archivo de host virtual ‘bookstack.conf’ en el directorio ‘conf.d/’ utilizando el editor vim.

cd /etc/nginx
vim conf.d/bookstack.conf

Pega la configuración de abajo.

server {
  listen 80;
  server_name book.hakase-labs.co;
  root /var/www/BookStack/public;

  access_log  /var/log/nginx/bookstack_access.log;
  error_log  /var/log/nginx/bookstack_error.log;

  client_max_body_size 1G;
  fastcgi_buffers 64 4K;

  index  index.php;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README) {
    deny all;
  }

  location ~ \.php(?:$|/) {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
  }

  location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
    expires 30d;
    access_log off;
  }
}

Guarda y sal.

Ahora prueba la configuración de nginx y asegúrate de que no hay ningún error, luego reinicia el servicio nginx.

nginx -t
systemctl restart nginx

El host virtual Nginx para la aplicación BookStack ha sido creado y activado.

Configurar el host virtual Nginx

Paso 8 – Prueba

Abre tu navegador web y escribe la URL de BookStack en la barra de direcciones, la mía es:http://book.hakase-labs.co/

Y serás redirigido a la página ‘login/’ como se indica a continuación.

Acceso a BookStack

Escribe el usuario administrador por defecto ‘[email protected]’ con la contraseña ‘password’, y luego pulsa el botón ‘Login’.

Deberías obtener el panel de usuario de BookStack.

Tablero de mandos

Haz clic en el menú «Configuración» y obtendrás la página de configuración.

Ajustes

Ahora haz clic en ‘Usuarios’ y luego en el usuario ‘Admin’. Cambia el correo electrónico por defecto con tu dirección de correo electrónico y la contraseña con tu propia contraseña secreta.

Usuarios de BookStack

Luego haz clic en el botón «Guardar».

La instalación de BookStack con la pila LEMP (Linux, Nginx, MariaDB y PHP-FPM) en CentOS 7 se ha completado con éxito.

Referencia

También te podría gustar...