Server Setup · 8 min read · Jan 27, 2026

Der perfekte Server - OpenSUSE 13.1 x86_64 (Apache2, MySQL, PHP, Postfix, Dovecot und ISPConfig 3) - Seite 4

8 Installieren Sie Postfix, Dovecot, MySQL

Führen Sie aus

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

Wenn Sie die folgende Nachricht erhalten, wählen Sie bitte die Deinstallation von exim:

Problem: sendmail-8.14.5-85.1.2.x86_64 steht im Konflikt mit postfix, bereitgestellt von postfix-2.9.6-1.2.1.x86_64
Lösung 1: Folgende Aktionen werden durchgeführt:
installieren Sie nicht postfix-2.9.6-1.2.1.x86_64
installieren Sie nicht postfix-mysql-2.9.6-1.2.1.x86_64
Lösung 2: Deinstallation von sendmail-8.14.5-85.1.2.x86_64

Wählen Sie aus den obigen Lösungen nach Nummer oder abbrechen [1/2/c] (c): <– 2

Erstellen Sie den folgenden Symlink:

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

An diesem Punkt musste ich neu starten, da MySQL sich sonst weigerte zu starten mit dem Fehler:

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

Öffnen Sie die MySQL-Konfigurationsdatei /etc/my.cnf mit einem Editor

vi /etc/my.cnf

und ändern Sie die Zeile “ sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES “ zu:

sql_mode=NO_ENGINE_SUBSTITUTION

Öffnen Sie dann die Datei /usr/my.cnf mit einem Editor

vi /usr/my.cnf

und ändern Sie den SQL-Modus zu

sql_mode=NO_ENGINE_SUBSTITUTION

auch dort.

Starten Sie MySQL, Postfix und Dovecot und aktivieren Sie die Dienste, damit sie beim Booten gestartet werden.

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

Jetzt installiere ich das getmail-Paket:

zypper install getmail

Um die MySQL-Installation zu sichern, führen Sie aus:

mysql_secure_installation

Jetzt werden Sie mehrere Fragen gestellt:

server1:~ # mysql_secure_installation

HINWEIS: ALLE TEILE DIESER SCRIPT AUSFÜHREN WIRD FÜR ALLE MySQL
SERVER IM PRODUKTIONSEINSATZ EMPFOHLEN! BITTE JEDEN SCHRITT SORGFÄLTIG LESEN!

Um sich in MySQL anzumelden, um es zu sichern, benötigen wir das aktuelle
Passwort für den Root-Benutzer. Wenn Sie MySQL gerade installiert haben, und
Sie das Root-Passwort noch nicht festgelegt haben, wird das Passwort
leer sein, sodass Sie hier einfach die Eingabetaste drücken sollten.

Geben Sie das aktuelle Passwort für root ein (drücken Sie die Eingabetaste für keines): <– ENTER
OK, Passwort erfolgreich verwendet, weiter…

Das Festlegen des Root-Passworts stellt sicher, dass niemand
auf den MySQL-Root-Benutzer zugreifen kann, ohne die
richtige Autorisierung.

Root-Passwort festlegen? [Y/n] <– Y
Neues Passwort: <– yourrootsqlpassword
Neues Passwort erneut eingeben: <– yourrootsqlpassword
Passwort erfolgreich aktualisiert!
Aktualisieren der Berechtigungstabellen..
… Erfolg!

Standardmäßig hat eine MySQL-Installation einen anonymen Benutzer,
der es jedem ermöglicht, sich in MySQL anzumelden, ohne
ein Benutzerkonto erstellen zu müssen. Dies ist
lediglich für Tests gedacht und um die Installation
etwas reibungsloser zu gestalten. Sie sollten sie
entfernen, bevor Sie in eine
Produktionsumgebung wechseln.

Anonyme Benutzer entfernen? [Y/n] <– Y
… Erfolg!

Normalerweise sollte root nur von ‘localhost’ aus
verbunden werden dürfen. Dies
sichert, dass niemand das Root-Passwort
über das Netzwerk erraten kann.

Root-Login aus der Ferne verweigern? [Y/n] <– Y
… Erfolg!

Standardmäßig kommt MySQL mit einer Datenbank namens ‘test’,
die jeder zugreifen kann. Dies ist ebenfalls
lediglich für Tests gedacht und sollte
entfernt werden, bevor Sie in eine
Produktionsumgebung wechseln.

Testdatenbank und Zugriff darauf entfernen? [Y/n] <– Y

  • Testdatenbank wird gelöscht…
    … Erfolg!
  • Berechtigungen auf der Testdatenbank werden entfernt…
    … Erfolg!

Das Aktualisieren der Berechtigungstabellen stellt sicher, dass
alle bisher vorgenommenen Änderungen sofort wirksam werden.

Berechtigungstabellen jetzt aktualisieren? [Y/n] <– Y
… Erfolg!

Aufräumen…

Alles erledigt! Wenn Sie alle obigen Schritte abgeschlossen haben,
sollte Ihre MySQL-Installation jetzt sicher sein.

Danke, dass Sie MySQL verwenden!

server1:~ #

Jetzt sollte Ihre MySQL-Konfiguration gesichert sein.

9 Amavisd-new, Spamassassin und Clamav

Installieren Sie Amavisd-new, Spamassassin und Clamav Antivirus. Führen Sie aus

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

Öffnen Sie /etc/amavisd.conf…

vi /etc/amavisd.conf

… und fügen Sie die Zeile $myhostname mit Ihrem korrekten Hostnamen unter der Zeile $mydomain hinzu:

| [...] $mydomain = 'example.com'; # ein praktischer Standard für andere Einstellungen $myhostname = "server1.$mydomain"; [...] |

Dann erstellen Sie einen Symlink von /var/run/clamav/clamd zu /var/lib/clamav/clamd-socket:

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

OpenSUSE 13.1 hat ein /run-Verzeichnis zum Speichern von Laufzeitdaten. /run ist jetzt ein tmpfs, und /var/run ist jetzt von tmpfs nach /run gebunden, und wird daher beim Neustart geleert.

Das bedeutet, dass nach einem Neustart das Verzeichnis /var/run/clamav, das wir gerade erstellt haben, nicht mehr existieren wird, und daher wird clamd nicht starten. Daher erstellen wir die Datei /etc/tmpfiles.d/clamav.conf, die dieses Verzeichnis beim Systemstart erstellt (siehe http://0pointer.de/public/systemd-man/tmpfiles.d.html für weitere Details):

vi /etc/tmpfiles.d/clamav.conf

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

Bevor wir amavisd und clamd starten, müssen wir das Init-Skript /etc/init.d/amavis bearbeiten - ich konnte amavisd mit dem Standard-Init-Skript nicht zuverlässig starten, stoppen und neu starten:

vi /etc/init.d/amavis

Kommentieren Sie die folgenden Zeilen im Start- und Stoppabschnitt aus:

| [...] start) # ZMI 20100428 Überprüfung auf veraltete PID-Datei #if test -f $AMAVIS_PID ; then # checkproc -p $AMAVIS_PID amavisd # if test $? -ge 1 ; then # # PID-Datei ist veraltet, entfernen # echo -n "(veraltete amavisd PID-Datei $AMAVIS_PID gefunden, entfernen. Ist amavisd abgestürzt?)" # rm -f $AMAVIS_PID # fi #fi echo -n "Starte Virus-Scanner (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 "Starte amavis-milter:" # startproc -u vscan $AMAVIS_MILTER_BIN -p $AMAVIS_MILTER_SOCK > /dev/null 2>&1 # rc_status -v #fi ;; stop) echo -n "Fahre Virus-Scanner (amavisd-new) herunter: " #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 "Fahre amavis-milter herunter: " # killproc -TERM $AMAVIS_MILTER_BIN # rc_status -v #fi ;; [...] |

Da wir das Init-Skript geändert haben, müssen wir jetzt

systemctl --system daemon-reload

ausführen.

Um clamav zu starten, müssen wir die Datenbank herunterladen und mit dem Befehl fortfahren

freshclam

Hinweis: Es dauert viel Zeit, die Datenbank herunterzuladen, es wird empfohlen, nicht zu unterbrechen und den freshclam-Update-Dienst nicht dazwischen zu stoppen.

Um die Dienste zu aktivieren, führen Sie aus:

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

10 Installieren Sie den Apache 2 Webserver mit PHP5, Ruby, Python, WebDAV

Installieren Sie Apache2 und suphp. Führen Sie aus:

zypper install apache2 apache2-mod_fcgid

Installieren Sie 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

Führen Sie dann diese Befehle aus, um die Apache-Module (einschließlich WebDAV) zu aktivieren:

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

Um Python-Unterstützung hinzuzufügen, führen Sie aus:

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

Als nächstes installieren wir phpMyAdmin:

zypper install phpMyAdmin

Um sicherzustellen, dass wir später von allen über ISPConfig erstellten Websites auf phpMyAdmin zugreifen können, indem wir /phpmyadmin (z.B. http://www.example.com/phpmyadmin) und /phpMyAdmin (z.B. http://www.example.com/phpMyAdmin) verwenden, öffnen Sie /etc/apache2/conf.d/phpMyAdmin.conf…

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

… und fügen Sie die folgenden beiden Aliase gleich zu Beginn hinzu:

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

Bevor wir Apache starten, müssen wir dem Link folgen und Änderungen in httpd.conf vornehmen

vi /etc/apache2/httpd.conf

Kommentieren Sie diese Zeilen aus und fügen Sie diese Zeilen hinzu

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

Jetzt starten Sie den Apache-Dienst

systemctl enable apache2.service  
systemctl start apache2.service

10.1 PHP-FPM

Beginnend mit ISPConfig 3.0.5 gibt es einen zusätzlichen PHP-Modus, den Sie für die Verwendung mit Apache auswählen können: PHP-FPM.

Um PHP-FPM mit Apache zu verwenden, benötigen wir das mod_fastcgi Apache-Modul (bitte verwechseln Sie dies nicht mit mod_fcgid - sie sind sehr ähnlich, aber Sie können PHP-FPM nicht mit mod_fcgid verwenden). Wir können PHP-FPM und mod_fastcgi wie folgt installieren:

mod_fastcgi ist aus einem Drittanbieter-Repository verfügbar, das wir wie folgt aktivieren können:

Als nächstes installieren wir Fastcgi und PHP-FPM:

zypper install fastcgi php5-fpm

Laden Sie jetzt mod_fastcgi herunter und installieren Sie es:

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

Bevor wir PHP-FPM starten, benennen wir /etc/php5/fpm/php-fpm.conf.default in /etc/php5/fpm/php-fpm.conf um:

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

Ändern Sie die Berechtigungen des PHP-Sitzungsverzeichnisses:

chmod 1733 /var/lib/php5

Öffnen Sie dann /etc/php5/fpm/php-fpm.conf…

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

… und ändern Sie error_log zu /var/log/php-fpm.log:

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

Es gibt keine php.ini-Datei für PHP-FPM unter OpenSUSE 13.1, daher kopieren wir die CLI php.ini:

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

Öffnen Sie als nächstes /etc/php5/fpm/php.ini…

vi /etc/php5/fpm/php.ini

… und setzen Sie cgi.fix_pathinfo auf 0:

| [...] ; cgi.fix_pathinfo bietet *echte* PATH_INFO/PATH_TRANSLATED-Unterstützung für CGI. PHP's ; vorheriges Verhalten war, PATH_TRANSLATED auf SCRIPT_FILENAME zu setzen und nicht zu verstehen, ; was PATH_INFO ist. Für weitere Informationen zu PATH_INFO siehe die CGI-Spezifikationen. Das Setzen ; dies auf 1 bewirkt, dass PHP CGI seine Pfade an die Spezifikation anpasst. Eine Einstellung ; von null bewirkt, dass PHP sich wie zuvor verhält. Standard ist 1. Sie sollten Ihre Skripte ; so anpassen, dass sie SCRIPT_FILENAME anstelle von PATH_TRANSLATED verwenden. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |

Erstellen Sie als nächstes die Systemstart-Links für php-fpm und starten Sie es:

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

PHP-FPM ist ein Daemon-Prozess, der einen FastCGI-Server auf Port 9000 ausführt, wie Sie in der Ausgabe von

netstat -tapn
server1:~ # netstat -tapn  
Aktive Internetverbindungen (Server und etabliert)  
Proto  Recv-Q  Send-Q  Lokale Adresse           Fremde Adresse         Zustand       PID/Programmname  
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    ESTABLISHED 1284/0  
tcp        0      0 :::22                    :::*                  LISTEN      1204/sshd  
server1:~ #

Aktivieren Sie als nächstes die folgenden Apache-Module…

a2enmod actions  
a2enmod fastcgi  
a2enmod alias

… und starten Sie Apache neu:

systemctl restart apache2.service
Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.