Installation serveur · 13 min read · Sep 30, 2025
Installation d'un cluster Web, Email et MySQL sur Debian 6.0 avec ISPConfig 3 - Page 2
Les étapes suivantes doivent être exécutées sur le serveur 1 et le serveur 2.
Pour installer amavisd-new, SpamAssassin et ClamAV, nous exécutons :
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perlLa configuration d’ISPConfig 3 utilise amavisd qui charge la bibliothèque de filtres SpamAssassin en interne, donc nous pouvons arrêter SpamAssassin pour libérer de la RAM :
/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove
Ensuite, Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear et mcrypt peuvent être installés comme suit :
apt-get -y install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-curl php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby php5-xcache libapache2-mod-perl2 sudo zip wgetVous verrez la question suivante :
Serveur Web à reconfigurer automatiquement : <– apache2
Configurer la base de données pour phpmyadmin avec dbconfig-common ? <– Non
Ensuite, exécutez la commande suivante pour activer les modules Apache suexec, rewrite, ssl, actions et include :
a2enmod suexec rewrite ssl actions include ruby dav_fs dav auth_digestPureFTPd 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…
vi /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
[...]Éditez le fichier /etc/inetd.conf pour empêcher inetd d’essayer de démarrer ftp :
vi /etc/inetd.confS’il y a une ligne commençant par ftp stream tcp, commentez-la (s’il n’y a pas de tel fichier, c’est bien, et vous n’avez pas à modifier /etc/inetd.conf) :
[...]
#:STANDARD: Ce sont des services standard.
#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper
[...]Si vous avez dû modifier /etc/inetd.conf, redémarrez inetd maintenant :
/etc/init.d/openbsd-inetd restartMaintenant, 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 crypté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, “FR”).
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 :
/etc/init.d/pure-ftpd-mysql restartÉditez /etc/fstab. Le mien ressemble à ceci (j’ai ajouté, usrjquota=aquota.user, grpjquota=aquota.group, jqfmt=vfsv0 à la partition avec le point de montage /) :
vi /etc/fstab# /etc/fstab: informations sur le système de fichiers statique.
#
# Utilisez 'blkid' pour imprimer l'identifiant universellement 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 retirés. Voir fstab(5).
#
#
proc /proc proc defaults 0 0
# / était sur /dev/sda1 pendant l'installation
UUID=92bceda2-5ae4-4e3a-8748-b14da48fb297 / ext3 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1
# swap était sur /dev/sda5 pendant l'installation
UUID=e24b3e9e-095c-4b49-af27-6363a4b7d094 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 Pour activer le quota, exécutez ces commandes :
mount -o remount /quotacheck -avugm
quotaon -avug
Installez le serveur DNS BIND :
apt-get -y install bind9 dnsutilsInstallez vlogger, webalizer et awstats :
apt-get -y install vlogger webalizer awstats geoip-databaseOuvrez ensuite /etc/cron.d/awstats…
vi /etc/cron.d/awstats… et commentez les deux tâches cron dans ce fichier :
#*/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 Installez Jailkit : Jailkit est nécessaire uniquement 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 -y install build-essential autoconf automake1.9 libtool flex bisoncd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
tar xvfz jailkit-2.14.tar.gz
cd jailkit-2.14
./configure
make
make install
cd ..
rm -rf jailkit-2.14*
Installez fail2ban : 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 :
vi /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
Ensuite, créez les deux fichiers de filtre suivants :
vi /etc/fail2ban/filter.d/pureftpd.conf[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex = vi /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 = Redémarrez fail2ban ensuite :
/etc/init.d/fail2ban restartPour installer le client webmail SquirrelMail, exécutez :
apt-get install squirrelmailEnsuite, créez le lien symbolique suivant…
ln -s /usr/share/squirrelmail/ /var/www/webmail… et configurez SquirrelMail :
squirrelmail-configureNous devons dire à SquirrelMail que nous utilisons Dovecot-IMAP/-POP3 :
Configuration de SquirrelMail : Lire : config.php (1.4.0)
Menu Principal –
- Préférences de l’organisation
- Paramètres du serveur
- Valeurs par défaut des dossiers
- Options générales
- Thèmes
- Carnets d’adresses
- Message du jour (MOTD)
- Plugins
- Base de données
- Langues
D. Définir des paramètres prédéfinis pour des serveurs IMAP spécifiques
C Activer la couleur
S Sauvegarder les données
Q Quitter
Commande >> <– D
Configuration de SquirrelMail : Lire : config.php
Alors que nous construisions SquirrelMail, nous avons découvert quelques
préférences qui fonctionnent mieux avec certains serveurs qui ne fonctionnent pas si
bien avec d’autres. Si vous sélectionnez votre serveur IMAP, cette
option définira certains paramètres prédéfinis pour ce serveur.
Veuillez noter que vous devrez toujours passer en revue et vous assurer que
tout est correct. Cela ne change pas tout. Il n’y a que quelques
paramètres que cela changera.
Veuillez sélectionner votre serveur IMAP :
bincimap = Serveur IMAP Binc
courier = Serveur IMAP Courier
cyrus = Serveur IMAP Cyrus
dovecot = Serveur IMAP sécurisé Dovecot
exchange = Serveur IMAP Microsoft Exchange
hmailserver = hMailServer
macosx = Serveur de messagerie Mac OS X
mercury32 = Mercury/32
uw = Serveur IMAP de l’Université de Washington
gmail = Accès IMAP aux comptes de messagerie Google (Gmail)
quitter = Ne rien changer
Commande >> <– dovecot
Configuration de SquirrelMail : Lire : config.php
Alors que nous construisions SquirrelMail, nous avons découvert quelques
préférences qui fonctionnent mieux avec certains serveurs qui ne fonctionnent pas si
bien avec d’autres. Si vous sélectionnez votre serveur IMAP, cette
option définira certains paramètres prédéfinis pour ce serveur.
Veuillez noter que vous devrez toujours passer en revue et vous assurer que
tout est correct. Cela ne change pas tout. Il n’y a que quelques
paramètres que cela changera.
Veuillez sélectionner votre serveur IMAP :
bincimap = Serveur IMAP Binc
courier = Serveur IMAP Courier
cyrus = Serveur IMAP Cyrus
dovecot = Serveur IMAP sécurisé Dovecot
exchange = Serveur IMAP Microsoft Exchange
hmailserver = hMailServer
macosx = Serveur de messagerie Mac OS X
mercury32 = Mercury/32
uw = Serveur IMAP de l’Université de Washington
gmail = Accès IMAP aux comptes de messagerie Google (Gmail)
quitter = Ne rien changer
Commande >> dovecot
imap_server_type = dovecot
default_folder_prefix =
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = detect
delete_folder = false
Appuyez sur Entrée pour continuer… <– appuyez sur ENTRÉE
Configuration de SquirrelMail : Lire : config.php (1.4.0)
Menu Principal –
- Préférences de l’organisation
- Paramètres du serveur
- Valeurs par défaut des dossiers
- Options générales
- Thèmes
- Carnets d’adresses
- Message du jour (MOTD)
- Plugins
- Base de données
- Langues
D. Définir des paramètres prédéfinis pour des serveurs IMAP spécifiques
C Activer la couleur
S Sauvegarder les données
Q Quitter
Commande >> <– S
Configuration de SquirrelMail : Lire : config.php (1.4.0)
Menu Principal –
- Préférences de l’organisation
- Paramètres du serveur
- Valeurs par défaut des dossiers
- Options générales
- Thèmes
- Carnets d’adresses
- Message du jour (MOTD)
- Plugins
- Base de données
- Langues
D. Définir des paramètres prédéfinis pour des serveurs IMAP spécifiques
C Activer la couleur
S Sauvegarder les données
Q Quitter
Commande >> <– Q
Ensuite, nous activons un alias global /webmail pour Squirrelmail :
cd /etc/apache2/conf.d/
ln -s ../../squirrelmail/apache.conf squirrelmail.conf
/etc/init.d/apache2 reload
Maintenant, ouvrez /etc/apache2/conf.d/squirrelmail.conf…
vi /etc/apache2/conf.d/squirrelmail.conf… et ajoutez les lignes suivantes au conteneur
[...]
Alias /webmail /usr/share/squirrelmail
Options FollowSymLinks
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/squirrelmail/tmp
php_admin_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail:/var/lib/squirrelmail:/etc/hostname:/etc/mailname
php_flag register_globals off
DirectoryIndex index.php
# l'accès à configtest est limité par défaut pour éviter les fuites d'informations
order deny,allow
deny from all
allow from 127.0.0.1
[...]Créez le répertoire /var/lib/squirrelmail/tmp…
mkdir /var/lib/squirrelmail/tmp… et faites-le appartenir à l’utilisateur www-data :
chown www-data /var/lib/squirrelmail/tmpRechargez Apache à nouveau :
/etc/init.d/apache2 reloadC’est déjà tout - /etc/apache2/conf.d/squirrelmail.conf définit un alias appelé /squirrelmail qui pointe vers le répertoire d’installation de SquirrelMail /usr/share/squirrelmail.
Vous pouvez maintenant accéder à SquirrelMail depuis votre site Web comme suit :
http://www.example.com/squirrelmailVous pouvez également y accéder depuis le panneau de contrôle ISPConfig vhost comme suit (cela ne nécessite aucune configuration dans ISPConfig) :
http://server1.example.com:8080/squirrelmailEnsuite, nous installons Unison. Unison est utilisé pour synchroniser les répertoires /var/www et /var/vmail entre le maître et l’esclave
apt-get install unisonMaintenant, nous installons un fichier de configuration unison sur le premier serveur.
Sur le serveur 1 :
Créez un nouveau fichier /root/.unison/default.prf sur server1…
mkdir /root/.unison
vi /root/.unison/default.prf
… et ajoutez le contenu suivant :
# Racines de la synchronisation
root = /var
root = ssh://192.168.0.106//var/
# Chemins à synchroniser
path = www
path = vmail
# Quelques regexps spécifiant les noms et chemins à ignorer
#ignore = Path stats ## ignore /var/www/stats
#ignore = Path stats/* ## ignore /var/www/stats/*
#ignore = Path */stats ## ignore /var/www/somedir/stats, mais pas /var/www/a/b/c/stats
#ignore = Name *stats ## ignore tous les fichiers/répertoires se terminant par "stats"
#ignore = Name stats* ## ignore tous les fichiers/répertoires commençant par "stats"
#ignore = Name *.tmp ## ignore tous les fichiers avec l'extension .tmp
# Lorsqu'il est défini sur true, ce drapeau fait en sorte que l'interface utilisateur saute
# les confirmations sur les changements non conflictuels. (Plus
# précisément, lorsque l'interface utilisateur a terminé de définir la
# direction de propagation pour une entrée et est sur le point de passer à la
# suivante, elle sautera toutes les entrées non conflictuelles et ira
# directement à la prochaine conflit.)
auto=true
# Lorsque cela est défini sur true, l'interface utilisateur ne posera aucune
# question. Les changements non conflictuels seront propagés ;
# les conflits seront ignorés.
batch=true
# !Lorsque cela est défini sur true, Unison demandera une confirmation supplémentaire
# s'il semble que l'ensemble de la réplique a été
# supprimé, avant de propager le changement. Si le drapeau batch est
# également défini, la synchronisation sera annulée. Lorsque la préférence
# de chemin est utilisée, la même confirmation sera demandée pour
# les chemins de premier niveau. (Pour le moment, ce drapeau n'affecte que
# l'interface utilisateur texte.) Voir aussi la préférence mountpoint.
confirmbigdel=true
# Lorsque cette préférence est définie sur true, Unison utilisera le
# temps de modification et la longueur d'un fichier comme un `pseudo inode
# number' lors de la recherche de mises à jour dans les répliques, au lieu de lire
# le contenu complet de chaque fichier. Sous Windows, cela peut amener
# Unison à manquer de propager une mise à jour si le temps de modification
# et la longueur du fichier sont tous deux inchangés par la mise à jour.
# Cependant, Unison ne remplacera jamais une telle mise à jour par un
# changement de l'autre réplique, car il effectue toujours une vérification
# sécurisée des mises à jour juste avant de propager un changement. Ainsi, il est
# raisonnable d'utiliser ce commutateur sous Windows la plupart du temps
# et de faire occasionnellement fonctionner Unison une fois avec fastcheck défini sur false,
# si vous craignez qu'Unison ait négligé une mise à jour.
# La valeur par défaut de la préférence est auto, ce qui fait
# qu'Unison utilise une vérification rapide sur les répliques Unix (où c'est sûr)
# et une vérification lente sur les répliques Windows. Pour la compatibilité
# ascendante, yes, no et default peuvent être utilisés à la place de
# true, false et auto. Voir la section "Vérification rapide" pour plus
# d'informations.
fastcheck=true
# Lorsque ce drapeau est défini sur true, les attributs de groupe des
# fichiers sont synchronisés. Que les noms de groupe ou les identifiants de groupe
# soient synchronisés dépend de la préférence numerids.
group=true
# Lorsque ce drapeau est défini sur true, les attributs de propriétaire des
# fichiers sont synchronisés. Que les noms de propriétaire ou les identifiants de propriétaire
# soient synchronisés dépend de la préférence extttnumerids.
owner=true
# Inclure la préférence -prefer root fait en sorte qu'Unison résolve toujours
# les conflits en faveur de root, plutôt que de demander
# des conseils à l'utilisateur. (La syntaxe de root est la même que pour
# la préférence root, plus les valeurs spéciales newer et older.)
# Cette préférence est remplacée par la préférence preferpartial.
# Cette préférence ne doit être utilisée que si vous êtes sûr de savoir
# ce que vous faites !
prefer=newer
# Lorsque cette préférence est définie sur true, l'interface utilisateur
# textuelle n'imprimera rien du tout, sauf en cas d'erreurs.
# Définir silent sur true définit automatiquement la préférence batch
# sur true.
silent=true
# Lorsque ce drapeau est défini sur true, les temps de modification des fichiers
# (mais pas les modtimes des répertoires) sont propagés.
times=trueNous voulons automatiser la synchronisation, c’est pourquoi nous créons un travail cron pour cela sur server1.example.tld :
crontab -e*/5 * * * * /usr/bin/unison &> /dev/nullRecevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.