Serveur Web · 9 min read · Jan 27, 2026

Le Serveur Parfait - OpenSUSE 13.1 x86_64 (Apache2, MySQL, PHP, Postfix, Dovecot et ISPConfig 3) - Page 4

8 Installer Postfix, Dovecot, MySQL

Exécutez

zypper install postfix postfix-mysql mysql-community-server libmysqlclient-devel dovecot21 dovecot21-backend-mysql pwgen cron python

Si vous obtenez le message suivant, veuillez sélectionner pour désinstaller exim :

Problème : sendmail-8.14.5-85.1.2.x86_64 entre en conflit avec postfix fourni par postfix-2.9.6-1.2.1.x86_64
Solution 1 : Les actions suivantes seront effectuées :
ne pas installer postfix-2.9.6-1.2.1.x86_64
ne pas installer postfix-mysql-2.9.6-1.2.1.x86_64
Solution 2 : désinstallation de sendmail-8.14.5-85.1.2.x86_64

Choisissez parmi les solutions ci-dessus par numéro ou annulez [1/2/c] (c): <– 2

Créez le lien symbolique suivant :

ln -s /usr/lib64/dovecot/modules /usr/lib/dovecot

À ce stade, j’ai dû redémarrer car sinon MySQL refusait de démarrer avec l’erreur :

Failed to issue method call: Unit mysql.service failed to load: No such file or directory. See system logs and 'systemctl status mysql.service' for details.
reboot

Ouvrez le fichier de configuration MySQL /etc/my.cnf avec un éditeur

vi /etc/my.cnf

et changez la ligne “ sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES “ en :

sql_mode=NO_ENGINE_SUBSTITUTION

Ensuite, ouvrez le fichier /usr/my.cnf avec un éditeur

vi /usr/my.cnf

et changez le mode sql en

sql_mode=NO_ENGINE_SUBSTITUTION

là aussi.

Démarrez MySQL, Postfix et Dovecot et activez les services pour qu’ils démarrent au démarrage.

systemctl enable mysql.service  
systemctl start mysql.service
systemctl enable postfix.service  
systemctl start postfix.service
systemctl enable dovecot.service  
systemctl start dovecot.service

Maintenant, j’installe le paquet getmail :

zypper install getmail

Pour sécuriser l’installation de MySQL, exécutez :

mysql_secure_installation

Maintenant, vous serez invité à répondre à plusieurs questions :

server1:~ # mysql_secure_installation

NOTE : L’EXÉCUTION DE TOUTES LES PARTIES DE CE SCRIPT EST RECOMMANDÉE POUR TOUS LES SERVEURS MySQL
EN USAGE EN PRODUCTION ! VEUILLEZ LIRE CHAQUE ÉTAPE ATTENTIVEMENT !

Afin de se connecter à MySQL pour le sécuriser, nous aurons besoin du mot de passe actuel
pour l’utilisateur root. Si vous venez d’installer MySQL, et
vous n’avez pas encore défini le mot de passe root,
le mot de passe sera vide,
vous devriez donc simplement appuyer sur entrer ici.

Entrez le mot de passe actuel pour root (appuyez sur entrer pour aucun) : <– ENTER
OK, mot de passe utilisé avec succès, passage à la suite…

Définir le mot de passe root ? [Y/n] <– Y
Nouveau mot de passe : <– votremotdepassepourroot
Ressaisissez le nouveau mot de passe : <– votremotdepassepourroot
Mot de passe mis à jour avec succès !
Rechargement des tables de privilèges..
… Succès !

Par défaut, une installation MySQL a un utilisateur anonyme,
permettant à quiconque de se connecter à MySQL
sans avoir à créer un compte utilisateur pour eux.
Ceci est destiné uniquement aux tests,
et pour rendre l’installation
un peu plus fluide.
Vous devriez les supprimer avant de passer à un
environnement de production.

Supprimer les utilisateurs anonymes ? [Y/n] <– Y
… Succès !

Normalement, root ne devrait être autorisé à se connecter
que depuis ‘localhost’.
Cela garantit que quelqu’un ne peut pas deviner
le mot de passe root depuis le réseau.

Interdire la connexion root à distance ? [Y/n] <– Y
… Succès !

Par défaut, MySQL vient avec une base de données nommée ‘test’
à laquelle quiconque peut accéder.
Ceci est également destiné uniquement aux tests,
et devrait être supprimé
avant de passer à un environnement de production.

Supprimer la base de données de test et l’accès à celle-ci ? [Y/n] <– Y

  • Suppression de la base de données de test…
    … Succès !
  • Suppression des privilèges sur la base de données de test…
    … Succès !

Recharger les tables de privilèges garantira que
toutes les modifications effectuées jusqu’à présent
prendront effet immédiatement.

Recharger les tables de privilèges maintenant ? [Y/n] <– Y
… Succès !

Nettoyage…

Tout est fait ! Si vous avez complété toutes les étapes ci-dessus,
votre installation MySQL devrait maintenant être sécurisée.

Merci d’utiliser MySQL !

server1:~ #

Maintenant, votre configuration MySQL devrait être sécurisée.

9 Amavisd-new, Spamassassin et Clamav

Installez Amavisd-new, Spamassassin et l’antivirus Clamav. Exécutez

zypper install amavisd-new clamav clamav-db zoo unzip unrar bzip2 unarj perl-DBD-mysql

Ouvrez /etc/amavisd.conf…

vi /etc/amavisd.conf

… et ajoutez la ligne $myhostname avec votre nom d’hôte correct sous la ligne $mydomain :

| [...] $mydomain = 'example.com'; # un défaut pratique pour d'autres paramètres $myhostname = "server1.$mydomain"; [...] |

Ensuite, créez un lien symbolique de /var/run/clamav/clamd à /var/lib/clamav/clamd-socket :

mkdir -p /var/run/clamav  
ln -s /var/lib/clamav/clamd-socket /var/run/clamav/clamd

OpenSUSE 13.1 a un répertoire /run pour stocker les données d’exécution. /run est maintenant un tmpfs, et /var/run est maintenant monté en liaison à /run depuis tmpfs, et donc vidé au redémarrage.

Cela signifie qu’après un redémarrage, le répertoire /var/run/clamav que nous venons de créer n’existera plus, et donc clamd échouera à démarrer. Par conséquent, nous créons le fichier /etc/tmpfiles.d/clamav.conf maintenant qui créera ce répertoire au démarrage du système (voir http://0pointer.de/public/systemd-man/tmpfiles.d.html pour plus de détails) :

vi /etc/tmpfiles.d/clamav.conf

| D /var/run/clamav 0755 root root - |

Avant de démarrer amavisd et clamd, nous devons éditer le script d’initialisation /etc/init.d/amavis - je n’ai pas pu démarrer, arrêter et redémarrer amavisd de manière fiable avec le script d’initialisation par défaut :

vi /etc/init.d/amavis

Commentez les lignes suivantes dans la section de démarrage et d’arrêt :

| [...] start) # ZMI 20100428 vérifiez le fichier pid obsolète #if test -f $AMAVIS_PID ; then # checkproc -p $AMAVIS_PID amavisd # if test $? -ge 1 ; then # # le fichier pid est obsolète, supprimez-le # echo -n "(fichier pid amavisd obsolète $AMAVIS_PID trouvé, suppression. Amavisd a-t-il planté ?)" # rm -f $AMAVIS_PID # fi #fi echo -n "Démarrage du scanner de virus (amavisd-new) : " $AMAVISD_BIN start #if ! checkproc amavisd; then # rc_failed 7 #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "Démarrage d'amavis-milter:" # startproc -u vscan $AMAVIS_MILTER_BIN -p $AMAVIS_MILTER_SOCK > /dev/null 2>&1 # rc_status -v #fi ;; stop) echo -n "Arrêt du scanner de virus (amavisd-new) : " #if checkproc amavisd; then # rc_reset $AMAVISD_BIN stop #else # rc_reset #fi rc_status -v #if [ "$AMAVIS_SENDMAIL_MILTER" == "yes" ]; then # rc_reset # echo -n "Arrêt d'amavis-milter : " # killproc -TERM $AMAVIS_MILTER_BIN # rc_status -v #fi ;; [...] |

Parce que nous avons changé le script d’initialisation, nous devons exécuter

systemctl --system daemon-reload

maintenant.

Pour démarrer clamav, nous devons télécharger la base de données et procéder avec la commande

freshclam

Remarque : Cela prend beaucoup de temps pour télécharger la base de données, il est conseillé de ne pas interrompre et de ne pas arrêter le service de mise à jour freshclam entre-temps.

Pour activer les services, exécutez :

systemctl enable amavis.service  
systemctl enable clamd.service  
systemctl start amavis.service  
systemctl start clamd.service

10 Installer le serveur Web Apache 2 avec PHP5, Ruby, Python, WebDAV

Installez Apache2 et suphp. Exécutez :

zypper install apache2 apache2-mod_fcgid

Installez PHP5 :

zypper install php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-mysql php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-fastcgi php5-pear php5-sysvmsg php5-sysvshm ImageMagick curl apache2-mod_php5
zypper install http://download.opensuse.org/repositories/server:/php/openSUSE_13.1/x86_64/suphp-0.7.1-5.3.x86_64.rpm

Ensuite, exécutez ces commandes pour activer les modules Apache (y compris WebDAV) :

a2enmod socache_shmcb
a2enmod suexec  
a2enmod rewrite  
a2enmod ssl  
a2enmod actions  
a2enmod suphp  
a2enmod fcgid  
a2enmod dav  
a2enmod dav_fs  
a2enmod dav_lock  
a2enmod logio  
chown root:www /usr/sbin/suexec2  
chmod 4755 /usr/sbin/suexec2
a2enflag SSL

Pour ajouter le support Python, exécutez :

zypper --gpg-auto-import-keys addrepo --name "Support Python (Apache_openSUSE_13.1)" http://download.opensuse.org/repositories/Apache:/Modules/openSUSE_13.1/  apache-Modules
zypper install apache2-mod_python
a2enmod python

Ensuite, nous installons phpMyAdmin :

zypper install phpMyAdmin

Pour s’assurer que nous pouvons accéder à phpMyAdmin depuis tous les sites Web créés via ISPConfig plus tard en utilisant /phpmyadmin (par exemple, http://www.example.com/phpmyadmin) et /phpMyAdmin (par exemple, http://www.example.com/phpMyAdmin), ouvrez /etc/apache2/conf.d/phpMyAdmin.conf…

vi /etc/apache2/conf.d/phpMyAdmin.conf

… et ajoutez les deux alias suivants tout au début :

| Alias /phpMyAdmin /srv/www/htdocs/phpMyAdmin Alias /phpmyadmin /srv/www/htdocs/phpMyAdmin [...] |

Avant de démarrer apache, nous devons suivre le lien et apporter des modifications dans httpd.conf

vi /etc/apache2/httpd.conf

Commentez ces lignes et ajoutez ces lignes

#  
#    Options None  
#    AllowOverride None  
#    Order deny,allow  
#   Deny from all  
#  
  
  
Options None  
AllowOverride None  
Require all denied  

Maintenant, démarrez le service Apache

systemctl enable apache2.service  
systemctl start apache2.service

10.1 PHP-FPM

À partir de ISPConfig 3.0.5, il existe un mode PHP supplémentaire que vous pouvez sélectionner pour une utilisation avec Apache : 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 :

mod_fastcgi est disponible à partir d’un dépôt tiers que nous pouvons activer comme suit :

Ensuite, nous installons Fastcgi et PHP-FPM :

zypper install fastcgi php5-fpm

Maintenant, téléchargez et installez mod_fastcgi :

cd /tmp  
wget http://download.opensuse.org/repositories/home:/munix9/openSUSE_13.1/x86_64/apache2-mod_fastcgi-2.4.7_SNAP_0910052141-3.1.x86_64.rpm  
rpm -i apache2-mod_fastcgi-2.4.7_SNAP_0910052141-3.1.x86_64.rpm  
a2enmod mod_fastcgi

Avant de démarrer PHP-FPM, renommez /etc/php5/fpm/php-fpm.conf.default en /etc/php5/fpm/php-fpm.conf :

mv /etc/php5/fpm/php-fpm.conf.default /etc/php5/fpm/php-fpm.conf

Changez les permissions du répertoire de session de PHP :

chmod 1733 /var/lib/php5

Ensuite, ouvrez /etc/php5/fpm/php-fpm.conf…

vi /etc/php5/fpm/php-fpm.conf

… et changez error_log en /var/log/php-fpm.log :

| [...] error_log = /var/log/php-fpm.log [...] |

Il n’y a pas de fichier php.ini pour PHP-FPM sous OpenSUSE 13.1, donc nous copions le php.ini CLI :

cp /etc/php5/cli/php.ini /etc/php5/fpm/

Ensuite, ouvrez /etc/php5/fpm/php.ini…

vi /etc/php5/fpm/php.ini

… et définissez cgi.fix_pathinfo sur 0 :

| [...] ; cgi.fix_pathinfo fournit un support *réel* pour PATH_INFO/PATH_TRANSLATED pour CGI. PHP's ; le comportement précédent était de définir PATH_TRANSLATED sur SCRIPT_FILENAME, et de ne pas comprendre ; ce qu'est PATH_INFO. Pour plus d'informations sur PATH_INFO, voir les spécifications cgi. Définir ; cela à 1 fera en sorte que PHP CGI corrige ses chemins pour se conformer à la spécification. Un réglage ; de zéro fait que PHP se comporte comme avant. La valeur par défaut est 1. Vous devriez corriger vos scripts ; pour utiliser SCRIPT_FILENAME plutôt que PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |

Ensuite, créez les liens de démarrage système pour php-fpm et démarrez-le :

systemctl enable php-fpm.service   
systemctl start php-fpm.service

PHP-FPM est un processus de démon qui exécute un serveur FastCGI sur le port 9000, comme vous pouvez le voir dans la sortie de

netstat -tapn
server1:~ # netstat -tapn  
Connexions Internet actives (serveurs et établis)  
Proto Recv-Q Send-Q Adresse locale           Adresse étrangère         État       PID/nom du programme  
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2329/nginx  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1204/sshd  
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      2511/php-fpm.conf)  
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2059/mysqld  
tcp        0      0 192.168.0.100:22        192.168.0.199:1632      ÉTABLI     1284/0  
tcp        0      0 :::22                    :::*                     LISTEN      1204/sshd  
server1:~ #

Ensuite, activez les modules Apache suivants…

a2enmod actions  
a2enmod fastcgi  
a2enmod alias

… et redémarrez Apache :

systemctl restart apache2.service
Share: X/Twitter LinkedIn

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

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