Comment installer le CMS Bolt sur Debian 9

Bolt CMS est un système de gestion de contenu open source simple et flexible, écrit en langage de programmation PHP, qui peut être déployé avec succès sous Linux sous les serveurs Web Apache/Nginx, le système de gestion de base de données PHP et MySQL/MariaDB, également connu sous le nom de pile LAMP ou LEMP.

Dans ce tutoriel, nous allons apprendre à installer et à configurer la dernière version de Bolt CMS dans la version Debian 9, au-dessus d’une pile LAMP, afin de créer des sites Web dynamiques.

Avec Bolt CMS, tu peux créer et concevoir des portails dynamiques beaux et modernes avec les derniers langages de balisage et bibliothèques sources.

Exigences

Pour déployer un site Web Bolt CMS dans tes locaux, tu dois t’assurer que certaines des conditions suivantes sont remplies :

  • Tu as besoin d’un serveur physique dédié ou d’une machine virtuelle ou d’un VPS d’un fournisseur de cloud avec la dernière version de l’installation minimale de Debian 9.
  • Une adresse IP statique configurée pour l’une des cartes d’interface réseau de ton système
  • Un accès direct ou à distance au compte root ou à un compte local ou distant avec les privilèges sudo root
  • Un nom de domaine correctement configuré, privé ou public, en fonction de ton déploiement, avec les enregistrements DNS requis, comme un enregistrement A et CNAME pour pointer vers www. Si tu n’as pas de nom de domaine valide ou enregistré, tu peux effectuer l’installation et accéder au site web via l’adresse IP de ton serveur
  • Pour utiliser l’enregistrement des e-mails de Bolt CMS ou d’autres fonctions du CMS, tu dois configurer un serveur de messagerie dans tes locaux (services IMAP et SMTP), même si un serveur de messagerie public, comme Gmail ou Yahoo ! peut être utilisé pour atteindre le même objectif.

Pré-requis

Dans un premier temps, connecte-toi à ton serveur Debian avec le compte root ou avec un compte avec les privilèges root obtenus via l’utilitaire sudo et installe les utilitaires tels que zip, unzip (pour décompresser les archives zip), curl et wget (pour télécharger des fichiers en ligne) et l’auto-compléteur de ligne de commande bash. Exécute les commandes suivantes afin d’installer tous ces utilitaires en une seule fois.

su -
apt install bash-completion zip unzip curl wget

À l’étape suivante, configure un nom descriptif pour ta machine afin de refléter la destination de ce serveur en exécutant la commande suivante. Remplace la variable de ton nom d’hôte en conséquence.

hostnamectl set-hostname www.myblog.com

Tu peux vérifier le nom d’hôte de la machine et l’enregistrement dans le fichier hosts du système en exécutant les commandes suivantes.

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

Avant de redémarrer le serveur, assure-toi d’abord que le système est à jour avec les derniers correctifs de sécurité, mises à jour du noyau, référentiels et paquets logiciels en exécutant la commande suivante.

apt update
apt upgrade

Une fois le processus de mise à jour terminé, redémarre ta machine Debian afin d’appliquer correctement toutes les mises à jour du noyau et les changements de nom d’hôte.

systemctl reboot

Installe Apache et PHP

Comme nous l’avons dit dans l’introduction, Bolt CMS est une plateforme de gestion de contenu basée sur le Web qui est écrite dans le langage de programmation côté serveur PHP et doit être déployée au-dessus d’une pile LAMP. Nous allons commencer par installer le serveur HTTP Apache et l’interpréteur PHP ainsi que certaines extensions PHP nécessaires au bon fonctionnement de Bolt CMS. Pour installer le composant serveur web et le langage de programmation PHP avec tous les modules requis, lance la commande suivante dans ta console de serveur avec les privilèges 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

Ensuite, vérifie si tous les modules PHP installés sont activés dans ton système en exécutant la commande suivante.

php7.0 –m

Installe MariaDB

Le prochain composant qui manque est la base de données RDBMS. Dans ce tutoriel, nous allons installer Bolt CMS avec le serveur de base de données MariaDB comme backend. L’application Web Bolt CMS utilise la base de données MariaDB pour stocker les différentes configurations du site Web, les utilisateurs, les sessions et d’autres données diverses. Pour installer le serveur et le client de la base de données MariaDB et l’extension PHP MySQL dans Debian 9, lance la commande ci-dessous dans la console de ton serveur.

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

Une fois l’installation de MariaDB terminée, vérifie si le démon de la base de données est en marche sur ta machine et écoute les connexions entrantes sur localhost, port 3306, en exécutant netstat ou ss la commande.

netstat –tlpn | grep mysql

Ou

ss –tlpn | grep mysql

Si netstat n’est pas installé par défaut dans ton système Debian, exécute la commande suivante pour l’installer.

apt install net-tools

Par défaut, le serveur de base de données MySQL n’est pas suffisamment sécurisé dans Debian 9. Le compte racine de la base de données est accessible en fournissant un mot de passe. Pour sécuriser le serveur de base de données, connecte-toi d’abord à la console MySQL et exécute les commandes ci-dessous pour sécuriser le compte racine 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

Après avoir imposé l’utilisation d’un mot de passe au compte racine de la base de données, sécurise davantage le serveur MariaDB en exécutant le script mysql_secure_installation fourni par les paquets d’installation des dépôts stretch de Debian. Pendant son exécution, le script posera une série de questions destinées à sécuriser la base de données MariaDB, comme : changer le mot de passe root MySQL, supprimer les utilisateurs anonymes, désactiver les connexions root à distance et supprimer la base de données de test. Exécute le script en lançant la commande ci-dessous et configure un mot de passe fort pour le compte root de la base de données et assure-toi de taper oui à toutes les questions posées, comme l’indique l’ex l’extrait ci-dessous.

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!

Une fois le script terminé, connecte-toi à la base de données depuis la console sans mot de passe root. L’accès à la base de données devrait être refusé si aucun mot de passe n’est fourni pour le compte root, comme illustré dans l’extrait de commande ci-dessous :

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

Si le mot de passe est fourni, l’accès à la console MySQL devrait être accordé, comme le montre l’extrait de commande ci-dessous. Saisis exit pour quitter la console de la base de données.

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

Une fois que tous les composants LAMP ont été installés, vérifie que le serveur Web est en marche et qu’il écoute les connexions réseau sur le port 80 en lançant la commande suivante avec les privilèges de root.

netstat –tlpn

En inspectant la sortie de la commande netstat, tu peux voir que le serveur Web Apache écoute les connexions réseau entrantes sur le port 80. Pour la même tâche, tu peux aussi utiliser la ss qui est automatiquement installée, par défaut, dans Debian 9.

ss- tulpn

Configure le pare-feu

Si un pare-feu est activé dans ton système, comme l’application pare-feu UFW, tu dois ajouter une nouvelle règle pour permettre au trafic HTTP de passer à travers le pare-feu en lançant la commande suivante.

ufw allow WWW

ou

ufw allow 80/tcp

Tu dois aussi autoriser le trafic SSH à passer par le pare-feu UFW en cas de connexions distantes au serveur.

ufw allow 22/tcp

Certains administrateurs système préfèrent utiliser iptables raw rules pour gérer les règles du pare-feu de ton serveur Debian. Si c’est le cas, tu dois ajouter les règles suivantes pour autoriser le trafic entrant du port 80 sur le pare-feu afin que les autres visiteurs puissent naviguer sur ton site 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

Si tu es connecté au serveur Debian à distance via SSH, tu dois d’abord ajouter la règle suivante pour autoriser le trafic SSH à passer par le pare-feu iptables. Sinon, tu seras bloqué, car le pare-feu commencera à laisser tomber tout le trafic entrant sur le port 22.

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

Après avoir ajouté les règles de pare-feu nécessaires, tu dois tester si le serveur Web Apache est joignable sur ton réseau, en ouvrant un navigateur et en visitant l’adresse IP de ta machine Debian ou ton nom de domaine ou le FQDN du serveur via le protocole HTTP. Si les connexions entrantes sont autorisées sur le port 80, la page Web par défaut devrait s’afficher dans les navigateurs de tes clients. Si tu ne connais pas l’adresse IP de ta machine, exécute ifconfig ou ip a pour révéler l’adresse IP de ton serveur.

http://your_domain.tld

Configure Apache et PHP

À l’étape suivante, nous devons apporter quelques modifications supplémentaires au fichier de configuration par défaut de PHP et modifier les variables PHP suivantes comme décrit ci-dessous. Assure-toi également que le paramètre PHP timezone est correctement configuré et correspond à l’emplacement géographique de ton système. Ouvre /etc/php/7.0/apache2/php.ini pour l’éditer après avoir initialement fait une sauvegarde du fichier de configuration PHP.

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

Recherche, édite et modifie les variables suivantes dans php.ini fichier de configuration :

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

Augmente la Taille_maximale_du_fichier_téléchargé pour prendre en charge les pièces jointes volumineuses si c’est le cas et remplace la variable date.timezone en fonction de ton heure géographique en consultant la liste des fuseaux horaires fournie par les docs PHP au lien suivant http://php.net/manual/en/timezones.php

Afin d’augmenter la vitesse de chargement des pages de ton site Web via le plugin OPCache disponible pour PHP7, ajoute les paramètres OPCache suivants au bas du fichier de configuration de l’interpréteur PHP, sous l’instruction [opcache] comme détaillé ici :

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

Une fois que tu as modifié toutes les lignes décrites ci-dessous, ferme le php.ini fichier de configuration et vérifie si les variables OPCache ont été correctement ajoutées en lançant la commande ci-dessous.

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

Ensuite, nous devons activer les modules Apache rewrite et TLS afin d’obliger les visiteurs à naviguer en toute sécurité sur le site Web via le protocole HTTPS. Le module TLS sécurisera le trafic entre le serveur et les navigateurs de tes clients avec un certificat auto-signé émis automatiquement par Apache. Tu dois aussi activer le fichier de configuration SSL d’Apache pour que le module TLS fonctionne correctement. Exécute la commande suivante pour activer toutes les configurations requises.

a2enmod ssl rewrite
a2ensite default-ssl.conf

Après avoir activé les modules rewrite et TLS, ouvre le fichier de configuration du site SSL par défaut d’Apache avec un éditeur de texte et ajoute les lignes de code des règles de réécriture d’URL après la directive DocumentRoot directive, as shown in the below sample. Aussi, modifie DocumentRoot path to /var/ww/html/public.

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

Extrait du fichier de configuration SSL du site :

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

Ferme le fichier SSL Apache et ouvre également /etc/apache2/sites-enabled/000-default.conf pour le modifier et ajouter les mêmes règles de réécriture d’URL que pour le fichier de configuration SSL. Insère les lignes de code après DocumentRoot comme indiqué dans l’exemple ci-dessous. Aussi, modifie DocumentRoot path to point to /var/ww/html/public répertoire.

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

Après avoir effectué toutes les modifications expliquées ci-dessus, tu dois redémarrer le démon Apache pour appliquer toutes les règles.

systemctl restart apache2

Enfin, ouvre un navigateur et visite ton nom de domaine ou l’adresse IP du serveur via le protocole HTTP. Comme tu utilises les paires de certificats auto-signés automatiquement émis par Apache lors de l’installation, un certificat qui n’est pas fiable pour le navigateur, un avertissement d’erreur devrait s’afficher dans le navigateur. Accepte l’avertissement afin d’accepter le certificat non fiable et de continuer à être redirigé vers la page Web par défaut d’Apache.

https://yourdomain.tld

Erreur de certificat Apache

Si l’application de pare-feu UFW bloque les connexions réseau entrantes sur le port HTTPS, insère une nouvelle règle pour autoriser le trafic HTTPS à passer par le pare-feu en lançant la commande suivante.

ufw allow ‘WWW Full’

ou

ufw allow 443/tcp

Si iptables est l’application pare-feu par défaut installée pour protéger ton système Debian au niveau du réseau, ajoute la règle suivante pour autoriser le trafic entrant du port 443 dans le pare-feu afin que les visiteurs puissent naviguer sur ton nom de domaine.

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

Enfin, crée un fichier d’information PHP dans le chemin webroot du serveur web en exécutant la commande suivante.

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

Visite le fichier script PHP info depuis un navigateur à l’URL suivante, comme illustré dans l’image ci-dessous. Fais défiler jusqu’à date pour vérifier la configuration du fuseau horaire de PHP. Les paramètres du fuseau horaire doivent refléter ton emplacement géographique PHP configuré précédemment.

https://domain.tld/info.php

Réglage de la date en PHP

Ensuite, connecte-toi à la console de base de données MariaDB et crée la base de données Bolt CMS et un utilisateur avec un mot de passe qui sera utilisé pour gérer la base de données du site Web depuis localhost, en exécutant les commandes suivantes. Remplace le nom de la base de données, l’utilisateur et le mot de passe en conséquence.

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

Installe Bolt CMS

Une fois que toutes les exigences du système sont remplies pour installer l’application Bolt CMS, visite la page de téléchargement officielle de Bolt à l’adresse suivante https://bolt.cm/pages/download et récupère la dernière archive compressée zip dans ton système en lançant la commande ci-dessous.

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

Une fois le téléchargement de l’archive zip terminé, extrais le fichier d’archive zip de Bolt CMS dans ton répertoire de travail actuel et liste les fichiers extraits en émettant les commandes suivantes. Supprime aussi le fichier index.html par défaut installé par le serveur web Apache dans le chemin webroot et supprime aussi le fichier info.php créé précédemment.

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

Les fichiers d’installation de Bolt CMS se trouvent dans ton répertoire de travail actuel, dans le bolt-v3.4.4/ répertoire. Envoie la commande ls pour lister les fichiers de ce répertoire. Copie tout le contenu du répertoire extrait dans le chemin de la racine du document de ton serveur Web en émettant la commande suivante. Veille aussi à copier le fichier caché .htaccess dans le chemin webroot.

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

Ensuite, exécute les commandes suivantes afin d’accorder à l’utilisateur du runtime Apache des droits d’écriture complets sur le chemin de la racine web. Utilise ls pour répertorier les permissions des fichiers installés de l’application, situés dans le répertoire /var/www/html/.

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

Ensuite, ouvre le fichier de configuration de Bolt CMS et ajoute les informations de connexion à la base de données MySQL, comme indiqué dans l’extrait de fichier suivant :

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

config.yml Exemple de fichier :

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

config.yml

Enregistre et ferme le fichier de configuration de Bolt CMS, entre dans le répertoire /var/www/html et installe le logiciel de gestion des dépendances PHP Composer en exécutant les commandes ci-dessous.

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

Après l’installation de Composer, ouvre un navigateur et navigue vers l’adresse IP ou le nom de domaine de ton serveur via le protocole HTTPS. Sur le premier écran d’installation, crée le premier nom d’utilisateur Bolt CMS, ajoute un mot de passe fort pour cet utilisateur et indique l’adresse e-mail et le nom d’affichage du compte admin Bolt. Quand tu as terminé, clique sur le bouton Créer le premier utilisateur pour enregistrer les modifications.

Installateur de Bolt CMS

Après avoir créé le nom d’utilisateur Bolt admin, tu seras redirigé vers le tableau de bord Bolt CMS admin, d’où tu pourras commencer à configurer l’application ou ajouter du contenu au site.

Tableau de bord du CMS Bolt

Pour visiter la page d’accueil de Bolt CMS, ouvre un navigateur et navigue vers ton nom de domaine ou l’adresse IP de ton serveur via le protocole HTTPS.

https://www.yourdomain.tld

Site échantillon de Bolt CMS

Le panneau d’administration backend de Bolt CMS est accessible à l’URL suivante. Pour te connecter, fournis le nom d’utilisateur et le mot de passe configurés pour le compte initial pendant le processus d’installation.

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

Connexion à Bolt CMS

Enfin, pour obliger les visiteurs à naviguer en toute sécurité sur l’interface du CMS Bolt via le protocole HTTPS, retourne à la console de ton serveur et modifie le fichier .htaccess situé dans le chemin de la racine du document du répertoire public, en lançant la commande ci-dessous.

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

Ici, recherche la ligne qui commence par </IfModule mod_rewrite.c> de la balise d’ouverture et ajoute les lignes ci-dessous après la directive RewriteEngine on.

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

Au bas du fichier, tu peux modifier les paramètres du serveur PHP pour qu’ils correspondent à tes propres ressources et configurations de serveur, comme le montre l’exemple ci-dessous.

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

Félicitations ! Tu as réussi à installer l’application moderne Bolt CMS sur le serveur Debian 9. Pour personnaliser davantage l’application, visite la page de documentation de Bolt CMS à l’adresse suivante : https://docs.bolt.cm/3.4/getting-started/introduction

Vous aimerez aussi...