Serveur Debian · 12 min read · Jan 05, 2026
Le Serveur Parfait - Debian 8.6 (nginx, BIND, Dovecot, ISPConfig 3.1) - Page 2
10 Installer Nginx, PHP (PHP-FPM) et Fcgiwrap
Nginx est disponible en tant que paquet pour Debian que nous pouvons installer comme suit :
apt-get install nginxSi Apache2 est déjà installé sur le système, arrêtez-le maintenant…
service apache2 stopLe message “ Échec de l’arrêt de apache2.service : Unité apache2.service non chargée. “ est normal et n’indique pas une erreur.
… et supprimez les liens de démarrage système d’Apache :
systemctl disable apache2Démarrez nginx ensuite :
service nginx start(Si Apache2 et nginx sont tous deux installés, l’installateur ISPConfig 3 vous demandera lequel vous souhaitez utiliser - répondez nginx dans ce cas. Si l’un de ces deux est installé, ISPConfig effectuera la configuration nécessaire automatiquement.)
Nous pouvons faire fonctionner PHP5 dans nginx via PHP-FPM (PHP-FPM (FastCGI Process Manager) est une implémentation alternative de PHP FastCGI avec des fonctionnalités supplémentaires utiles pour des sites de toute taille, en particulier les sites plus fréquentés) que nous installons comme suit :
apt-get install php5-fpmPHP-FPM est un processus démon (avec le script d’initialisation /etc/init.d/php5-fpm) qui exécute un serveur FastCGI sur le socket /var/run/php5-fpm.sock.
Pour obtenir le support MySQL dans PHP, nous pouvons installer le paquet php5-mysql. Il est judicieux d’installer d’autres modules PHP5 car vous pourriez en avoir besoin pour vos applications. Vous pouvez rechercher les modules PHP5 disponibles comme ceci :
apt-cache search php5Choisissez ceux dont vous avez besoin et installez-les comme ceci :
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-memcached php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcachedAPC est un cache d’opcodes PHP gratuit et open-source pour mettre en cache et optimiser le code intermédiaire PHP. Il est similaire à d’autres caches d’opcodes PHP, tels que eAccelerator et XCache. Il est fortement recommandé d’en avoir un installé pour accélérer vos pages PHP.
APC peut être installé comme suit :
apt-get install php-apcEnsuite, ouvrez /etc/php5/fpm/php.ini…
nano /etc/php5/fpm/php.ini… et définissez cgi.fix_pathinfo=0 et votre fuseau horaire :
[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Berlin"
[...](Vous pouvez trouver tous les fuseaux horaires disponibles dans les répertoires /usr/share/zoneinfo et ses sous-répertoires.)
Maintenant, rechargez PHP-FPM :
service php5-fpm reloadPour obtenir le support CGI dans nginx, nous installons Fcgiwrap.
Fcgiwrap est un wrapper CGI qui devrait également fonctionner pour des scripts CGI complexes et peut être utilisé pour des environnements d’hébergement partagé car il permet à chaque vhost d’utiliser son propre répertoire cgi-bin.
Installez le paquet fcgiwrap :
apt-get install fcgiwrapAprès l’installation, le démon fcgiwrap devrait déjà être démarré ; son socket est /var/run/fcgiwrap.socket. S’il ne fonctionne pas, vous pouvez utiliser le script fservice fcgiwrap pour le démarrer.
C’est tout ! Maintenant, lorsque vous créez un vhost nginx, ISPConfig s’occupera de la configuration correcte du vhost.
10.1 Versions PHP supplémentaires
À partir d’ISPConfig 3.0.5, il est possible d’avoir plusieurs versions de PHP sur un serveur (sélectionnables via ISPConfig) qui peuvent être exécutées via PHP-FPM y compris PHP 7 et 7.1. Pour apprendre comment construire des versions PHP supplémentaires (PHP-FPM) et comment configurer ISPConfig, veuillez consulter ce tutoriel : Comment installer PHP 7 (PHP-FPM & FastCGI) pour ISPConfig 3 sur Debian 8 (Jessie)
10.2 Installer phpMyAdmin
Installez phpMyAdmin comme suit :
apt-get install phpmyadminNe sélectionnez pas d’option lorsque l’installateur demande “ Serveur web à reconfigurer automatiquement : “ et appuyez sur ok.
Configurer la base de données pour phpmyadmin avec dbconfig-common ? <-- oui
Mot de passe de l'utilisateur administratif de la base de données : <-- Entrez le mot de passe root MySQL
Mot de passe de l'application MySQL pour phpmyadmin : <-- Appuyez sur EntréeVous pouvez maintenant trouver phpMyAdmin dans le répertoire /usr/share/phpmyadmin/.
Après avoir installé ISPConfig 3, vous pouvez accéder à phpMyAdmin comme suit :
Le vhost des applications ISPConfig sur le port 8081 pour nginx est livré avec une configuration phpMyAdmin, donc vous pouvez utiliser http://server1.example.com:8081/phpmyadmin ou http://server1.example.com:8081/phpMyAdmin pour accéder à phpMyAdmin.
Si vous souhaitez utiliser un alias /phpmyadmin ou /phpMyAdmin que vous pouvez utiliser depuis vos sites web, c’est un peu plus compliqué que pour Apache car nginx n’a pas d’alias globaux (c’est-à-dire des alias qui peuvent être définis pour tous les vhosts). Par conséquent, vous devez définir ces alias pour chaque vhost à partir duquel vous souhaitez accéder à phpMyAdmin.
Pour ce faire, collez ce qui suit dans le champ Directives nginx de l’onglet Options du site web dans ISPConfig :
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}Si vous utilisez http s au lieu de http pour votre vhost, vous devez ajouter la ligne fastcgi_param HTTPS on; à votre configuration phpMyAdmin comme ceci :
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param HTTPS on; # <-- ajoutez cette ligne
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}Si vous utilisez à la fois http et https pour votre vhost, vous pouvez utiliser la variable $https. Retournez au champ Directives nginx, et au lieu de fastcgi_param HTTPS on; vous ajoutez la ligne fastcgi_param HTTPS $https; afin que vous puissiez utiliser phpMyAdmin pour les requêtes http et https :
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param HTTPS $https; # <-- ajoutez cette ligne
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last;
}10.3 Installer HHVM (HipHop Virtual Machine)
Dans cette étape, nous allons installer HHVM depuis son dépôt Debian officiel. Ajoutez le dépôt HHVM et importez la clé.
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
echo deb http://dl.hhvm.com/debian jessie main | sudo tee /etc/apt/sources.list.d/hhvm.listMettez à jour la liste des paquets :
sudo apt-get updateet installez HHVM :
sudo apt-get install hhvm11 Installer Let’s Encrypt
ISPConfig 3.1 a le support 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 depuis ISPConfig.
apt-get install python-certbot -t jessie-backports12 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 mailmanSé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 mailmanroot@server1:~# newlist mailman
Entrez l’email de la personne gérant la liste : <– adresse email de l’admin, par exemple [email protected]
Mot de passe initial de mailman : <– mot de passe admin 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… <– ENTRER
root@server1:~#
Ouvrez ensuite /etc/aliases…
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
newaliasesensuite et redémarrez Postfix :
service postfix restartPuis démarrez le démon Mailman :
service mailman startAprès avoir installé ISPConfig 3, vous pouvez accéder à Mailman comme suit :
Le vhost des applications ISPConfig sur le port 8081 pour nginx est livré avec une configuration Mailman, donc vous pouvez utiliser http://server1.example.com:8081/cgi-bin/mailman/admin/
Si vous souhaitez utiliser Mailman depuis vos sites web, c’est un peu plus compliqué que pour Apache car nginx n’a pas d’alias globaux (c’est-à-dire des alias qui peuvent être définis pour tous les vhosts). Par conséquent, vous devez définir ces alias pour chaque vhost à partir duquel vous souhaitez accéder à Mailman.
Pour ce faire, collez ce qui suit dans le champ Directives nginx de l’onglet Options du site web dans ISPConfig :
location /cgi-bin/mailman {
root /usr/lib/;
fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
location /images/mailman {
alias /usr/share/images/mailman;
}
location /pipermail {
alias /var/lib/mailman/archives/public;
autoindex on;
}Cela définit l’alias /cgi-bin/mailman/ pour votre vhost, ce qui signifie que vous pouvez accéder à l’interface d’administration de Mailman pour une liste à http://
Sous http://
13 Installer PureFTPd et Quota
PureFTPd et quota peuvent être installés avec la commande suivante :
apt-get 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 définissez 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/TLSPour 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.pemNom du pays (code à 2 lettres) [AU] : <– Entrez votre nom de 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é (par exemple, ville) [] : <– Entrez votre ville.
Nom de l’organisation (par exemple, entreprise) [Internet Widgits Pty Ltd] : <– Entrez le nom de votre organisation (par exemple, le nom de votre entreprise).
Nom de l’unité organisationnelle (par exemple, section) [] : <– Entrez le nom de votre unité organisationnelle (par exemple, “Département IT”).
Nom commun (par exemple, VOTRE nom) [] : <– Entrez le nom de domaine entièrement qualifié du système (par exemple, “server1.example.com”).
Adresse e-mail [] : <– Entrez votre adresse e-mail.
Changez les permissions du certificat SSL :
chmod 600 /etc/ssl/private/pure-ftpd.pemPuis 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
# périphérique ; cela peut être utilisé avec UUID= comme un moyen plus robuste de nommer des périphériques
# qui fonctionne même si des disques sont ajoutés et supprimés. Voir fstab(5).
#
#
# / était sur /dev/sda1 pendant l'installation
UUID=3dc3b58d-97e5-497b-8254-a913fdfc5408 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap était sur /dev/sda5 pendant l'installation
UUID=36bf486e-8f76-492d-89af-5a8eb3ce8a02 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 Pour activer le quota, exécutez ces commandes :
mount -o remount /quotacheck -avugm
quotaon -avug14 Installer le Serveur DNS BIND
BIND peut être installé comme suit :
apt-get install bind9 dnsutilsSi votre serveur est une machine virtuelle, il est fortement recommandé d’installer le démon haveged pour obtenir une plus grande entropie pour la signature DNSSEC. Vous pouvez installer haveged sur des serveurs non virtuels également, cela ne devrait pas faire de mal.
apt-get install haveged
systemctl enable haveged
service haveged startUne explication sur ce sujet peut être trouvée ici.
15 Installer Webalizer et AWstats
Webalizer et AWstats peuvent être installés comme suit :
apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perlOuvrez 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.sh16 Installer Jailkit
Jailkit n’est nécessaire que si vous souhaitez chrooter 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 install build-essential autoconf automake libtool flex bison debhelper binutilscd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit-2.19
./debian/rules binaryVous pouvez maintenant installer le paquet Jailkit.deb comme suit :
cd ..
dpkg -i jailkit_2.19-1_*.deb
rm -rf jailkit-2.19*17 Installer Fail2ban et le Pare-feu UFW
C’est optionnel mais recommandé, car le moniteur ISPConfig essaie de montrer le journal :
apt-get install fail2banPour 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 = 3Ensuite, 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 = Ensuite, pour ajouter la ligne ignoreregex dans le fichier de filtre postfix-sasl, exécutez :
echo "ignoreregex =" >> /etc/fail2ban/filter.d/postfix-sasl.confRedémarrez fail2ban ensuite :
service fail2ban restartPour installer le pare-feu UFW, exécutez cette commande apt :
apt-get install ufwRecevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.