GNU/Linux >> Tutoriels Linux >  >> Panels >> Panels

Installation d'un cluster de bases de données Web, de messagerie et MySQL sur Debian 6.0 avec ISPConfig 3

Installation d'un cluster de bases de données Web, de messagerie et MySQL sur Debian 6.0 avec ISPConfig 3

Ce tutoriel décrit l'installation d'un serveur Web, de messagerie, de base de données et DNS en cluster à utiliser pour la redondance, la haute disponibilité et l'équilibrage de charge sur Debian 6 avec le panneau de configuration ISPConfig 3. La réplication MySQL Master/Master sera utilisée pour répliquer les bases de données client MySQL entre les serveurs et Unison sera utilisé pour synchroniser les dossiers /var/www (sites Web) et /var/vmail (données de compte de messagerie).

1 Configuration des deux systèmes de base

Dans cette configuration, il y aura un serveur maître (qui exécute l'interface du panneau de configuration ISPConfig) et un serveur esclave qui reflète les services Web (apache), de messagerie (postfix et dovecot) et de base de données (MySQL) du serveur maître.

Pour installer la configuration en cluster, nous avons besoin de deux serveurs avec une installation minimale de Debian 6.0. La configuration de base est décrite dans le didacticiel suivant aux étapes 1 à 8 :

https://www.howtoforge.com/perfect-server-debian-squeeze-with-bind-and-dovecot-ispconfig-3

Installez uniquement les étapes 1 à 8 du didacticiel du serveur parfait et non les autres étapes car elles diffèrent pour une configuration en cluster !

Dans mon exemple, j'utilise les noms d'hôtes et adresses IP suivants pour les deux serveurs :

Serveur maître

Nom d'hôte :server1.example.tld
Adresse IP :192.168.0.105

Serveur esclave

Nom d'hôte :server2.example.tld
Adresse IP :192.168.0.106

Quel que soit l'endroit où ces noms d'hôte ou adresses IP apparaissent dans les prochaines étapes d'installation, vous devrez les modifier pour qu'ils correspondent aux adresses IP et aux noms d'hôte de vos serveurs.

2 Installation des deux serveurs

Les étapes suivantes doivent être exécutées sur le maître et sur le serveur esclave. Si une étape spécifique concerne uniquement le maître ou l'esclave, j'ai ajouté une note dans la description en rouge.

vi /etc/hosts
127.0.0.1       localhost
192.168.0.105   server1.example.tld
192.168.0.106   server2.example.tld

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Définissez le nom d'hôte du serveur :

echo server1.example.tld> /etc/hostname
/etc/init.d/hostname.sh start

Utilisez server1.example.tld sur le premier serveur et server2.example.tld sur le second serveur.

Editez le fichier sources.list...

vi /etc/apt/sources.list 

... et assurez-vous que votre /etc/apt/sources.list contient le référentiel squeeze-updates (cela garantit que vous obtenez toujours les dernières mises à jour pour le scanner de virus ClamAV - ce projet publie très souvent des versions, et parfois les anciennes versions cessent de fonctionner ).

[...]
deb http://ftp.de.debian.org/debian/ squeeze-updates main
[...]

Exécuter

apt-get update
apt-get upgrade

pour installer les dernières mises à jour (s'il y en a).

C'est une bonne idée de synchroniser l'horloge système avec un NTP (n réseau t temps p rotocol) sur Internet. Exécutez simplement

apt-get -y install ntp ntpdate

et l'heure de votre système sera toujours synchronisée.

Sur le serveur 1 :

Nous créons maintenant une paire de clés privée/publique sur server1.example.tld :

ssh-keygen -t dsa

[email protected] :~# ssh-keygen -t dsa
Génération de la paire de clés dsa publique/privée.
Entrez le fichier dans lequel enregistrer la clé (/root/.ssh/id_dsa) :<- - ENTER
Répertoire '/root/.ssh' créé.
Entrez la phrase de passe (vide s'il n'y a pas de phrase de passe) :<-- ENTER
Entrez à nouveau la même phrase de passe :<-- ENTER
Votre identification a été enregistrée dans /root/.ssh/id_dsa.
Votre clé publique a été enregistrée dans /root/.ssh/id_dsa.pub.
L'empreinte digitale de la clé est :
1b :95:bc:4a:f4:9f:d8:ea:24:31:0f:c9:72:d5:a7:80 [email protected]
L'image randomart de la clé est :
+- -[ DSA 1024]----+
| |
| o o |
| E*. . |
| o =o o |
| . Alors . |
| + O + . |
| + + + |
| o. |
| .o |
+-----------------+
[email protected] :~#

Il est important que vous ne saisissiez pas de phrase de passe, sinon la mise en miroir ne fonctionnera pas sans interaction humaine, alors appuyez simplement sur ENTRÉE !

Ensuite, nous copions notre clé publique dans server2.example.tld :

ssh-copy-id -i $HOME/.ssh/id_dsa.pub [email protected]

[email protected]:~# ssh-copy-id -i $HOME/.ssh/id_dsa.pub [email protected]
L'authenticité de l'hôte '192.168.0.101 (192.168.0.101)' ne peut pas être établie.
L'empreinte digitale de la clé RSA est 25:d8:7a:ee:c2:4b:1d:92:a7:3d:16:26:95:56:62:4e.
Êtes-vous sûr vous souhaitez continuer à vous connecter (oui/non) ? <-- oui (vous ne verrez ceci que si c'est la première fois que vous vous connectez au serveur2)
Attention :Ajout permanent de '192.168.0.101' (RSA) à la liste des hôtes connus.
exemple@ Mot de passe d'unixlinux.online :<-- mot de passe racine du serveur2
Maintenant, essayez de vous connecter à la machine, avec "ssh '[email protected]'", et enregistrez :

 .ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

Vérifiez maintenant sur le serveur2 si la clé publique du serveur1 a bien été transférée :

serveur2 :

cat $HOME/.ssh/authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBAPhiAexgEBexnw0rFG8lXwAuIsca/V+lhmv5lhF3BqUfAbL7e2sWlQlGhxZ8I2UnzZK8Ypffq6Ks+lp46yOs7MMXLqb7JBP9gkgqxyEWqOoUSt5hTE9ghupcCvE7rRMhefY5shLUnRkVH6hnCWe6yXSnH+Z8lHbcfp864GHkLDK1AAAAFQDddQckbfRG4C6LOQXTzRBpIiXzoQAAAIEAleevPHwi+a3fTDM2+Vm6EVqR5DkSLwDM7KVVNtFSkAY4GVCfhLFREsfuMkcBD9Bv2DrKF2Ay3OOh39269Z1rgYVk+/MFC6sYgB6apirMlHj3l4RR1g09LaM1OpRz7pc/GqIGsDt74D1ES2j0zrq5kslnX8wEWSHapPR0tziin6UAAACBAJHxgr+GKxAdWpxV5MkF+FTaKcxA2tWHJegjGFrYGU8BpzZ4VDFMiObuzBjZ+LrUs57BiwTGB/MQl9FKQEyEV4J+AgZCBxvg6n57YlVn6OEA0ukeJa29aFOcc0inEFfNhw2jAXt5LRyvuHD/C2gG78lwb6CxV02Z3sbTBdc43J6y [email protected]

Installez postfix, dovecot et mysql avec une seule commande :

apt-get -y install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d sudo

Entrez le nouveau mot de passe pour l'utilisateur racine MySQL lorsque demandé par le programme d'installation. Vous devez choisir le même mot de passe pour les deux serveurs. Répondez ensuite aux questions suivantes comme décrit ci-dessous :

Type de configuration général ? <-- Site Internet
Nom de messagerie ? <-- server1.mydomain.tld
Certificat SSL requis <-- Ok

Utilisez server1.example.tld sur le premier serveur et server2.example.tld sur le second serveur.

Nous voulons que MySQL écoute sur toutes les interfaces, pas seulement sur localhost, donc nous éditons /etc/mysql/my.cnf et commentons la ligne bind-address =127.0.0.1 :

vi /etc/mysql/my.cnf
[...]  

# Instead of skip-networking the default is now to listen only on  
# localhost which is more compatible and is not less secure.  
#bind-address           = 127.0.0.1  

[...]

Puis redémarrez MySQL :

/etc/init.d/mysql restart

Nous préparons maintenant les serveurs MySQL pour la réplication mysql master/master.

Sur le serveur 1 :

Connectez-vous à MySQL sur le shell avec...

 mysql -u root -p

... et entrez le mot de passe root MySQL que vous avez choisi lors de l'installation de mysql. Exécutez ensuite cette commande sur le shell MySQL :

ACCORDER L'ESCLAVE DE RÉPLICATION SUR *.* À 'slaveuser'@'%' IDENTIFIÉ PAR 'slave_user_password' ;
FLUSH PRIVILEGES ;
quitter ;

Remplacez 'slave_user_password' avec un mot de passe sécurisé que vous souhaitez utiliser pour que l'esclave se connecte au serveur maître. Remplacez cet espace réservé dans les étapes suivantes par le mot de passe que vous avez choisi partout où l'espace réservé apparaît.

Configurons maintenant nos 2 nœuds MySQL :

Sur le serveur 1 :

vi /etc/mysql/my.cnf

Recherchez la section qui commence par [mysqld] et placez-y les options suivantes (en commentant tous les éléments en conflit existants option):

[...]
[mysqld]
server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
 
master-host = 192.168.0.106
master-user = slaveuser
master-password = slave_user_password
master-connect-retry = 60   
 
expire_logs_days        = 10
max_binlog_size         = 500M
log_bin                        = /var/log/mysql/mysql-bin.log  
[...]

Puis arrêtez MySQL :

/etc/init.d/mysql stop

Maintenant, faites à peu près la même chose sur le serveur2...

Sur le serveur 2 :

vi /etc/mysql/my.cnf

Recherchez la section qui commence par [mysqld] et placez-y les options suivantes (en commentant tous les éléments en conflit existants option):

[...]
[mysqld]
server-id = 2
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 2
   
master-host = 192.168.0.105
master-user = slaveuser
master-password = slave_user_password
master-connect-retry = 60
 
expire_logs_days        = 10
max_binlog_size         = 500M
log_bin                        = /var/log/mysql/mysql-bin.log  
[...]

Puis arrêtez MySQL :

/etc/init.d/mysql stop

Maintenant, nous devons synchroniser les deux serveurs mysql. Pour ce faire, nous copions le répertoire de données mysql du maître vers l'esclave ainsi que le fichier de configuration debian qui contient l'utilisateur debian-sys-maint. Cela peut être fait car nous avons déjà arrêté mysql sur les deux serveurs.

Sur le serveur 1 :

scp -pr /var/lib/mysql/* [email protected]:/var/lib/mysql/
scp -pr /etc/mysql/debian.cnf [email protected]:/etc/mysql/ debian.cnf

Maintenant, nous redémarrons MySQL sur le serveur maître :

/etc/init.d/mysql start

Connectez-vous au shell MySQL en tant qu'utilisateur root...

mysql -u root -p

... et exécutez cette commande dans le shell MySQL...

 SHOW MASTER STATUS; 

... pour obtenir le statut de maître MySQL :

mysql> AFFICHER L'ETAT MAITRE ;
+------------------+----------+--------- -----+------------------+
| Fichier | Poste | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+------------- -+------------------+
| mysql-bin.000002 | 106 | | |
+-------------+----------+---------------------- +------------------+
1 ligne dans le jeu (0.00 sec)

Les informations dont nous avons besoin pour l'étape suivante sont le fichier binlog mysql-bin.000002 et la position binlog 106. Nous avons besoin des mêmes détails pour le serveur2 ci-dessous.

Exécutez maintenant cette commande dans le shell MySQL sur le maître pour le connecter à l'esclave :

STOP SLAVE ;
CHANGE MASTER TO MASTER_HOST='192.168.0.106', MASTER_USER='slaveuser', MASTER_PASSWORD='slave_user_password', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=106 ;
START SLAVE;

Vérifiez ensuite l'état de l'esclave :

SHOW SLAVE STATUS \G

Il est important que Slave_IO_Running et Slave_SQL_Running aient la valeur Oui dans la sortie.

Sur le serveur 2 :

Connectez-vous au shell MySQL en tant qu'utilisateur root...

mysql -u root -p

... et exécutez cette commande dans le shell MySQL :

STOP SLAVE ;
CHANGE MASTER TO MASTER_HOST='192.168.0.105', MASTER_USER='slaveuser', MASTER_PASSWORD='slave_user_password', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=106 ;
START SLAVE;

Vérifiez ensuite l'état de l'esclave :

SHOW SLAVE STATUS \G

Il est important que Slave_IO_Running et Slave_SQL_Running aient la valeur Oui dans la sortie

La configuration de la réplication mysql master/master est maintenant terminée et nous procédons à l'installation des autres packages logiciels.

Installer un cluster de bases de données Web, de messagerie 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-perl

La configuration d'ISPConfig 3 utilise amavisd qui charge la bibliothèque de filtres SpamAssassin en interne, nous pouvons donc arrêter SpamAssassin pour libérer de la RAM :

/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove

Ensuite, installez 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 wget

Vous verrez la question suivante :

Serveur Web à reconfigurer automatiquement :<-- apache2
Configurer la base de données pour phpmyadmin avec dbconfig-common ? <-- Non

Exécutez ensuite 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_digest

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

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

Editez 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 autonome et définissez VIRTUALCHROOT=true :

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

Modifiez le fichier /etc/inetd.conf pour empêcher inetd d'essayer de démarrer ftp :

vi /etc/inetd.conf

S'il y a une ligne commençant par ftp stream tcp, commentez-la (s'il n'y a pas un tel fichier, alors c'est bon, et vous n'avez pas à modifier /etc/inetd.conf) :

[...]
#:STANDARD: These are standard services.
#ftp    stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper
[...]

Si vous deviez modifier /etc/inetd.conf, redémarrez inetd maintenant :

/etc/init.d/openbsd-inetd restart

Nous configurons maintenant PureFTPd pour autoriser les sessions FTP et TLS. FTP est un protocole très peu sûr 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, ce qui rend le 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] :<-- Saisissez le nom de votre pays (par exemple, "DE").
Nom de l'État ou de la province (nom complet) [Some-State] :<-- Saisissez votre état ou Nom de la province.
Nom de la localité (par exemple, ville) [] :<-- Entrez votre ville.
Nom de l'organisation (par exemple, société) [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) [] :<-- Saisissez le nom de votre unité organisationnelle (par exemple, "Service informatique").
Nom commun (par exemple, VOTRE nom) [] :<-- Saisissez le nom de domaine complet du système (par exemple, "serveur1.exemple.com").
Adresse e-mail [] :<-- Saisissez votre adresse e-mail.

Modifiez les autorisations du certificat SSL :

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

Redémarrez ensuite PureFTPd :

/etc/init.d/pure-ftpd-mysql restart

Modifiez /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: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda1 during installation
UUID=92bceda2-5ae4-4e3a-8748-b14da48fb297 /               ext3    errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0       1
# swap was on /dev/sda5 during 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 dnsutils

Installez vlogger, webalizer et awstats :

 apt-get -y install vlogger webalizer awstats geoip-database

Ouvrez 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

# Generate static reports:
 #10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh 

Installez 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 -y install build-essential autoconf automake1.9 libtool flex bison

cd /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*

Installer fail2ban :ceci est facultatif mais recommandé, car le moniteur ISPConfig essaie d'afficher le journal :

apt-get install fail2ban

Pour 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

Créez ensuite les deux fichiers de filtre suivants :

vi /etc/fail2ban/filter.d/pureftpd.conf
[Definition]
failregex = .*pure-ftpd: \(.*@<HOST>\) \[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<host>\S*),.*
ignoreregex =

Redémarrez ensuite fail2ban :

/etc/init.d/fail2ban restart

Pour installer le client de messagerie Web SquirrelMail, exécutez :

apt-get install squirrelmail

Créez ensuite le lien symbolique suivant...

ln -s /usr/share/squirrelmail/ /var/www/webmail

... et configurez SquirrelMail :

squirrelmail-configure

Nous devons dire à SquirrelMail que nous utilisons Dovecot-IMAP/-POP3 :

SquirrelMail Configuration : Lisez : config.php (1.4.0)
--------------------------------------------- ------------------------
Menu principal --
1. Préférences de l'organisation
2. Paramètres du serveur
3. Paramètres par défaut du dossier
4. Options générales
5. Thèmes
6. Carnets d'adresses
7. Message du jour (MOTD)
8. Plugins
9. Base de données
10. Langues

D. Définir des paramètres prédéfinis pour des serveurs IMAP spécifiques

C   Activer la couleur 
S   Enregistrer les données 
Q   Quitter

Commande >> <-- D


Configuration de SquirrelMail : Lire : config.php
--------------------------- ------------------------------
Pendant que nous construisons SquirrelMail, nous avons découvert certaines
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 aurez toujours de viser et vous assurer 
tout est correct. Cela ne change pas tout. Il y a 
seuls quelques paramètres qui vont changer .

Veuillez sélectionner votre serveur IMAP :
    bincimap    = serveur Binc IMAP 
    courier     = serveur Courier IMAP 
Cyrus =Cyrus IMAP Server
DoveCot =DoveCot Secure IMAP Server
Exchange =Microsoft Exchange IMAP Server
HmailServer =HmailServer
MacOSX =Mac OS X MailServer
Mercury32 =Mercury /32
    uw          = Serveur IMAP de l'Université de Washington
    gmail       = Accès IMAP aux comptes Google mail (Gmail) 

    quitter        = Ne modifier rien 
Commande >> <-- dovecot


Configuration SquirrelMail : Lire : config.php
----------------------- ----------------------------------
Pendant que nous construisons SquirrelMail, nous avons découvert quelques 
préférences qui fonctionnent mieux avec certains serveurs qui ne fonctionnent pas aussi 
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 aurez toujours de viser et vous assurer 
tout est correct. Cela ne change pas tout. Il y a 
seuls quelques paramètres qui vont changer .

Veuillez sélectionner votre serveur IMAP :
    bincimap    = serveur Binc IMAP 
    courier     = serveur Courier IMAP 
Cyrus =Cyrus IMAP Server
DoveCot =DoveCot Secure IMAP Server
Exchange =Microsoft Exchange IMAP Server
HmailServer =HmailServer
MacOSX =Mac OS X MailServer
Mercury32 =Mercury /32
    uw          = Serveur IMAP de l'Université de Washington
    gmail       = Accès IMAP aux comptes Google mail (Gmail) 

    quitter        = Ne modifier rien 
Command >> dovecot

imap_server_type =dovecot
default_folder_prefix =
trash_folder =trash
Send_folder =envoyée
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 SquirrelMail :Lire : config.php (1.4.0)
----------------------------------------- ---------------------
Menu principal --
1. Préférences de l'organisation
2. Paramètres du serveur
3. Paramètres par défaut du dossier
4. Options générales
5. Thèmes
6. Carnets d'adresses
7. Message du jour (MOTD)
8. Plugins
9. Base de données
10. Langues

D. Définir des paramètres prédéfinis pour des serveurs IMAP spécifiques

C   Activer la couleur 
S   Enregistrer les données 
Q   Quitter

Commande >> <-- S


Configuration de SquirrelMail : Lire : config.php (1.4.0)
---------------------- -----------------------------------
Menu principal --
1. Préférences de l'organisation
2. Paramètres du serveur
3. Paramètres par défaut du dossier
4. Options générales
5. Thèmes
6. Carnets d'adresses
7. Message du jour (MOTD)
8. Plugins
9. Base de données
10. Langues

D. Définir des paramètres prédéfinis pour des serveurs IMAP spécifiques

C   Activer la couleur 
S   Enregistrer 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 recharge

Ouvrez maintenant /etc/apache2/conf.d/squirrelmail.conf...

vi /etc/apache2/conf.d/squirrelmail.conf

... et ajoutez les lignes suivantes au conteneur qui s'assure que mod_php est utilisé pour accéder à SquirrelMail, quel que soit le mode PHP que vous sélectionnez pour votre site Web dans ISPConfig :

[...]
Alias /webmail /usr/share/squirrelmail
<Directory /usr/share/squirrelmail>
   Options FollowSymLinks
<IfModule mod_php5.c>
   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
</IfModule>
<IfModule mod_dir.c>
   DirectoryIndex index.php
</IfModule>
 
# access to configtest is limited by default to prevent information leak
<Files configtest.php>
   order deny,allow
   deny from all
   allow from 127.0.0.1
</Files>
</Directory>
[...]

Créez le répertoire /var/lib/squirrelmail/tmp...

mkdir /var/lib/squirrelmail/tmp

... et faites en sorte qu'il appartienne à l'utilisateur www-data :

chown www-data /var/lib/squirrelmail/tmp

Recharger Apache :

/etc/init.d/apache2 reload

C'est déjà fait - /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 désormais accéder à SquirrelMail depuis votre site Web comme suit :

http://www.example.com/squirrelmail

Vous pouvez également y accéder à partir du vhost du panneau de configuration ISPConfig comme suit (cela ne nécessite aucune configuration dans ISPConfig) :

http://server1.example.com:8080/squirrelmail

Ensuite, nous installons Unison. Unison est utilisé pour synchroniser les répertoires /var/www et /var/vmail entre maître et esclave

apt-get install unison

Maintenant, 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 le serveur1...

mkdir /root/.unison
vi /root/.unison/default.prf

... et ajoutez le contenu suivant :

# Roots of the synchronization
root = /var
root = ssh://192.168.0.106//var/
 
# Paths to synchronize
path = www
path = vmail
 
# Some regexps specifying names and paths to ignore
#ignore = Path stats    ## ignores /var/www/stats
#ignore = Path stats/*  ## ignores /var/www/stats/*
#ignore = Path */stats  ## ignores /var/www/somedir/stats, but not /var/www/a/b/c/stats
#ignore = Name *stats   ## ignores all files/directories that end with "stats"
#ignore = Name stats*   ## ignores all files/directories that begin with "stats"
#ignore = Name *.tmp    ## ignores all files with the extension .tmp
   
#          When set to true, this flag causes the user interface to skip
#          asking for confirmations on non-conflicting changes. (More
#          precisely, when the user interface is done setting the
#          propagation direction for one entry and is about to move to the
#          next, it will skip over all non-conflicting entries and go
#          directly to the next conflict.)
auto=true
   
#          When this is set to true, the user interface will ask no
#          questions at all. Non-conflicting changes will be propagated;
#          conflicts will be skipped.
batch=true
   
#          !When this is set to true, Unison will request an extra
#          confirmation if it appears that the entire replica has been
#          deleted, before propagating the change. If the batch flag is
#          also set, synchronization will be aborted. When the path
#          preference is used, the same confirmation will be requested for
#          top-level paths. (At the moment, this flag only affects the
#          text user interface.) See also the mountpoint preference.
confirmbigdel=true
   
#          When this preference is set to true, Unison will use the
#          modification time and length of a file as a `pseudo inode
#          number' when scanning replicas for updates, instead of reading
#          the full contents of every file. Under Windows, this may cause
#          Unison to miss propagating an update if the modification time
#          and length of the file are both unchanged by the update.
#          However, Unison will never overwrite such an update with a
#          change from the other replica, since it always does a safe
#          check for updates just before propagating a change. Thus, it is
#          reasonable to use this switch under Windows most of the time
#          and occasionally run Unison once with fastcheck set to false,
#          if you are worried that Unison may have overlooked an update.
#          The default value of the preference is auto, which causes
#          Unison to use fast checking on Unix replicas (where it is safe)
#          and slow checking on Windows replicas. For backward
#          compatibility, yes, no, and default can be used in place of
#          true, false, and auto. See the section "Fast Checking" for more
#          information.
fastcheck=true

#          When this flag is set to true, the group attributes of the
#          files are synchronized. Whether the group names or the group
#          identifiers are synchronizeddepends on the preference numerids.
group=true
   
#          When this flag is set to true, the owner attributes of the
#          files are synchronized. Whether the owner names or the owner
#          identifiers are synchronizeddepends on the preference
#          extttnumerids.
owner=true
   
#          Including the preference -prefer root causes Unison always to
#          resolve conflicts in favor of root, rather than asking for
#          guidance from the user. (The syntax of root is the same as for
#          the root preference, plus the special values newer and older.)
#          This preference is overridden by the preferpartial preference.
#          This preference should be used only if you are sure you know
#          what you are doing!
prefer=newer
   
#          When this preference is set to true, the textual user interface
#          will print nothing at all, except in the case of errors.
#          Setting silent to true automatically sets the batch preference
#          to true.
silent=true
   
#          When this flag is set to true, file modification times (but not
#          directory modtimes) are propagated.
times=true

Nous voulons automatiser la synchronisation, c'est pourquoi nous créons une tâche cron pour celle-ci sur server1.example.tld :

crontab -e
*/5 * * * * /usr/bin/unison &> /dev/null

Installer un cluster de bases de données Web, de messagerie et MySQL sur Debian 6.0 avec ISPConfig 3 - Page 3

3 Installation d'ISPConfig sur le premier serveur (maître)

Dans cette étape, nous allons installer ISPConfig sur le serveur maître. Pour obtenir l'URL de téléchargement de la dernière version stable d'ISPConfig 3, veuillez visiter le site Web d'ISPConfig :http://www.ispconfig.org/ispconfig-3/download/

Nous devons maintenant ajouter deux nouveaux enregistrements d'utilisateur root mysql dans la base de données master pour permettre l'accès root à partir du nom d'hôte et de l'adresse IP du serveur esclave.

Sur le serveur1 :

Connectez-vous à la base de données MySQL en tant qu'utilisateur root...

mysql -u root -p

... et exécutez ces requêtes mysql :

CRÉER UN UTILISATEUR 'root'@'192.168.0.106' IDENTIFIÉ PAR 'myrootpassword';
ACCORDER TOUS LES PRIVILÈGES SUR * . * À 'root'@'192.168.0.106' IDENTIFIÉ PAR 'myrootpassword' AVEC GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

CRÉER UN UTILISATEUR 'root'@'server2.example.tld' IDENTIFIÉ PAR 'myrootpassword';
ACCORDER TOUS LES PRIVILÈGES SUR * . * À 'root'@'server2.example.tld' IDENTIFIÉ PAR 'myrootpassword' AVEC GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
FLUSH PRIVILEGES ;
QUIT ;

Dans les commandes SQL ci-dessus, remplacez 192.168.0.106 par l'adresse IP du deuxième serveur, remplacez server2.example.tld par le nom d'hôte du deuxième serveur et 'myrootpassword' par le mot de passe root souhaité.

Vous devez maintenant être de retour sur le shell sur server1.example.tld et télécharger la dernière version stable d'ISPConfig 3 :

cd /tmp
wgethttp://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/ installer/

Lancez le script d'installation :

php -q install.php

Sélectionner la langue (en,de) [en] :<-- en
Mode d'installation (standard,expert) [standard] :<-- standard
Nom d'hôte complet (FQDN) du serveur, par exemple serveur1 .domain.tld [server1.example.tld] :<-- server1.example.tld
nom d'hôte du serveur MySQL [localhost] :<-- localhost
nom d'utilisateur root MySQL [root] :<-- root
Mot de passe root MySQL [] :<-- Saisissez ici votre mot de passe root mysql
Base de données MySQL à créer [dbispconfig] :<-- dbispconfig1 (le nom de la base de données ispconfig locale du maître et de l'esclave doit être différent, car les deux serveurs partagent le même répertoire de données)
Jeu de caractères MySQL [utf8] :<-- utf8

Country Name (2 letter code) [AU]:<-- DE (Enter the ISO country code where you live here)
State or Province Name (full name) [Some-State]:<-- Niedersachsen (Enter the state where you live here)
Locality Name (eg, city) []:<-- Lueneburg (Enter the city here)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:

Installing ISPConfig
ISPConfig Port [8080]:

Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]:

Generating RSA private key, 4096 bit long modulus
........................++
................++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Clean up the install directories:

rm -rf /tmp/ispconfig3_install
rm -f /tmp/ISPConfig-3-stable.tar.gz

Installing A Web, Email &MySQL Database Cluster On Debian 6.0 With ISPConfig 3 - Page 4

4 Installing ISPConfig 3 On The Second Server

In this step we will install ISPConfig on the slave server (server2.example.tld). This time we use the expert mode of the ISPConfig installer to add this node to the master ispconfig server and database. To get the download URL of the latest ISPConfig 3 stable release, please visit the ISPConfig website:http://www.ispconfig.org/ispconfig-3/download/

On server 2:

Download the latest ISPConfig 3 stable release...

cd /tmp
wgethttp://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

... and start the install script:

php -q install.php

Select language (en,de) [en]:<-- en
Installation mode (standard,expert) [standard]:<-- expert
Full qualified hostname (FQDN) of the server, eg server2.domain.tld [server2.example.tld]:<-- server2.example.tld
MySQL server hostname [localhost]:<-- localhost
MySQL root username [root]:<-- root
MySQL root password []:<-- Enter your mysql root password here
MySQL database to create [dbispconfig]:<-- dbispconfig2 (the local ispconfig database name of the master and slave must be different, as both servers share the same data directory)
MySQL charset [utf8]:<-- utf8

The next two questions are about the internal ISPConfig database user and password.
It is recommended to accept the defaults which are 'ispconfig' as username and a random password.
If you use a different password, use only numbers and chars for the password.

ISPConfig mysql database username [ispconfig]:<-- ispconfig2
ISPConfig mysql database password [54c243fd3f9ca68de7b08527c81dd5ef]:<-- (press return to accept the default)

Shall this server join an existing ISPConfig multiserver setup (y,n) [n]:<-- y
MySQL master server hostname []:<-- server1.example.tld
MySQL master server root username [root]:<-- root
MySQL master server root password []:<-- Enter the root password of the master server here
MySQL master server database name [dbispconfig]:<-- dbispconfig1
Configure Mail (y,n) [y]:<-- y

Country Name (2 letter code) [AU]:<-- DE (Enter the ISO country code where you live here)
State or Province Name (full name) [Some-State]:<-- Niedersachsen (Enter the state where you live here)
Locality Name (eg, city) []:<-- Lueneburg (Enter the city here)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:

Configure Jailkit (y,n) [y]:<-- y
Configure FTP Server (y,n) [y]:<-- y
Configure DNS Server (y,n) [y]:<-- y
Configure Apache Server (y,n) [y]:<-- y
Configure Firewall Server (y,n) [y]:<--y
Install ISPConfig Web-Interface (y,n) [y]:<--y
Installing ISPConfig
ISPConfig Port [8080]:

Enable SSL for the ISPConfig web interface (y,n) [y]:<-- y

Generating RSA private key, 4096 bit long modulus
.................++
.............................................................................................................++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Clean up the install directories:

rm -rf /tmp/ispconfig3_install/install
rm -f /tmp/ISPConfig-3-stable.tar.gz

In a last configuration step, we want to connect the ISPConfig interface of the slave directly to the master database. This step is only required if you want to access ISPConfig on port 8080 on the master and on the slave server. Log into the master server as root user on the shell...

On server 1:

... and execute this command:

scp -p /usr/local/ispconfig/interface/lib/config.inc.php [email protected]:/usr/local/ispconfig/interface/lib/config.inc.php

This command has to be excuted after each ISPConfig update again after you updated ISPConfig on the master and on the slave with the normal ISPConfig update command (ispconfig_update.sh).

Installing A Web, Email &MySQL Database Cluster On Debian 6.0 With ISPConfig 3 - Page 5

5 Configure Replication In ISPConfig

Log into ISPConfig on the master server with a webbrowser:

http://192.168.0.105:8080

Click on System> Server Services> server2.example.tld:

Select "server1.example.tld" in the "is mirror of" field and click on Save.

Then open System> Server Config and enable the checkbox "Connect Linux userid to webid" on the "Web" tab:

6 Additional Notes

When you want to activate a firewall on the master or slave server, ensure that you open port 3306 for MySQL on both servers.

  • ISPConfig Website:http://www.ispconfig.org/
  • ISPConfig Forum:https://www.howtoforge.com/forums/
  • ISPConfig Bugtracker:http://bugtracker.ispconfig.org/

Panels
  1. Installer WordPress avec une base de données distante sur Debian

  2. Installation du serveur Web dans FreeBSD 6.0 avec Apache 2.2, MySQL 5.0 et PHP 5 - Partie 5

  3. Installation du serveur Web dans FreeBSD 6.0 avec Apache 2.2, MySQL 5.0 et PHP 5 - Partie 4

  4. Installation du serveur Web dans FreeBSD 6.0 avec Apache 2.2, MySQL 5.0 et PHP 5 - Partie 3

  5. Installation du serveur Web dans FreeBSD 6.0 avec Apache 2.2, MySQL 5.0 et PHP 5 - Partie 2

Comment installer Drupal 5.6 sur Debian Etch avec ISPConfig

Le serveur parfait - Debian Squeeze (Debian 6.0) avec BIND et Dovecot [ISPConfig 3]

Le serveur parfait - Debian Squeeze (Debian 6.0) avec BIND, Dovecot et Nginx [ISPConfig 3]

Installation d'un cluster de bases de données Web, de messagerie et MySQL sur Debian 6.0 avec ISPConfig 3

Configuration multiserveur avec des serveurs de base de données Web, de messagerie, DNS et MySQL dédiés sur Debian Squeeze avec ISPConfig 3

Environnement multiserveur virtuel avec serveurs dédiés Web et MySQL, de messagerie et DNS sur Debian Squeeze avec ISPConfig 3