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 pythonWenn 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/dovecotAn 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.cnfund ä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.cnfund ändern Sie den SQL-Modus zu
sql_mode=NO_ENGINE_SUBSTITUTIONauch 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.servicesystemctl enable postfix.service
systemctl start postfix.servicesystemctl enable dovecot.service
systemctl start dovecot.serviceJetzt installiere ich das getmail-Paket:
zypper install getmailUm die MySQL-Installation zu sichern, führen Sie aus:
mysql_secure_installationJetzt 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/clamdOpenSUSE 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/amavisKommentieren 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-reloadausfü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.service10 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_fcgidInstallieren 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_php5zypper install http://download.opensuse.org/repositories/server:/php/openSUSE_13.1/x86_64/suphp-0.7.1-5.3.x86_64.rpmFühren Sie dann diese Befehle aus, um die Apache-Module (einschließlich WebDAV) zu aktivieren:
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 SSLUm 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-Moduleszypper install apache2-mod_pythona2enmod pythonAls nächstes installieren wir phpMyAdmin:
zypper install phpMyAdminUm 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.service10.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-fpmLaden 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_fastcgiBevor 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.servicePHP-FPM ist ein Daemon-Prozess, der einen FastCGI-Server auf Port 9000 ausführt, wie Sie in der Ausgabe von
netstat -tapnserver1:~ # 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.serviceErhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.