Hébergement PHPList sous CentOS

Logo PHPListPHPList est une plate-forme de publipostage, c’est-à-dire l’envoi massif de courriers électroniques à des listes d’abonnés. L’application permet à une petite ou moyenne entreprise de renseigner ses clients prospectifs ou avérés sur les services qu’elle fournit ou les promotions en cours. PHPList est un logiciel libre écrit en PHP, et qui utilise une base de données MySQL/MariaDB pour stocker les informations. Notons que le modèle économique de PHPList ressemble à celui de WordPress, dans la mesure où PHPList.com est à PHPList.org ce que WordPress.com est à WordPress.org.

PHPList

Prérequis

PHPList est censé être intégré à un site web existant. On n’aura donc pas un hébergement indépendant du style newsletter.slackbox.fr. L’arborescence des répertoires ressemblera à ceci.

  • www.slackbox.fr : site principal
  • www.slackbox.fr/lists : page d’inscription à la newsletter
  • www.slackbox.fr/lists/admin : page d’administration

Configuration de SELinux

Étant donné que nous installons PHPList en-dessous de /var/www, tous les fichiers nouvellement créés seront correctement étiquetés httpd_sys_content_t. Rien à signaler de ce côté-là.

PHPList doit pouvoir envoyer des mails via Postfix, ce qu’il faut explicitement autoriser.

# setsebool -P httpd_can_sendmail on

Apache possède les droits d’écriture sur le répertoire lists/uploadimages (voir ici). Ces droits d’écriture seront définis par le biais des permissions Unix classiques, mais il faut également le spécifier du côté de SELinux.

# setsebool -P httpd_unified on

Téléchargement

Créer un répertoire de téléchargement approprié pour ranger PHPList.

# mkdir -p /root/webapps/phplist

On peut utiliser Links pour télécharger PHPList, à condition de se rendre directement sur la page de téléchargement.

# cd /root/webapps/phplist
# links https://www.phplist.org/download-phplist/

Descendre un peu sur la page, repérer le lien Download TGZ et récupérer le fichier phplist-3.3.1.tgz.

Installation

Créer la base de données.

# mysql -u root -p
Enter password: ********
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.52-MariaDB MariaDB Server

MariaDB [(none)]> create database `slackbox-phplist`;
Query OK, 1 row affected (0.02 sec)

MariaDB [(none)]> grant all on `slackbox-phplist`.* 
    -> to slackboxuser@localhost 
    -> identified by '********';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit;
Bye

Dans un premier temps, décompresser l’archive téléchargée dans le répertoire où elle est stockée.

# cd /root/webapps/phplist
# tar xvzf phplist-3.3.1.tgz

Jetons un oeil sur le contenu de l’archive décompressée.

# ls phplist-3.3.1
bin              default.behat.yml  public_html  TODO            
CODING.md        doc                README.md    UPGRADE
composer.json    INSTALL            scripts      VERSION
CONTRIBUTING.md  LICENSE            TESTING.md
COPYING          PEOPLE             tests

Nous utiliserons uniquement le contenu du répertoire public_html.

# ls phplist-3.3.1/public_html/
index.html lists

La racine de notre site web existant www.slackbox.fr se situe dans le répertoire /var/www/slackbox-site/html. Dans un premier temps, nous allons copier le répertoire lists vers cet endroit.

# cd /var/www/slackbox-site/html
# cp -Rv /root/webapps/phplist/phplist-3.3.1/public_html/lists .

Ensuite, nous allons régler les permissions de cette arborescence, en attribuant les fichiers et les répertoires à l’utilisateur “commun mortel” microlinux et au groupe correspondant.

# chown -R microlinux:microlinux lists/
# find lists/ -type d -exec chmod 0755 {} \;
# find lists/ -type f -exec chmod 0644 {} \;

En passant, supprimer le fichier lists/index.html qui ne sert à rien, étant donné que nous disposons déjà de lists/index.php.

# rm lists/index.html

Dans ce répertoire, il faudra éditer le fichier config/config.php pour renseigner les paramètres de connexion à la base de données.

// what is your Mysql database server hostname
$database_host = 'localhost';

// what is the name of the database we are using
$database_name = 'slackbox-phplist';

// what user has access to this database
$database_user = 'slackboxuser';

// and what is the password to login to control the database
$database_password = '**********';

Un peu plus bas dans ce fichier, il faut mettre la variable TEST à 0.

// if TEST is set to 1 (not 0) it will not actually send ANY 
// messages, but display what it would have sent this is here, 
// to make sure you edited the config file and mails are not 
// sent "accidentally"on unmanaged systems
define('TEST', 0);

À partir de là, on peut ouvrir la page lists/admin dans un navigateur Web.

PHPList

Cliquer sur Initialise Database pour initialiser la base de données. Si la langue par défaut du système n’est pas la même que celle définie par défaut dans le navigateur, PHPList affiche l’avertissement suivant.

PHPList

Dans ce cas, il faudra ouvrir le fichier config/config.php et ajouter ceci à la fin.

// System language
$default_system_language = "fr";

Enregistrer les modifications et rafraîchir la page dans le navigateur. Renseigner quelques données élémentaires et choisir un mot de passe. Attention, celui-ci apparaît en clair dans l’interface.

PHPList

L’initialisation de la base de données se lance. L’opération peut durer quelques minutes, en fonction de la puissance du serveur.

PHPList

Au terme de l’opération, PHPList affiche un récapitulatif. Cliquer sur le bouton Logout pour se déconnecter.

PHPList

À présent, on peut se connecter en tant qu’administrateur (admin) avec le mot de passe que l’on vient de définir.

PHPList

La page d’accueil de PHPList offre une vue d’ensemble sur les principales fonctionnalités de la plate-forme.

PHPList

Configurer le stockage des images

Dans la configuration par défaut, PHPList cherche à stocker les images dans le répertoire html/images en partant de la racine du site. Si ce répertoire n’existe pas, l’éditeur affichera un avertissement correspondant.

PHPList

A priori, on va éviter d’intégrer des images dans nos mails, étant donné que les messages formatés en HTML sont proscrits par la netiquette. En revanche, on va se débarrasser de l’avertissement en définissant un emplacement de stockage lists/uploadimages approprié. Le serveur devra posséder les droits d’écriture sur ce répertoire.

# cd /var/www/slackbox-site/html/lists
# mkdir uploadimages
# chown microlinux:apache uploadimages
# chmod 0770 uploadimages

Ensuite, on devra éditer config/config.php et ajouter ceci.

// Image directory
define('UPLOADIMAGES_DIR', 'lists/uploadimages');

Une fois qu’on a rechargé la page, l’avertissement a bien disparu.

Envoi d’une première campagne de test

L’entrée de menu Abonnés > Liste des abonnés permet la gestion des listes. Dans la configuration par défaut, PHPList contient deux listes test et newsletter. Je supprime ces deux listes et je crée ma propre liste.

PHPList

Une fois que j’ai enregistré ma liste, je clique sur Ajouter quelques abonnés.

PHPList

Maintenant que je dispose de ma liste avec une poignée de membres, je peux lancer ma première campagne via l’entrée de menu Campagnes > Envoyer une campagne.

L’interface de rédaction d’une campagne s’ouvre sur le premier d’une série de cinq onglets. Renseigner le sujet du message et l’expéditeur, et rédiger le corps du message dans la fenêtre principale. Pour ce premier envoi, on pourra conserver le pied de page défini par défaut. Une fois que la rédaction du message est terminée, cliquer sur Suivant.

PHPList

 

Ici, nous allons préférer l’envoi au format texte simple.

PHPList

Pour ce premier envoi, nous n’allons pas définir de planification. Il suffit de confirmer les valeurs par défaut pour ce troisième onglet.

PHPList

Dans le quatrième onglet, nous définissons la liste de destinataires à laquelle il faut envoyer cette première campagne.

PHPList

Dans le cinquième et dernier onglet, on pourra éventuellement renseigner une adresse mail pour recevoir la confirmation de lancement de la campagne. Ensuite, cliquer sur Mettre la campagne en file d’attente pour l’envoi.

PHPList

Une fois que la campagne est en file d’attente, il suffit de cliquer sur Traiter la file d’attente.

PHPList

Pour aller plus loin

Maintenant que PHPList fonctionne, il ne reste plus qu’à en explorer les multiples possibilités. La documentation officielle de PHPList (en anglais) est très bien faite et permet de découvrir l’application pas à pas.

PHPList

Ce contenu a été publié dans Divers, Documentation Microlinux, Hébergement, avec comme mot(s)-clé(s) , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *