Serveur Web · 10 min read · Nov 28, 2025

Le Serveur Parfait - Ubuntu 17.04 (Zesty Zapus) avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3.1 - Page 2

8. Installer Apache, PHP, phpMyAdmin, FCGI, SuExec, Pear et mcrypt

Apache2, PHP 7, phpMyAdmin, FCGI, suExec, Pear et mcrypt peuvent être installés comme suit :

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.0 php7.0-common php7.0-gd php7.0-mysql php7.0-imap phpmyadmin php7.0-cli php7.0-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear php7.0-mcrypt mcrypt imagemagick libruby libapache2-mod-python php7.0-curl php7.0-intl php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl memcached php-memcache php-imagick php-gettext php7.0-zip php7.0-mbstring

Vous verrez la question suivante :

Serveur web à reconfigurer automatiquement : <-- apache2   
Configurer la base de données pour phpmyadmin avec dbconfig-common ? <-- Oui  
Mot de passe de l'application MySQL pour phpmyadmin : <-- Appuyez sur entrer  

Ensuite, exécutez la commande suivante pour activer les modules Apache suexec, rewrite, ssl, actions et include (plus dav, dav_fs et auth_digest si vous souhaitez utiliser WebDAV) :

a2enmod suexec rewrite ssl actions include cgi
a2enmod dav_fs dav auth_digest headers

Pour s’assurer que le serveur ne peut pas être attaqué via la vulnérabilité HTTPOXY, je vais désactiver l’en-tête HTTP_PROXY dans apache globalement. Créez un nouveau fichier httpoxy.conf avec nano :

nano /etc/apache2/conf-available/httpoxy.conf

Collez ce contenu dans le fichier :


    RequestHeader unset Proxy early

Activez le fichier de configuration en exécutant :

a2enconf httpoxy

Redémarrez Apache ensuite :

service apache2 restart

Si vous souhaitez héberger des fichiers Ruby avec l’extension .rb sur vos sites web créés via ISPConfig, vous devez commenter la ligne application/x-ruby rb dans /etc/mime.types :

nano /etc/mime.types
[...]
#application/x-ruby                             rb
[...]

(Ceci est nécessaire uniquement pour les fichiers .rb ; les fichiers Ruby avec l’extension .rbx fonctionnent directement.)

Redémarrez Apache ensuite :

service apache2 restart

8.1 Cache d’opcodes PHP (optionnel)

Opcache est un cache d’opcodes PHP gratuit pour mettre en cache et optimiser le code intermédiaire PHP. APCu est un module de compatibilité qui fournit des fonctions compatibles avec APC pour Opcache, qui est utilisé par de nombreux systèmes de mise en cache CMS. Il est recommandé d’avoir ces extensions PHP installées pour accélérer votre page PHP.

APCu peut être installé comme suit :

apt-get -y install php7.0-opcache php-apcu

Maintenant, redémarrez Apache :

service apache2 restart

8.2 PHP-FPM

Pour utiliser PHP-FPM avec Apache, nous avons besoin du module mod_proxy_fcgi d’Apache, qui est installé par défaut et doit juste être activé. Nous pouvons installer PHP-FPM comme suit :

apt-get -y install php7.0-fpm

Assurez-vous d’activer les modules et de redémarrer Apache :

a2enmod actions proxy_fcgi alias   
service apache2 restart

8.3 Versions PHP supplémentaires

Il est possible d’avoir plusieurs versions PHP sur un serveur (sélectionnables via ISPConfig) qui peuvent être exécutées via FastCGI et PHP-FPM. Pour apprendre à construire des versions PHP supplémentaires (PHP-FPM et FastCGI) et comment configurer ISPConfig, veuillez consulter ce tutoriel : https://www.howtoforge.com/tutorial/how-to-install-php-5-6-on-ubuntu-16-04/ (fonctionne également pour Ubuntu 16.10).

10.1 Installer HHVM (HipHop Virtual Machine), optionnel

Dans cette étape, nous allons installer HHVM avec apt. HHVM est un moteur PHP rapide développé par Facebook.

apt-get -y install hhvm

9. Installer Let’s Encrypt

ISPConfig 3.1 a un support intégré pour l’autorité de certification SSL gratuite Let’s Encrypt. La fonction Let’s Encrypt vous permet de créer des certificats SSL gratuits pour votre site web dans ISPConfig.

Maintenant, nous allons ajouter le support pour Let’s Encrypt.

apt-get -y install certbot

10. Installer Mailman

ISPConfig vous permet de gérer (créer/modifier/supprimer) des listes de diffusion Mailman. Si vous souhaitez utiliser cette fonctionnalité, installez Mailman comme suit :

apt-get install mailman

Sélectionnez au moins une langue, par exemple :

Langues à supporter : <– en (Anglais)
Liste de sites manquante <– Ok

Avant de pouvoir démarrer Mailman, une première liste de diffusion appelée mailman doit être créée :

newlist mailman

root@server1:~# newlist mailman
Entrez l’email de la personne gérant la liste : <– adresse email de l’administrateur, par exemple [email protected]
Mot de passe initial de mailman : <– mot de passe administrateur pour la liste mailman
Pour terminer la création de votre liste de diffusion, vous devez éditer votre fichier /etc/aliases (ou équivalent) en ajoutant les lignes suivantes, et éventuellement en exécutant le programme newaliases :

liste de diffusion mailman

mailman: “|/var/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/var/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/var/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/var/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/var/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/var/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/var/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/var/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/var/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/var/lib/mailman/mail/mailman unsubscribe mailman”

Appuyez sur entrer pour notifier le propriétaire de mailman… <– ENTER

root@server1:~#

Ouvrez /etc/aliases ensuite…

nano /etc/aliases

… et ajoutez les lignes suivantes :

[...]
## liste de diffusion mailman
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Exécutez

newaliases

ensuite et redémarrez Postfix :

service postfix restart

Enfin, nous devons activer la configuration Apache de Mailman :

ln -s /etc/mailman/apache.conf /etc/apache2/conf-available/mailman.conf

Cela définit l’alias /cgi-bin/mailman/ pour tous les vhosts Apache, ce qui signifie que vous pouvez accéder à l’interface d’administration de Mailman pour une liste à http:///cgi-bin/mailman/admin/, et la page web pour les utilisateurs d’une liste de diffusion peut être trouvée à http:///cgi-bin/mailman/listinfo/.

Sous http:///pipermail, vous pouvez trouver les archives de la liste de diffusion.

Redémarrez Apache ensuite :

service apache2 restart

Puis démarrez le démon Mailman :

service mailman start

11. Installer PureFTPd et Quota

PureFTPd et quota peuvent être installés avec la commande suivante :

apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool

Éditez le fichier /etc/default/pure-ftpd-common…

nano /etc/default/pure-ftpd-common

… et assurez-vous que le mode de démarrage est défini sur standalone et que VIRTUALCHROOT=true :

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Maintenant, nous configurons PureFTPd pour permettre les sessions FTP et TLS. FTP est un protocole très peu sécurisé car tous les mots de passe et toutes les données sont transférés en texte clair. En utilisant TLS, toute la communication peut être chiffrée, rendant ainsi FTP beaucoup plus sécurisé.

Si vous souhaitez autoriser les sessions FTP et TLS, exécutez

echo 1 > /etc/pure-ftpd/conf/TLS

Pour utiliser TLS, nous devons créer un certificat SSL. Je le crée dans /etc/ssl/private/, donc je crée d’abord ce répertoire :

mkdir -p /etc/ssl/private/

Ensuite, nous pouvons générer le certificat SSL comme suit :

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Nom du pays (code à 2 lettres) [AU] : <– Entrez le nom de votre pays (par exemple, “DE”).
Nom de l’état ou de la province (nom complet) [Some-State] : <– Entrez le nom de votre état ou province.
Nom de la localité (ex. ville) [] : <– Entrez votre ville.
Nom de l’organisation (ex. entreprise) [Internet Widgits Pty Ltd] : <– Entrez le nom de votre organisation (par exemple, le nom de votre entreprise).
Nom de l’unité organisationnelle (ex. section) [] : <– Entrez le nom de votre unité organisationnelle (par exemple, “Département IT”).
Nom commun (ex. VOTRE nom) [] : <– Entrez le nom de domaine entièrement qualifié du système (par exemple, “server1.example.com”).
Adresse email [] : <– Entrez votre adresse email.

Changez les permissions du certificat SSL :

chmod 600 /etc/ssl/private/pure-ftpd.pem

Puis redémarrez PureFTPd :

service pure-ftpd-mysql restart

Éditez /etc/fstab. Le mien ressemble à ceci (j’ai ajouté,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 à la partition avec le point de montage /) :

nano /etc/fstab
# /etc/fstab: informations statiques sur le système de fichiers.  
#  
# Utilisez 'blkid' pour imprimer l'identifiant universel unique pour un  
# appareil ; cela peut être utilisé avec UUID= comme un moyen plus robuste de nommer des appareils  
# qui fonctionne même si des disques sont ajoutés et retirés. Voir fstab(5).  
#  
#        
/dev/mapper/server1--vg-root / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1  
/dev/mapper/server1--vg-swap_1 none swap sw 0 0  
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0

Pour activer le quota, exécutez ces commandes :

mount -o remount /
quotacheck -avugm  
quotaon -avug

Ce qui affichera la sortie suivante :

root@server1:/# quotacheck -avugm  
quotacheck: Scanning /dev/mapper/server1--vg-root [/] done  
quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted.  
quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted.  
quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted.  
quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted.  
quotacheck: Checked 19755 directories and 117639 files  
quotacheck: Old file not found.  
quotacheck: Old file not found.  
root@server1:/opt/metronome# quotaon -avug  
/dev/mapper/server1--vg-root [/]: group quotas turned on  
/dev/mapper/server1--vg-root [/]: user quotas turned on

12. Installer le Serveur DNS BIND

BIND peut être installé comme suit :

apt-get -y install bind9 dnsutils haveged

13. Installer Vlogger, Webalizer et AWstats

Vlogger, webalizer et AWstats peuvent être installés comme suit :

apt-get install vlogger webalizer awstats geoip-database libclass-dbi-mysql-perl

Ouvrez ensuite /etc/cron.d/awstats…

nano /etc/cron.d/awstats

… et commentez tout dans ce fichier :

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Générer des rapports statiques :
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

14. Installer Jailkit

Jailkit est nécessaire uniquement si vous souhaitez chroot les utilisateurs SSH. Il peut être installé comme suit (important : Jailkit doit être installé avant ISPConfig - il ne peut pas être installé après !) :

apt-get -y install build-essential autoconf automake1.11 libtool flex bison debhelper binutils
cd /tmp   
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz   
tar xvfz jailkit-2.19.tar.gz   
cd jailkit-2.19   
echo 5 > debian/compat

La version actuelle 2.19 de Jailkit a une erreur de syntaxe qui empêche sa compilation. Pour corriger cela, ouvrez le fichier debian/changelog avec nano :

nano debian/changelog

Et ajoutez la ligne suivante à la ligne 5 plus une ligne vide après :

 -- Olivier   Wed, 18 Nov 2015 20:38:44 +0100

Ainsi, la première partie résultante du fichier ressemble à ceci (la ligne insérée en rouge) :

jailkit (2.19-1) UNRELEASED; urgency=medium
* somehow a bug URL was pasted into the ini file location in the sourcecode for jk_chrootsh in the 2.18 release. Fixed.
-- Olivier  Wed, 18 Nov 2015 20:38:44 +0100
jailkit (2.18-1) UNRELEASED; urgency=medium
* maintenance release, fix uid_t printing for very high uid numbers  
* minor improvements to jk_init.ini  
* add possibility to force --login in jk_chrootsh
-- Olivier  Wed, 18 Nov 2015 20:38:44 +0100

Ensuite, construisez le paquet jailkit en exécutant cette commande :

./debian/rules binary

Vous pouvez maintenant installer le paquet Jailkit.deb comme suit :

cd ..  
dpkg -i jailkit_2.19-1_*.deb  
rm -rf jailkit-2.19*

15. Installer fail2ban et UFW

Ceci est optionnel mais recommandé, car le moniteur ISPConfig essaie de montrer le journal :

apt-get -y install fail2ban

Pour faire en sorte que fail2ban surveille PureFTPd et Dovecot, créez le fichier /etc/fail2ban/jail.local :

nano /etc/fail2ban/jail.local
[pureftpd]
enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[postfix-sasl]
enabled  = true
port     = smtp
filter   = postfix-sasl
logpath  = /var/log/mail.log
maxretry = 3

Ensuite, créez les deux fichiers de filtre suivants :

nano /etc/fail2ban/filter.d/pureftpd.conf
[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex =
nano /etc/fail2ban/filter.d/dovecot-pop3imap.conf
[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex =

Ajoutez la ligne ignoreregex manquante dans le fichier postfix-sasl :

echo "ignoreregex =" >> /etc/fail2ban/filter.d/postfix-sasl.conf

Redémarrez fail2ban ensuite :

service fail2ban restart

Si vous obtenez cette erreur :

root@server1:/tmp# service fail2ban restart  
Job for fail2ban.service failed because the control process exited with error code.  
See "systemctl status fail2ban.service" and "journalctl -xe" for details.

Alors votre système est probablement affecté par ce problème Ubuntu : https://bugs.launchpad.net/ubuntu/+source/postfix/+bug/1687368 qui empêche postfix de créer son fichier journal. Pour corriger cela, exécutez :

chmod 775 /var/log  
service postfix restart  
service fail2ban restart

Pour installer le pare-feu UFW, exécutez cette commande apt :

apt-get install ufw
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.