Serveur Ubuntu · 10 min read · Jan 20, 2026
Le Serveur Parfait - Ubuntu 15.10 (Wily Werewolf) avec Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot et ISPConfig 3 - Page 2
8. Installer Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear et mcrypt
Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear et mcrypt peuvent être installés comme suit :
apt-get install apache2 apache2-doc apache2-utils libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libruby libapache2-mod-python php5-curl php5-intl php5-memcache php5-memcached php5-ming php5-ps php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcachedVous 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'utilisateur administratif de la base de données : <-- Entrez le mot de passe root MySQL ici et confirmez en le saisissant à nouveau à l'écran suivant
Mot de passe de l'application MySQL pour phpmyadmin : <-- Appuyez sur entrerEnsuite, 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 cgia2enmod dav_fs dav auth_digestEt activez le module mcrypt dans PHP :
php5enmod mcryptRedémarrez Apache ensuite :
service apache2 restartSi 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 dès la sortie de la boîte.)
Redémarrez Apache ensuite :
service apache2 restart8.1 Cache Opcode APCu PHP
APCu est un cache d’opcode PHP gratuit pour mettre en cache et optimiser le code intermédiaire PHP. Il est fortement recommandé d’en avoir un installé pour accélérer votre page PHP.
APCu peut être installé comme suit :
apt-get install php5-apcuMaintenant, redémarrez Apache :
service apache2 restart8.2 PHP-FPM
Pour utiliser PHP-FPM avec Apache, nous avons besoin du module mod_fastcgi d’Apache (veuillez ne pas le confondre avec mod_fcgid - ils sont très similaires, mais vous ne pouvez pas utiliser PHP-FPM avec mod_fcgid). Nous pouvons installer PHP-FPM et mod_fastcgi comme suit :
apt-get install libapache2-mod-fastcgi php5-fpmAssurez-vous d’activer le module et de redémarrer Apache :
a2enmod actions fastcgi alias
service apache2 restart8.3 Versions PHP supplémentaires
À partir de 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 FastCGI et PHP-FPM. Pour apprendre à construire des versions PHP supplémentaires (PHP-FPM et FastCGI) et comment configurer ISPConfig, veuillez consulter ce tutoriel : Comment utiliser plusieurs versions de PHP (PHP-FPM & FastCGI) avec ISPConfig 3 (Ubuntu 12.10) (fonctionne également pour Ubuntu 15.10).
8.4 Installer SuPHP (optionnel, non recommandé)
SuPHP n’est plus disponible pour Debian Jessie. Le mode suphp ne devrait plus être utilisé dans ISPConfig car il existe de meilleurs modes PHP comme php-fpm et php-fcgi disponibles. Si vous avez vraiment besoin de suphp pour des raisons de compatibilité, suivez les étapes de ce chapitre pour le compiler manuellement :
apt-get install apache2-dev build-essential autoconf automake libtool flex bison debhelper binutilscd /usr/local/src
wget http://suphp.org/download/suphp-0.7.2.tar.gz
tar zxvf suphp-0.7.2.tar.gz
wget -O suphp.patch https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch
patch -Np1 -d suphp-0.7.2 < suphp.patch
cd suphp-0.7.2
autoreconf -if
./configure --prefix=/usr/ --sysconfdir=/etc/suphp/ --with-apr=/usr/bin/apr-1-config --with-apache-user=www-data --with-setid-mode=owner --with-logfile=/var/log/suphp/suphp.log
make
make install Créez le répertoire de configuration suphp et le fichier suphp.conf :
mkdir /var/log/suphp
mkdir /etc/suphp
nano /etc/suphp/suphp.conf[global]
;Chemin vers le fichier journal
logfile=/var/log/suphp/suphp.log
;Niveau de journalisation
loglevel=info
;Utilisateur sous lequel Apache s'exécute
webserver_user=www-data
;Chemin où tous les scripts doivent se trouver
docroot=/var/www
;Chemin vers chroot() avant d'exécuter le script
;chroot=/mychroot
; Options de sécurité
allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false
;Vérifiez si le script est dans DOCUMENT_ROOT
check_vhost_docroot=true
;Envoyer des messages d'erreur mineurs au navigateur
errors_to_browser=false
;Variable d'environnement PATH
env_path=/bin:/usr/bin
;Umask à définir, spécifiez en notation octale
umask=0022
; UID minimum
min_uid=100
; GID minimum
min_gid=100
[handlers]
;Gestionnaire pour les scripts php
x-httpd-suphp="php:/usr/bin/php-cgi"
;Gestionnaire pour les scripts CGI
x-suphp-cgi=execute:!self
umask=0022Ensuite, nous allons ajouter un fichier de configuration pour charger le module suphp dans apache :
echo "LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so" > /etc/apache2/mods-available/suphp.loadEt ensuite ouvrez /etc/apache2/mods-available/suphp.conf…
nano /etc/apache2/mods-available/suphp.conf… et ajoutez le contenu suivant :
AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
suPHP_AddHandler application/x-httpd-suphp
suPHP_Engine on
# Par défaut, désactiver suPHP pour les applications Web packagées debian car les fichiers
# sont possédés par root et ne peuvent pas être exécutés par suPHP à cause de min_uid.
suPHP_Engine off
# # Utilisez un fichier de configuration php spécifique (un répertoire contenant un fichier php.ini)
# suPHP_ConfigPath /etc/php5/cgi/suphp/
# # Indique à mod_suphp de NE PAS gérer les requêtes avec le type .
# suPHP_RemoveHandler
Activez le module suphp dans apache :
a2enmod suphpRedémarrez Apache ensuite :
service apache2 restart9. Installer Mailman
Depuis la version 3.0.4, ISPConfig vous permet également 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 à prendre en charge : <– 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’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 /etc/aliases (ou
fichier é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 /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
newaliasesensuite et redémarrez Postfix :
service postfix restartEnfin, nous devons activer la configuration Apache de Mailman :
ln -s /etc/mailman/apache.conf /etc/apache2/conf-available/mailman.confCela 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://
Sous http://
Redémarrez Apache ensuite :
service apache2 restartPuis démarrez le démon Mailman :
service mailman start10. 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 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é (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 sur le système de fichiers statique.
#
# 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 supprimés. Voir fstab(5).
#
#
/dev/mapper/server1--vg-root / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# /boot était sur /dev/sda1 pendant l'installation
UUID=9b8299f1-b2a2-4231-9ba1-4540fad76b0f /boot ext2 defaults 0 2
/dev/mapper/server1--vg-swap_1 none swap sw 0 0 Pour activer le quota, exécutez ces commandes :
mount -o remount /quotacheck -avugm
quotaon -avugCe qui affichera la sortie suivante :
root@server1:/# quotacheck -avugm
quotacheck: Scanning /dev/dm-0 [/] 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 11518 directories and 83893 files
quotacheck: Old file not found.
quotacheck: Old file not found.
root@server1:/# quotaon -avug
/dev/dm-0 [/]: group quotas turned on
/dev/dm-0 [/]: user quotas turned on11. Installer le Serveur DNS BIND
BIND peut être installé comme suit :
apt-get install bind9 dnsutils12. 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-perlOuvrez /etc/cron.d/awstats ensuite…
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.sh13. 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 install build-essential autoconf automake1.11 libtool flex bison debhelper binutilscd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.17.tar.gz
tar xvfz jailkit-2.17.tar.gz
cd jailkit-2.17
./debian/rules binaryVous pouvez maintenant installer le package Jailkit.deb comme suit :
cd ..
dpkg -i jailkit_2.17-1_*.deb
rm -rf jailkit-2.17*14. Installer fail2ban
Ceci est optionnel mais recommandé, car le moniteur ISPConfig essaie d’afficher 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 = Ajoutez la ligne ignoreregex manquante dans le fichier postfix-sasl :
echo "ignoreregex =" >> /etc/fail2ban/filter.d/postfix-sasl.confRedémarrez fail2ban ensuite :
service fail2ban restartRecevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.