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 pythonSi 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.rebootOuvrez le fichier de configuration MySQL /etc/my.cnf avec un éditeur
vi /etc/my.cnfet changez la ligne “ sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES “ en :
sql_mode=NO_ENGINE_SUBSTITUTIONEnsuite, ouvrez le fichier /usr/my.cnf avec un éditeur
vi /usr/my.cnfet changez le mode sql en
sql_mode=NO_ENGINE_SUBSTITUTIONlà 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.servicesystemctl enable postfix.service
systemctl start postfix.servicesystemctl enable dovecot.service
systemctl start dovecot.serviceMaintenant, j’installe le paquet getmail :
zypper install getmailPour sécuriser l’installation de MySQL, exécutez :
mysql_secure_installationMaintenant, 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-mysqlOuvrez /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/clamdOpenSUSE 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/amavisCommentez 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-reloadmaintenant.
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.service10 Installer le serveur Web Apache 2 avec PHP5, Ruby, Python, WebDAV
Installez Apache2 et suphp. Exécutez :
zypper install apache2 apache2-mod_fcgidInstallez 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_php5zypper install http://download.opensuse.org/repositories/server:/php/openSUSE_13.1/x86_64/suphp-0.7.1-5.3.x86_64.rpmEnsuite, exécutez ces commandes pour activer les modules Apache (y compris WebDAV) :
a2enmod socache_shmcba2enmod 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/suexec2a2enflag SSLPour 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-Moduleszypper install apache2-mod_pythona2enmod pythonEnsuite, nous installons phpMyAdmin :
zypper install phpMyAdminPour 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.service10.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-fpmMaintenant, 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_fastcgiAvant 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.confChangez les permissions du répertoire de session de PHP :
chmod 1733 /var/lib/php5Ensuite, 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.servicePHP-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 -tapnserver1:~ # 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.serviceRecevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.