Comment installer le Forum Flarum avec Nginx et LE SSL sur CentOS 8

Flarum est un logiciel de forum gratuit, open-source et de nouvelle génération qui te permet de lancer et de développer plus facilement une communauté en ligne prospère. C’est un logiciel simple, léger, rapide et adapté aux mobiles, basé sur PHP. Il est livré avec un riche ensemble de fonctionnalités, notamment une interface utilisateur élégante, une interface à deux volets, un défilement infini, un compositeur flottant, une réactivité totale et bien d’autres encore.

Dans ce tutoriel, nous allons expliquer comment installer le forum Flarum sur le serveur CentOS 8.

Exigences

  • Un serveur fonctionnant sous CentOS 8.
  • Un nom de domaine valide pointé avec l’IP de ton serveur
  • Un mot de passe root est configuré sur le serveur.

Pour commencer

Avant de commencer, tu dois installer le référentiel EPEL et Remi dans ton système. Tout d’abord, installe le référentiel EPEL avec la commande suivante :

dnf install epel-release -y

Ensuite, télécharge et installe le référentiel Remi avec la commande suivante :

wget http://rpms.remirepo.net/enterprise/remi-release-8.rpm
rpm -Uvh remi-release-8.rpm

Installe Nginx, MariaDB et PHP

Commence par installer le serveur web Nginx et le serveur MariaDB avec la commande suivante :

dnf install nginx mariadb-server -y

Une fois les deux paquets installés, tu devras activer le module php:remi-7.3 pour installer PHP 7.3. Tu peux l’activer avec la commande suivante :

dnf module enable php:remi-7.3

Ensuite, installe PHP avec les autres dépendances requises avec la commande suivante :

dnf install php php-fpm php-common php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml -y

Une fois que tous les paquets sont installés, démarre le service Nginx, MariaDB et PHP-FPM et active-les pour qu’ils démarrent après le redémarrage du système avec la commande suivante :

systemctl start nginx
systemctl start mariadb
systemctl start php-fpm
systemctl enable nginx
systemctl enable mariadb
systemctl enable php-fpm

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configurer la base de données MariaDB

Par défaut, MariaDB n’est pas sécurisée. Tu peux la sécuriser avec le script suivant :

mysql_secure_installation

Réponds à toutes les questions comme indiqué ci-dessous :

Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
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

Une fois que tu as terminé, connecte-toi au shell MariaDB avec la commande suivante :

mysql -u root -p

Indique ton mot de passe root à l’invite puis crée une base de données et un utilisateur pour Flarum avec la commande suivante :

MariaDB [(none)]> CREATE DATABASE flarumdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES on flarumdb.* to 'flarum'@'localhost' identified by 'password';

Ensuite, vide les privilèges et quitte le shell MariaDB avec la commande suivante :

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configurer PHP-FPM pour Nginx

Ensuite, tu devras configurer PHP-FPM pour qu’il fonctionne avec Nginx. Tu peux le faire en modifiant le fichier www.conf :

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

Change le nom de l’utilisateur et du groupe d’apache à nginx comme indiqué ci-dessous :

user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx

Ensuite, trouve la ligne suivante :

;listen = /run/php-fpm/www.sock

Et remplace-la par la ligne suivante :

listen = 127.0.0.1:9000

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, redémarre le service PHP-FPM pour appliquer les modifications :

systemctl restart php-fpm

Installer Flarum

Avant d’installer Flarum, tu dois installer Composer dans ton système.

Tu peux l’installer avec la commande suivante :

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

Une fois installé, tu devrais obtenir la sortie suivante :

All settings correct for using Composer
Downloading...

Composer (version 1.9.2) successfully installed to: /root/composer.phar
Use it: php composer.phar

Ensuite, déplace le fichier binaire Composer dans le répertoire /usr/local/bin et donne-lui les autorisations nécessaires :

mv composer.phar /usr/local/bin/composer
chmod 755 /usr/local/bin/composer

Ensuite, change le répertoire en racine du document Nginx et crée un projet Flarum avec la commande suivante :

cd /var/www/html
composer create-project flarum/flarum . --stability=beta

Ensuite, donne les autorisations appropriées sur le répertoire racine de Nginx web avec la commande suivante :

chown -R nginx:nginx /var/www/html
chmod -R 755 /var/www/html
chown -R nginx:nginx /var/lib/php

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configurer Nginx pour Flarum

Ensuite, tu devras créer un fichier de configuration d’hôte virtuel pour Nginx. Tu peux le créer avec la commande suivante :

nano /etc/nginx/conf.d/flarum.conf

Ajoute les lignes suivantes :

server {
    listen   80;
    server_name  flarum.example.com;

# note that these lines are originally from the "location /" block
root   /var/www/html/public;
index index.php index.html index.htm;

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

location /flarum {
    deny all;
    return 404;
}

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

location ~* \.html$ {
    expires -1;
}

location ~* \.(css|js|gif|jpe?g|png)$ {
    expires 1M;
    add_header Pragma public;
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types application/atom+xml
           application/javascript
           application/json
           application/vnd.ms-fontobject
           application/x-font-ttf
           application/x-web-app-manifest+json
           application/xhtml+xml
           application/xml
           font/opentype
           image/svg+xml
           image/x-icon
           text/css
           #text/html -- text/html is gzipped by default by nginx
           text/plain
           text/xml;
gzip_buffers 16 8k;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
   }

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, tu devras augmenter la taille de hash_bucket dans le fichier nginx.conf.

Tu peux le faire en modifiant le fichier /etc/nginx/nginx.conf :

nano /etc/nginx/nginx.conf

Ajoute la ligne suivante exactement au-dessus de la dernière ligne :

server_names_hash_bucket_size 64;

Sauvegarde et ferme le fichier. Ensuite, vérifie que Nginx n’a pas d’erreur de syntaxe avec la commande suivante :

nginx -t

Tu devrais voir la sortie suivante :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Enfin, redémarre le service Nginx et PHP-FPM pour appliquer les modifications :

systemctl restart php-fpm
systemctl restart nginx

Configurer SELinux et le pare-feu

Tout d’abord, tu dois créer une règle de pare-feu pour autoriser le service HTTP et HTTPS depuis les réseaux externes. Tu peux l’autoriser avec la commande suivante :

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

Par défaut, SELinux est activé dans CentOS 8. Tu devras donc configurer SELinux pour que Flarum fonctionne correctement. Tu peux configurer SELinux à l’aide de la commande suivante :

setsebool httpd_can_network_connect on -P

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Accède à l’interface Web de Flarum

Maintenant, ouvre ton navigateur Web et tape l’URL http://flarum.example.com. Tu seras redirigé vers la page suivante :

Installateur du forum Flarum

Indique le nom de ton forum, les détails de la base de données, le nom d’utilisateur admin, le mot de passe et clique sur le bouton Installer Flarum. Une fois l’installation terminée avec succès, tu devrais voir le tableau de bord de Flarum sur la page suivante :

Forum Flarum

Sécurise Flarum avec Let’s Encrypt SSL

Flarum est maintenant installé et configuré. Il est temps de le sécuriser avec le SSL gratuit de Let’s Encrypt.

Pour ce faire, tu dois télécharger le client certbot sur ton serveur. Tu peux télécharger et définir la permission correcte en exécutant la commande suivante :

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Maintenant, exécute la commande suivante pour obtenir et installer un certificat SSL pour ton site Web flarum.

certbot-auto --nginx -d flarum.example.com

La commande ci-dessus va d’abord installer toutes les dépendances requises sur ton serveur. Une fois installé, il te sera demandé de fournir une adresse e-mail et d’accepter les conditions de service comme indiqué ci-dessous :

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y 


Obtaining a new certificate
Performing the following challenges:
http-01 challenge for flarum.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/flarum.conf

Ensuite, tu devras choisir de rediriger ou non le trafic HTTP vers HTTPS comme indiqué ci-dessous :

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Tape 2 et appuie sur Entrée pour continuer. Une fois l’installation terminée, tu devrais voir le résultat suivant :

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/flarum.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://flarum.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=flarum.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/flarum.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/flarum.example.com/privkey.pem
   Your cert will expire on 2020-03-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

C’est tout ! Tu peux maintenant accéder à ton site Web Flarum en utilisant l’URL sécurisée https://flarum.example.com.

Vous aimerez aussi...