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
- Instalar el Repositorio EPEL
- Instalar Nginx
- Instalar y configurar PHP-FPM
- Instalar y configurar MySQL/MariaDB
- Instalar PHP Composer
- Instalar BookStack
- Configurar Nginx Virtual Host BookStack
- 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.
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.
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
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 ‘bookstack@’.
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 bookstack@localhost identified by 'bookstack@';
grant all privileges on bookstackdb.* to bookstack@localhost identified by 'bookstack@';
flush privileges;
exit;
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.
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.
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
DB_PASSWORD=bookstack@
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.
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.
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.
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.
Haz clic en el menú «Configuración» y obtendrás la página de configuración.
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.
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.