Cómo instalar Bolt CMS en Debian 9

Bolt CMS es un sistema de gestión de contenidos de código abierto, sencillo y flexible, que está escrito en lenguaje de programación PHP y que puede desplegarse con éxito en Linux bajo servidores web Apache/Nginx, PHP y sistema de gestión de bases de datos MySQL/MariaDB, también conocido como pila LAMP o LEMP.

En este tutorial, aprenderemos a instalar y configurar la última versión de Bolt CMS en la versión Debian 9, sobre una pila LAMP, para crear sitios web dinámicos.

Con Bolt CMS, puedes crear y diseñar hermosos y modernos portales dinámicos con los últimos lenguajes de marcado y bibliotecas de origen.

Requisitos

Para desplegar un sitio web Bolt CMS en tus instalaciones, tienes que asegurarte de que se cumplen algunos de los siguientes requisitos:

  • Necesitas un servidor físico dedicado o una máquina virtual o un VPS de un proveedor de la nube con la última versión de Debian 9 de instalación mínima.
  • Una dirección IP estática configurada para una de las tarjetas de interfaz de red de tu sistema
  • Acceso remoto o directo a la cuenta de root o a una cuenta local o remota con privilegios de sudo root
  • Un nombre de dominio correctamente configurado, privado o público, dependiendo de tu despliegue, con los registros DNS necesarios, como un registro A y CNAME para apuntar a www. Si no tienes un nombre de dominio válido o registrado, puedes realizar la instalación y acceder al sitio web a través de la dirección IP de tu servidor
  • Para utilizar el registro de correo electrónico de Bolt CMS u otras funciones del CMS, debes configurar un servidor de correo en tus instalaciones (servicios IMAP y SMTP), aunque para ello se puede utilizar un servidor de correo público, como Gmail o Yahoo! para conseguir el mismo objetivo.

Requisitos previos

En el primer paso, entra en tu servidor Debian con la cuenta de root o con una cuenta con privilegios de root obtenidos mediante la utilidad sudo e instala utilidades como zip, unzip (para descomprimir archivos zip), curl y wget (descarga de archivos en línea) y el autocompletador de línea de comandos bash. Emite los siguientes comandos para instalar todas estas utilidades de una sola vez.

su -
apt install bash-completion zip unzip curl wget

En el siguiente paso, configura un nombre descriptivo para tu máquina que refleje el destino de este servidor ejecutando el siguiente comando. Reemplaza tu variable de nombre de host en consecuencia.

hostnamectl set-hostname www.myblog.com

Puedes comprobar el nombre de host de la máquina y el registro en el archivo de hosts del sistema ejecutando los siguientes comandos.

hostnamectl
cat /etc/hostname
hostname –s
hostname –f

Antes de reiniciar el servidor, asegúrate de que el sistema está actualizado con los últimos parches de seguridad, actualizaciones del kernel, repositorios y paquetes de software, ejecutando el siguiente comando.

apt update
apt upgrade

Una vez finalizado el proceso de actualización, reinicia tu máquina Debian para que se apliquen correctamente todas las actualizaciones del núcleo y los cambios de nombre de host.

systemctl reboot

Instalar Apache y PHP

Como se ha dicho en la introducción, Bolt CMS es una plataforma de gestión de contenidos basada en la web que está escrita en el lenguaje de programación del lado del servidor PHP y debe desplegarse sobre una pila LAMP. En primer lugar, empezaremos por instalar el servidor HTTP Apache y el intérprete de PHP junto con algunas extensiones de PHP necesarias para que Bolt CMS funcione correctamente. Para instalar el componente del servidor web y el lenguaje de programación PHP con todos los módulos necesarios, emite el siguiente comando en la consola de tu servidor con privilegios de root.

apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-gd php7.0-opcache php7.0-json php7.0-mbstring php7.0-xml php7.0-cli php7.0-curl php7.0-zip php7.0-bcmath php-imagick php7.0-xmlrpc php7.0-intl

A continuación, comprueba si todos los módulos PHP instalados están habilitados en tu sistema ejecutando el siguiente comando.

php7.0 –m

Instalar MariaDB

El siguiente componente que falta es la base de datos RDBMS. En este tutorial, instalaremos Bolt CMS con el servidor de base de datos MariaDB como backend. La aplicación web Bolt CMS utiliza la base de datos MariaDB para almacenar diferentes configuraciones del sitio web, usuarios, sesiones y otros datos diversos. Para instalar el servidor y el cliente de la base de datos MariaDB y la extensión PHP MySQL en Debian 9, emite el siguiente comando en la consola de tu servidor.

apt install mariadb-server mariadb-client php7.0-mysql

Una vez completada la instalación de MariaDB, comprueba si el demonio de la base de datos está en funcionamiento en tu máquina y escucha las conexiones entrantes en localhost, puerto 3306, ejecutando netstat o ss el comando.

netstat –tlpn | grep mysql

O

ss –tlpn | grep mysql

Si netstat no está instalado por defecto en tu sistema Debian, ejecuta el siguiente comando para instalarlo.

apt install net-tools

Por defecto, el servidor de bases de datos MySQL no está suficientemente protegido en Debian 9. Se puede acceder a la cuenta raíz de la base de datos proporcionando una contraseña. Para asegurar el servidor de la base de datos, primero entra en la consola de MySQL y ejecuta los siguientes comandos para asegurar la cuenta raíz de MariaDB.

mysql -h localhost
Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1


Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A


Database change
MariaDB [mysql]> update user set plugin='' where user='root';
Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> exit
Bye

Una vez que hayamos obligado a la cuenta raíz de la base de datos a utilizar una contraseña, asegura aún más el servidor MariaDB ejecutando el script mysql_secure_installation proporcionado por los paquetes de instalación de los repositorios stretch de Debian. Mientras se ejecuta, el script hará una serie de preguntas diseñadas para asegurar la base de datos MariaDB, tales como: cambiar la contraseña de root de MySQL, eliminar los usuarios anónimos, desactivar los inicios de sesión de root remoto y eliminar la base de datos de prueba. Ejecuta el script emitiendo el siguiente comando y configura una contraseña fuerte para la cuenta de root de la base de datos y asegúrate de escribir a todas las preguntas que se hagan, como se muestra en el siguiente extracto.

mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB

SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!


In order to log into MariaDB to secure it, we'll need the current

password for the root user. If you've just installed MariaDB, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.


Enter current password for root (enter for none):

OK, successfully used password, moving on...


Setting the root password ensures that nobody can log into the MariaDB

root user without the proper authorisation.


You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone

to log into MariaDB without having to have a user account created for

them. This is intended only for testing, and to make the installation

go a bit smoother. You should remove them before moving into a

production environment.


Remove anonymous users? [Y/n] y

... Success!


Normally, root should only be allowed to connect from 'localhost'. This

ensures that someone cannot guess at the root password from the network.


Disallow root login remotely? [Y/n] y

... Success!


By default, MariaDB comes with a database named 'test' that anyone can

access. This is also intended only for testing, and should be removed

before moving into a production environment.


Remove test database and access to it? [Y/n] y

- Dropping test database...

... Success!

- Removing privileges on test database...

... Success!


Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.


Reload privilege tables now? [Y/n] y

... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

Una vez completado el script, accede a la base de datos desde la consola sin la contraseña de root. El acceso a la base de datos debería ser denegado si no se proporciona una contraseña para la cuenta raíz, como se ilustra en el siguiente extracto de comando:

mysql -h localhost -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Si se proporciona la contraseña, se debería conceder el proceso de acceso a la consola de MySQL, como se muestra en el ejemplo de comando. Escribe exit para salir de la consola de la base de datos.

mysql -h localhost -u root -p
Enter password:

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 15

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> exit
Bye

Una vez instalados todos los componentes LAMP, comprueba si el servidor web está en funcionamiento y a la escucha de conexiones de red en el puerto 80, emitiendo el siguiente comando con privilegios de root.

netstat –tlpn

Inspeccionando la salida del comando netstat puedes ver que el servidor web Apache está escuchando las conexiones de red entrantes en el puerto 80. Para la misma tarea también puedes utilizar el comando ss que se instala automáticamente, por defecto, en Debian 9.

ss- tulpn

Configura el cortafuegos

En caso de que tengas un cortafuegos habilitado en tu sistema, como la aplicación de cortafuegos UFW, debes añadir una nueva regla para permitir que el tráfico HTTP pase a través del cortafuegos emitiendo el siguiente comando

ufw allow WWW

o

ufw allow 80/tcp

También debes permitir que el tráfico SSH pase a través del cortafuegos UFW en caso de conexiones remotas al servidor.

ufw allow 22/tcp

Algunos administradores de sistemas prefieren utilizar iptables reglas brutas para gestionar las reglas del cortafuegos en su servidor de Debian. Si ese es el caso, tienes que añadir las siguientes reglas para permitir el tráfico de entrada del puerto 80 en el cortafuegos para que otros visitantes puedan navegar por tu sitio web.

apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent
systemctl status netfilter-persistent
systemctl enable netfilter-persistent.service

En caso de que te conectes al servidor de Debian de forma remota a través de SSH, debes añadir primero la siguiente regla para permitir que el tráfico SSH pase a través del cortafuegos iptables. De lo contrario, te quedarás bloqueado, porque el cortafuegos empezará a descartar todo el tráfico entrante al puerto 22.

iptables -I INPUT -p tcp --destination-port 22 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent

Una vez que hayas añadido las reglas del cortafuegos necesarias, deberías probar si el servidor web Apache es accesible en tu red, abriendo un navegador y visitando la dirección IP de tu máquina Debian o el nombre de tu dominio o FQDN del servidor a través del protocolo HTTP. Si las conexiones entrantes están permitidas en el puerto 80, debería aparecer la página web por defecto en los navegadores de tus clientes. Si no conoces la dirección IP de tu máquina, ejecuta ifconfig o ip a para revelar la dirección IP de tu servidor.

http://your_domain.tld

Configurar Apache y PHP

En el siguiente paso, tenemos que hacer algunos cambios más en el archivo de configuración por defecto de PHP y modificar las siguientes variables de PHP como se describe a continuación. Además, asegúrate de que la configuración de PHP zona horaria esté correctamente configurado y coincida con la ubicación geográfica de tu sistema. Abre el archivo /etc/php/7.0/apache2/php.ini para editarlo, después de hacer una copia de seguridad del archivo de configuración de PHP.

cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini

Busca, edita y cambia las siguientes variables en php.ini el archivo de configuración:

file_uploads = On
memory_limit = 128M
post_max_size = 80M
upload_max_filesize = 80M
default_charset = UTF-8
short_open_tag = off
intl.error_level = 0
magic_quotes_gpc =off
register_globals = off
session.auto_start = off
date.timezone = Europe/London

Aumenta la variable upload_max_file_size variable adecuada para soportar archivos adjuntos de gran tamaño, si es el caso, y sustituye la variable fecha.zona horaria variable de acuerdo con tu hora geográfica consultando la lista de zonas horarias proporcionada por los documentos de PHP en el siguiente enlace http://php.net/manual/en/timezones.php

Para aumentar la velocidad de carga de las páginas de tu sitio web mediante el plugin OPCache disponible para PHP7, añade los siguientes ajustes de OPCache en la parte inferior del archivo de configuración del intérprete de PHP, debajo de la sentencia [opcache] como se detalla aquí:

nano /etc/php/7.0/apache2/php.ini
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Después de haber modificado todas las líneas descritas a continuación, cierra el archivo de configuración php.ini archivo de configuración y comprueba si las variables de OPCache se han añadido correctamente emitiendo el siguiente comando.

grep opcache /etc/php/7.0/apache2/php.ini

A continuación, debemos activar los módulos de reescritura de Apache y TLS para obligar a los visitantes a navegar de forma segura por el sitio web a través del protocolo HTTPS. El módulo TSL asegurará el tráfico entre el servidor y los navegadores de tus clientes con un certificado autofirmado emitido automáticamente por Apache. También debes activar el archivo de configuración SSL de Apache para que el módulo TLS funcione correctamente. Ejecuta el siguiente comando para activar todas las configuraciones necesarias.

a2enmod ssl rewrite
a2ensite default-ssl.conf

Una vez que hayamos activado los módulos de reescritura y TLS, abre el archivo de configuración del sitio SSL por defecto de Apache con un editor de texto y añade las líneas de código de las reglas de reescritura de URL después de la directiva DocumentRoot como se muestra en el siguiente ejemplo. Además, cambia DocumentRoot ruta a /var/ww/html/public.

nano /etc/apache2/sites-enabled/default-ssl.conf

Extracto del archivo de configuración del sitio SSL

DocumentRoot  /var/www/html/public
<Directory /var/www/html/public>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>

Cierra el archivo SSL de Apache y abre también el archivo /etc/apache2/sites-enabled/000-default.conf para editarlo y añade las mismas reglas de reescritura de URL que en el archivo de configuración SSL. Inserta las líneas de código después de la declaración DocumentRoot como se muestra en el siguiente ejemplo. Además, modifica DocumentRoot para que apunte al directorio /var/ww/html/público directorio.

DocumentRoot  /var/www/html/public
<Directory /var/www/html/public>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>

Una vez que hayas realizado todos los cambios explicados anteriormente, debes reiniciar el demonio de Apache para aplicar todas las reglas.

systemctl restart apache2

Por último, abre un navegador y visita tu nombre de dominio o la dirección IP del servidor a través del protocolo HTTP. Como estás utilizando los pares de certificados autofirmados automáticamente emitidos por Apache en la instalación, un certificado que no es de confianza para el navegador, debería aparecer una advertencia de error en el navegador. Acepta la advertencia para aceptar el certificado no fiable y seguir siendo redirigido a la página web por defecto de Apache.

https://yourdomain.tld

Error de certificado de Apache

Si la aplicación del cortafuegos UFW bloquea las conexiones de red entrantes al puerto HTTPS, inserta una nueva regla para permitir que el tráfico HTTPS pase a través del cortafuegos emitiendo el siguiente comando

ufw allow ‘WWW Full’

o

ufw allow 443/tcp

Si iptables es la aplicación de cortafuegos instalada por defecto para proteger tu sistema Debian a nivel de red, añade la siguiente regla para permitir el tráfico de entrada del puerto 443 en el cortafuegos para que los visitantes puedan navegar por tu nombre de dominio.

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
netfilter-persistent save
systemctl restart netfilter-persistent

Por último, crea un archivo PHP info en la ruta webroot del servidor web ejecutando el siguiente comando

echo '<?php phpinfo(); ?>'| tee /var/www/html/public/info.php

Visita el archivo de script de información PHP desde un navegador en la siguiente URL, como se muestra en la siguiente imagen. Desplázate hasta fecha para comprobar la configuración de la zona horaria de PHP. La configuración de la zona horaria debe reflejar la ubicación geográfica de tu PHP configurada anteriormente.

https://domain.tld/info.php

Ajuste de la fecha en PHP

A continuación, entra en la consola de la base de datos MariaDB y crea la base de datos de Bolt CMS y un usuario con contraseña que se utilizará para gestionar la base de datos del sitio web desde localhost, ejecutando los siguientes comandos. Sustituye el nombre de la base de datos, el usuario y la contraseña según corresponda.

mysql –u root -p
Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 305

Server version: 10.1.26-MariaDB-0+deb9u1 Debian 9.1


Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE bolt_db;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on bolt_db.* to 'bolt_user'@'localhost' identified by 'password1234';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye

Instalar Bolt CMS

Una vez cumplidos todos los requisitos del sistema para instalar la aplicación Bolt CMS, visita la página oficial de descargas de Bolt en https://bolt.cm/pages/download y coge el último archivo comprimido zip en tu sistema emitiendo el siguiente comando.

wget https://bolt.cm/distribution/bolt-latest.zip 

Una vez finalizada la descarga del archivo zip, extrae el archivo zip de Bolt CMS a tu directorio de trabajo actual y lista los archivos extraídos ejecutando los siguientes comandos. Además, elimina el archivo index.html instalado por defecto por el servidor web Apache en la ruta webroot y elimina también el archivo info.php creado anteriormente.

unzip bolt-latest.zip
ls bolt-[TAB]
rm /var/www/html/index.html
rm /var/www/html/public/info.php

Los archivos de instalación de Bolt CMS se encuentran en tu directorio de trabajo actual en bolt-v3.4.4/ directorio. Ejecuta el comando ls para listar los archivos de este directorio. Copia todo el contenido del directorio extraído en la ruta raíz del documento de tu servidor web emitiendo el siguiente comando. Además, asegúrate de copiar el archivo oculto .htaccess a la ruta webroot.

cp -rf bolt-v3.4.4/* /var/www/html/
cp -rf bolt-v3.4.4/.bolt.yml.dist /var/www/html/bolt.yml

A continuación, ejecuta los siguientes comandos para conceder al usuario en tiempo de ejecución de Apache permisos completos de escritura en la ruta raíz de la web. Utiliza el comando ls para listar los permisos de los archivos instalados de la aplicación, ubicados en el directorio /var/www/html/.

chown -R www-data:www-data /var/www/html/
ls -al /var/www/html/

A continuación, abre el archivo de configuración de Bolt CMS y añade la información de conexión a la base de datos MySQL, como se muestra en el siguiente extracto del archivo

nano /var/www/html/app/config/config.yml

config.yml ejemplo de archivo:

database:
driver: mysql
databasename: bolt_db
username: bolt_user
password: password1234

config.yml

Guarda y cierra el archivo de configuración de Bolt CMS, entra en el directorio /var/www/html e instala el software gestor de dependencias PHP Composer ejecutando los siguientes comandos.

cd /var/www/html/
mv composer.json.dist composer.json
curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...
Composer (version 1.5.5) successfully installed to: /var/www/html/composer.phar
Use it: php composer.phar
php7.0 composer.phar install
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 5 updates, 0 removals
- Updating league/flysystem-sftp (1.0.14 => 1.0.15): Downloading (100%)
- Updating doctrine/inflector (v1.1.0 => v1.2.0): Downloading (100%)
- Updating doctrine/collections (v1.3.0 => v1.4.0): Downloading (100%)
- Updating doctrine/annotations (v1.2.7 => v1.4.0): Downloading (100%)
- Updating doctrine/common (v2.6.2 => v2.7.3): Downloading (100%)
Writing lock file
Generating autoload files
> Bolt\Composer\ScriptHandler::updateProject
> Bolt\Composer\ScriptHandler::installAssets
Installing bolt_assets to /var/www/html/public/bolt-public

Una vez instalado Composer, abre un navegador y navega hasta la dirección IP o el nombre de dominio de tu servidor a través del protocolo HTTPS. En la primera pantalla de instalación, crea el primer nombre de usuario de Bolt CMS, añade una contraseña fuerte para este usuario y proporciona la dirección de correo electrónico y el nombre para mostrar de la cuenta de administrador de Bolt. Cuando termines, pulsa el botón Crear el primer usuario para guardar los cambios.

Instalador de Bolt CMS

Después de crear el nombre de usuario de administrador de Bolt, serás redirigido al panel de control de administración de Bolt CMS, desde donde puedes empezar a configurar la aplicación o añadir algún contenido del sitio web.

Tablero de mandos de Bolt CMS

Para visitar la página del frontend de Bolt CMS, abre un navegador y navega hasta tu nombre de dominio o dirección IP del servidor a través del protocolo HTTPS.

https://www.yourdomain.tld

Sitio de muestra de Bolt CMS

Se puede acceder al panel de administración del backend de Bolt CMS en la siguiente URL. Para acceder, proporciona el nombre de usuario y la contraseña configurados para la cuenta inicial durante el proceso de instalación.

https://www.yourdomain.tld/bolt/login

Inicio de sesión de Bolt CMS

Por último, para obligar a los visitantes a navegar de forma segura por la interfaz de Bolt CMS a través del protocolo HTTPS, vuelve a la consola de tu servidor y edita el archivo .htaccess ubicado en la ruta raíz del documento del directorio público, emitiendo el siguiente comando.

nano /var/www/html/public/.htaccess

Aquí, busca la línea que comienza con </IfModule mod_rewrite.c> y añade las siguientes líneas después de la directiva RewriteEngine on.

# Redirect to HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

En la parte inferior del archivo, puedes modificar la configuración del servidor PHP para que se ajuste a los recursos y configuraciones de tu propio servidor, como se muestra en el siguiente ejemplo.

php_value session.use_trans_sid 0
php_value register_globals 1
php_value upload_max_filesize 50M
php_value post_max_size 50M

¡Enhorabuena! Has instalado con éxito la moderna aplicación Bolt CMS en el servidor Debian 9. Para seguir personalizando la aplicación, visita la página de documentación de Bolt CMS en la siguiente dirección: https://docs.bolt.cm/3.4/getting-started/introduction

También te podría gustar...