Der Perfekte Server - CentOS 6.1 x86_64 mit nginx [ISPConfig 3]

Version 1.0

Author: Falko Timme , Christian Schmalfeld <c [dot] schmalfeld [at] projektfarm [dot] de>

Follow me on Twitter


Dieses Tutorial zeigt Ihnen, wie Sie einen CentOS 6.1 x86_64 Server auf die Installation von ISPConfg 3 vorbereiten und dieses installieren. ISPConfig 3 ist eine Webhosting Kontrolloberfläche die Ihnen erlaubt, die folgenden Dienste über einen Internetbrowser zu konfigurieren: Apache web server, Postfix mail server, MySQL, BIND Nameserver, PureFTPd, SpamAssassin, ClamAV, und viele andere. Ab Version 3.0.4 unterstützt ISPConfig zusätzlich zu Apache auch nginx Webserver; dieses Tutorial behandelt das Setup eines nginx Servers.

Beachten Sie bitte, dass dieses Setup nicht mit ISPConfig 2 funktioniert! Es ist nur für ISPConfig 3 gültig!

Für die Inhalte dieses Tutorials gebe ich keine Garantie!

1 Anforderungen

Um ein solches System zu installieren, benötigen Sie folgendes:

2 Vorbemerkung

In diesem Tutorial benutze ich den Hostnamen server1.example.com mit der IP Adresse 192.168.0.100 und dem Gateway 192.168.0.1. Diese Einstellungen werden sich wahrscheinlich von den Ihren unterscheiden, ersetzten Sie sie deshalb an den entsprechenden Stellen.

3 Das Basissystem installieren

Starten Sie das System von der ersten CentOS 6.1 DVD (DVD 1). Wählen Sie Install or upgrade an existing system:


Die Installationsmedien zu testen nimmt des öfteren viel Zeit in Anspruch, weshalb wir diese Option hier überspringen (Skip):


Der Willkommensbildschirm des CentOS Installers erscheint. Klicken Sie auf Next:


Wählen Sie als nächstes Ihre Sprache aus (Ich werde hier Englisch auswählen, die folgenden Schritte sind vom Aufbau her jedoch in jeder Sprache gleich):


Wählen Sie Ihr Tastaturlayout:


Ich nehme an, dass sie eine lokal angeschlossene Festplatte verwenden, wählen Sie deshalb Basic Storage Devices aus:


Es könnte die folgende Warnung auftauchen -  Error processing drive. Sollte dies der Fall sein, klicken Sie auf Re-initialize all um fortzufahren:


Geben Sie den Hostnamen des Servers ein (z.B. server1.example.com) und klicken Sie auf Configure Network:


Wählen Sie den Wired Reiter, suchen Sie die Netzwerkoberfläche aus (vermutlich eth0) und klicken auf Edit...:


Markieren Sie die Connect automatically Box, wählen Sie den IPv4 Settings Reiter und dort Manual im Method drop-down Menü aus. Geben Sie einen, zwei oder drei Nameserver mit Kommata getrennt in das DNS servers Feld ein (z.B. 8.8.8.8,8.8.4.4), und klicken Sie auf den Add Button neben dem Feld Addresses:


Geben Sie nun Ihrer Netzwerkkarte eine statische IP-Adresse und Netzmaske (in diesem Tutorial benutze ich zu Demonstrationszwecken die IP 192.168.0.100 und die Netzmaske 255.255.255.0 ; sollten Sie sich nicht sicher sein, was für Sie die richtigen Werte sind, könnte Ihnen http://www.subnetmask.info helfen). Wählen Sie auch Ihr Gateway aus (z.B. 192.168.0.1) und klicken Sie auf Apply...:


Die Netzwerkkonfiguration ist nun abgeschlossen. Klicken Sie auf den Next Button:



Wählen Sie Ihre Zeitzone:


Geben Sie root ein Passwort:


Als nächstes partitionieren Sie die Festplatte. Wählen Sie Replace Existing Linux System(s). Dies erstellt eine kleine /boot Partition und eine große / Partition, welche für die gebräuchlichen Zwecke gut geeignet sind:


Wählen Sie Write changes to disk:


Die Festplatte wird nun formatiert:


Wählen Sie nun die Software aus, welche Sie installieren wollen: Wählen Sie Basic Server, klicken Sie auf CentOS im additional repositories Feld, wählen Customize later und klicken auf Next:


Die Installation beginnt nun. Dies kann einige Minuten dauern:


Ist die Installation beendet, können Sie die DVD aus Ihrem Laufwerk entfernen und den Computer neu starten:


Loggen Sie sich nach dem Neustart als root ein.

Da ich am Ende des Tutorials ISPConfig 3 installieren möchte, welches seine eigene Firewall mitbringt, deaktiviere ich vorerst die CentOS Firewall. Natürlich ist es Ihnen freigestellt, diese zu aktivieren und nach Ihren Belangen zu konfigurieren, dann sollten Sie jedoch keine weitere Firewall mehr aktivieren, da diese sonst wahrscheinlich die CentOS Firewall behindern wird.

Führen Sie

system-config-firewall-tui

aus und deaktivieren Sie die Firewall (disable). Klicken Sie danach OK:


Bestätigen Sie in dem Sie Yes auswählen:


Haben Sie Ihre Netzwerkkarte nicht während der Installation konfiguriert, können Sie dies jetzt nachholen. Benutzen Sie hierfür

system-config-network

... und wählen Device configuration:


Wählen Sie Ihre Netzwerkoberfläche:


Füllen Sie ihre Netzwerkdetails aus - deaktivieren Sie DHCP und wählen eine statische IP-Adresse, eine Netzmaske, Ihr Gateway, und ein oder Zwei Nameserver aus und wählen Ok:


Nun wählen Sie Save:


Sie können auch noch weitere Nameserver auswählen. Wählen Sie dazu DNS configuration:


Hier können Sie weitere Nameserver eintragen und danach mit Ok bestätigen:


Wählen Sie dann Save&Quit:


Benutzen Sie danach den folgenden Befehl um zu kontrollieren, ob der Installer Ihre IP-Adresse korrekt integriert hat:

ifconfig

[root@server1 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:1D:4F:46
inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe1d:4f46/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:144 errors:0 dropped:0 overruns:0 frame:0
TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10753 (10.5 KiB)  TX bytes:5087 (4.9 KiB)

lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:32 errors:0 dropped:0 overruns:0 frame:0
TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2270 (2.2 KiB)  TX bytes:2270 (2.2 KiB)

[root@server1 ~]#

Prüfen Sie in /etc/resolv.conf ob die Datei alle Nameserver enthält, welche Sie vorher konfiguriert haben:

cat /etc/resolv.conf

Sollten welche fehlen, benutzen Sie erneut

system-config-network

und fügen Sie die fehlenden Server erneut hinzu.

Nun zur Konfiguration...

4 /etc/hosts anpassen

Als nächstes editieren Sie /etc/hosts. Ändern Sie die Datei, sodass Sie wie folgt aussieht:

vi /etc/hosts


127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.0.100 server1.example.com server1 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

5 Firewall konfigurieren

(Sie können dieses Kapitel überspringen, wenn Sie die Firewall am Ende der Basissysteminstallation bereits deaktiviert haben.)
Da ich am Ende des Tutorials ISPConfig 3 installieren möchte, welches seine eigene Firewall mitbringt, deaktiviere ich vorerst die CentOS Firewall. Natürlich ist es Ihnen freigestellt, diese zu aktivieren und nach Ihren Belangen zu konfigurieren, dann sollten Sie jedoch keine weitere Firewall mehr aktivieren, da diese sonst wahrscheinlich die CentOS Firewall behindern wird.

Führen Sie

system-config-firewall

aus und deaktivieren Sie die Firewall.

Um zu überprüfen, ob die Firewall wirklich deaktiviert worden ist, können Sie

iptables -L

ausführen. Die Ausgabe sollte so aussehen:

[root@server1 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
[root@server1 ~]#

6 SELinux deaktivieren

SELinux ist ein erweiterter Sicherheitsdienst von CentOS. Er sollte eigentlich die Sicherheit des Systems verbessern, verursacht aber eher Probleme. Meiner Meinung nach brauchen Sie es nicht, um ein sicheres System zu konfigurieren (SELinux meldet ab und zu ein Problem mit einem Dienst, welches es selbst verursacht). Um später ISPConfig zu installieren, muss der Dienst ohnehin deaktiviert werden, deshalb beschreibe ich nun, wie es funktioniert:

Editieren Sie /etc/selinux/config und benutzen folgende Einstellung: SELINUX=disabled:

vi /etc/selinux/config


# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
Hiernach müssen Sie das System neu starten:

reboot


7 Zusätzliche Repositories aktivieren und Software installieren

Als erstes importieren Sie den GPG Schlüssel für Softwarepakete:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Dann aktivieren Sie die RPMforge und EPEL Repositories auf Ihrem CentOS System, da viele Pakete, die Sie im Laufe des Tutorials installieren müssen, nicht in den offiziellen CentOS 6.1 Repositories verfügbar sind:

rpm --import
http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

cd /tmp

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

(Sollte der benutzte Link nicht mehr funktionieren, können Sie die aktuelle Version von rpmforge-release hier finden: http://packages.sw.be/rpmforge-release/)

rpm --import
https://fedoraproject.org/static/0608B895.txt

wget http://download.fedora.redhat.com/pub/epel/6/i386/epel-release-6-5.noarch.rpm

rpm -ivh epel-release-6-5.noarch.rpm

Sie müssen außerdem die Remi RPM Repository aktivieren, welche das php-fpm Paket enthält, das sie später installieren müssen:

rpm --import
http://rpms.famillecollet.com/RPM-GPG-KEY-remi

rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

yum install yum-priorities

Öffnen Sie /etc/yum.repos.d/epel.repo...

vi /etc/yum.repos.d/epel.repo

... und fügen Sie die Zeile priority=10 zur [epel] Sektion hinzu:
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [...]
Tun Sie das selbe für die [remi] Sektion in /etc/yum.repos.d/remi.repo, setzen Sie zusätzlich enabled auf 1:

vi /etc/yum.repos.d/remi.repo


[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch #baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/ mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi failovermethod=priority [remi-test] name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch #baseurl=http://rpms.famillecollet.com/enterprise/$releasever/test/$basearch/ mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/test/mirror enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
Hiernach updaten Sie die Pakete auf Ihrem System:

yum update

Nun installieren Sie einige der Softwarepakete, die Sie später brauchen:

yum groupinstall 'Development Tools'


8 Quota

(Sollten Sie ein anderes Partitionsschema als ich genommen haben, müssen Sie den Inhalt dieses Kapitels so anpassen, dass Quota bei den Partitionen benutzt wird, wo Sie es brauchen.)
Um Quota zu installieren, benutzen Sie folgenden Befehl:

yum install quota

Öffnen Sie /etc/fstab und fügen Sie ,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 zur / Partition (/dev/mapper/vg_server1-lv_root) hinzu:

vi /etc/fstab


#
# /etc/fstab # Created by anaconda on Fri Dec 16 00:22:26 2011 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/vg_server1-lv_root / ext4 defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 1 1 UUID=d995c881-fbc7-409f-bcad-86d255331a3f /boot ext4 defaults 1 2 /dev/mapper/vg_server1-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0
Benutzen Sie dann

mount -o remount /

quotacheck -avugm
quotaon -avug

um Quota zu aktivieren.

9 System-Uhrzeit synchronisieren

Es ist immer nützlich, die Systemuhr mit einem NTP-Server (network time protocol) im Internet zu synchronisieren. Benutzen Sie dazu einfach

yum install ntp

und Ihre Uhrzeit wird immer synchronisiert sein.

10 Installation von MySQL

Installieren Sie MySQL wie folgt:

yum install mysql mysql-server

Erstellen Sie dann die Systemstartlinks für MySQL und starten es:

chkconfig --levels 235 mysqld on

/etc/init.d/mysqld start

Legen Sie das Passwort für das MySQL root-Konto an:

mysql_secure_installation

[root@server1 tmp]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] <-- ENTER New password: <-- IhrrootsqlPasswort Re-enter new password: <-- IhrrootsqlPasswort Password updated successfully!
Reloading privilege tables..
... Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] <-- ENTER ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] <-- ENTER ... Success!
By default, MySQL comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] <-- ENTER - Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] <-- ENTER ... Success!
Cleaning up...

All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

[root@server1 tmp]#

11 Installation von Courier-IMAP, Courier-Authlib und Maildrop

Unglücklicherweise gibt es keine rpm Pakete für Courier-IMAP, Courier-Authlib und Maildrop, deshalb müssen wir sie uns selbst bauen.

Entfernen Sie zunächst Dovecot (Mit CentOS 6.1 wird automatisch Dovecot 2.x installiert; ISPConfig 3 unterstützt jedoch leider nur Dovecot 1.2.x und nicht 2.x):

yum remove dovecot dovecot-mysql

Installieren Sie dann die gebrauchten Pakete um Courier rpm Pakete zu erstellen:

yum install rpm-build gcc mysql-devel openssl-devel
cyrus-sasl-devel pkgconfig zlib-devel pcre-devel openldap-devel
postgresql-devel expect libtool-ltdl-devel openldap-servers libtool
gdbm-devel pam-devel gamin-devel libidn-devel

RPM Pakete sollten nicht als root erstellt werden; courier-imap wird sich garnicht erst kompilieren lassen, wenn dies als root user versucht wird.  Zu diesem Zweck erstellen Sie ein normales Benutzerkonto (falko in diesem Beispiel) und geben ihm ein Passwort:

useradd -m -s /bin/bash falko
passwd falko

Sie werden später den sudo Befehl brauchen, damit der Benutzer falko rpm Pakete erstellen und kompilieren kann, doch zunächst müssen Sie falko erlauben, durch sudo alle Befehle ausführen zu können:

Benutzen Sie

visudo

In der Datei, die sich öffnet finden Sie die Zeile root ALL=(ALL) ALL. Fügen Sie eine entsprechende Zeile für falko unter der root-Zeile ein:
[...]
## Allow root to run any commands anywhere root ALL=(ALL) ALL falko ALL=(ALL) ALL [...]
Nun haben Sie alle Vorkehrungen getroffen, um das rpm Paket zu erstellen. Loggen Sie sich mit folgendem Befehl als falko ein:

su falko

Als nächstes erstellen Sie die Konstruktionsumgebung:

mkdir $HOME/rpm
mkdir $HOME/rpm/SOURCES
mkdir $HOME/rpm/SPECS
mkdir $HOME/rpm/BUILD
mkdir $HOME/rpm/BUILDROOT
mkdir $HOME/rpm/SRPMS
mkdir $HOME/rpm/RPMS
mkdir $HOME/rpm/RPMS/i386
mkdir $HOME/rpm/RPMS/x86_64

echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros

Nun erstellen Sie ein downloads Verzeichnis und laden die Quelldateien hier herunter: http://www.courier-mta.org/download.php

mkdir $HOME/downloads
cd $HOME/downloads

wget https://sourceforge.net/projects/courier/files/authlib/0.63.0/courier-authlib-0.63.0.tar.bz2/download
wget https://sourceforge.net/projects/courier/files/imap/4.9.3/courier-imap-4.9.3.tar.bz2/download
wget https://sourceforge.net/projects/courier/files/maildrop/2.5.5/maildrop-2.5.5.tar.bz2/download

(Beachten Sie bitte, dass ich Courier-IMAP 4.9.3 statt des aktuelleren 4.10.0 benutze, da 4.10.0 von systemctl abhängig ist, welches für Fedora vorhanden ist, nicht jedoch für CentOS.)

Jetzt (immernoch in $HOME/downloads) können Sie courier-authlib erstellen:

sudo rpmbuild -ta courier-authlib-0.63.0.tar.bz2

Nach dem Erstellungsprozess können die rpm Pakete in /root/rpmbuild/RPMS/x86_64 gefunden werden (/root/rpmbuild/RPMS/i686 wenn Sie mit einem i686 System arbeiten). Der Befehl

sudo ls -l /root/rpmbuild/RPMS/x86_64

zeigt Ihnen die verfügbaren rpm Pakete:

[falko@server1 downloads]$ sudo ls -l /root/rpmbuild/RPMS/x86_64
total 528
-rw-r--r-- 1 root root 124008 Dec 16 01:10 courier-authlib-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 270860 Dec 16 01:10 courier-authlib-debuginfo-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  35072 Dec 16 01:10 courier-authlib-devel-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  17368 Dec 16 01:10 courier-authlib-ldap-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  13928 Dec 16 01:10 courier-authlib-mysql-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  13076 Dec 16 01:10 courier-authlib-pgsql-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root   8312 Dec 16 01:10 courier-authlib-pipe-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  34064 Dec 16 01:10 courier-authlib-userdb-0.63.0-1.el6.x86_64.rpm
[falko@server1 downloads]$

Wählen Sie die jenigen aus, die Sie installieren wollen, und installieren Sie diese wie folgt:

sudo rpm -ivh
/root/rpmbuild/RPMS/x86_64/courier-authlib-0.63.0-1.el6.x86_64.rpm
/root/rpmbuild/RPMS/x86_64/courier-authlib-mysql-0.63.0-1.el6.x86_64.rpm
/root/rpmbuild/RPMS/x86_64/courier-authlib-devel-0.63.0-1.el6.x86_64.rpm

Begeben Sie sich nun zurück zum downloads Verzeichnis:

cd $HOME/downloads

Benutzen Sie folgenden Befehl um folgende benötigte Verzeichnisse zu erstellen und die Verzeichnisrechte zu ändern (denn sonst wird der Erstellungsprozess von Courier-Imap fehlschlagen):

sudo mkdir -p /var/cache/ccache/tmp
sudo chmod o+rwx /var/cache/ccache/
sudo chmod 777 /var/cache/ccache/tmp

Benutzen Sie erneut rpmbuild, dieses Mal ohne sudo, ansonsten wird die Kompilierung fehlschlagen, da sie als root ausgeführt wurde:

rpmbuild -ta courier-imap-4.9.3.tar.bz2

Nach der Paketerstellung können die rpm Pakete in $HOME/rpm/RPMS/x86_64 gefunden werden ($HOME/rpm/RPMS/i686 wenn Sie auf einem i686 System arbeiten):

cd $HOME/rpm/RPMS/x86_64

Der Befehl

ls -l

zeigt Ihnen die verfügbaren rpm Pakete:

[falko@server1 x86_64]$ ls -l
total 1116
-rw-rw-r-- 1 falko falko 331908 Dec 16 01:33 courier-imap-4.9.3-1.x86_64.rpm
-rw-rw-r-- 1 falko falko 800864 Dec 16 01:33 courier-imap-debuginfo-4.9.3-1.x86_64.rpm
[falko@server1 x86_64]$

Sie können Courier-Imap wie folgt installieren:

sudo rpm -ivh courier-imap-4.9.3-1.x86_64.rpm

Kehren Sie nun zurück in das downloads Verzeichnis:

cd $HOME/downloads

und führen erneut rpmbuild aus, dieses Mal um ein Maildrop Paket zu erstellen:

sudo rpmbuild -ta maildrop-2.5.5.tar.bz2

Nach dem Prozess können die Pakete in /root/rpmbuild/RPMS/x86_64 gefunden werden (/root/rpmbuild/RPMS/i686 wenn Sie auf einem i686 System arbeiten). Der Befehl

sudo ls -l /root/rpmbuild/RPMS/x86_64

zeigt Ihnen die verfügbaren rpm Pakete:

[falko@server1 downloads]$ sudo ls -l /root/rpmbuild/RPMS/x86_64
total 1712
-rw-r--r-- 1 root root 124008 Dec 16 01:10 courier-authlib-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 270860 Dec 16 01:10 courier-authlib-debuginfo-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  35072 Dec 16 01:10 courier-authlib-devel-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  17368 Dec 16 01:10 courier-authlib-ldap-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  13928 Dec 16 01:10 courier-authlib-mysql-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  13076 Dec 16 01:10 courier-authlib-pgsql-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root   8312 Dec 16 01:10 courier-authlib-pipe-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root  34064 Dec 16 01:10 courier-authlib-userdb-0.63.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 286480 Dec 16 01:40 maildrop-2.5.5-1.x86_64.rpm
-rw-r--r-- 1 root root 751376 Dec 16 01:40 maildrop-debuginfo-2.5.5-1.x86_64.rpm
-rw-r--r-- 1 root root 102104 Dec 16 01:40 maildrop-devel-2.5.5-1.x86_64.rpm
-rw-r--r-- 1 root root  65940 Dec 16 01:40 maildrop-man-2.5.5-1.x86_64.rpm
[falko@server1 downloads]$

Sie können Maildrop nun wie folgt installieren:

sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/maildrop-2.5.5-1.x86_64.rpm

Nachdem Sie alle gebrauchten Pakete kompiliert und installiert haben, können Sie sich durch folgenden Befehl wieder als root einloggen:

exit

Starten Sie Courier-IMAP/-POP3 wie folgt:

/etc/init.d/courier-imap start


12 Installation von Postfix

Postfix lässt sich wie folgt installieren:

yum install postfix

Deaktivieren Sie dann Sendmail und starten Sie Postfix und MySQL:

chkconfig --levels 235 sendmail off
chkconfig --levels 235 postfix on
/etc/init.d/sendmail stop
/etc/init.d/postfix restart


13 Installation von Getmail

Getmail kann folgendermaßen installiert werden:

yum install getmail


14 Installation von Amavisd-new, SpamAssassin und ClamAV

Um amavisd-new, spamassassin und clamav zu installieren, benutzen Sie folgenden Befehl:

yum install amavisd-new spamassassin clamav clamd
unzip bzip2 unrar perl-DBD-mysql

Danach starten Sie freshclam, amavisd und clamd.amavisd:

sa-update
chkconfig --levels 235 amavisd on
chkconfig --del clamd
chkconfig --levels 235 clamd.amavisd on
/usr/bin/freshclam
/etc/init.d/amavisd start
/etc/init.d/clamd.amavisd start


15 Installation von Nginx, PHP5 (PHP-FPM) und Fcgiwrap

Nginx ist als Paket für CentOS 6.1 verfügbar (aus EPEL) und kann folgendermaßen installiert werden:

yum install nginx

Sollte bereits Apache2 auf dem System installiert sein, stoppen Sie es jetzt...

/etc/init.d/httpd stop

... und entfernen Apaches Systemstartlinks:

chkconfig --del httpd

Erstellen Sie dann die Systemstartlinks für nginx und starten es:

chkconfig --levels 235 nginx on
/etc/init.d/nginx start

(Sind sowohl Apache2 als auch nginx installiert, wird Sie der ISPConfig 3 Installer fragen, welches der beiden Sie benutzen wollen - antworten Sie in diesem Fall nginx. Ist nur eines der beiden installiert, wird ISPConfig die nötige Konfiguratioin automatisch vornehmen.)

PHP5 lässt sich in nginx mit PHP-FPM benutzen (PHP-FPM (FastCGI Process Manager) ist eine alternative PHP FastCGI Implementierung mit einigen zusätzlichen, für Seiten jeder Größenordnung nützlichen Features, vor allem aber für ausgelastetere Seiten). Sie können php-fpm zusammen mit php-cli und einigen PHP5 Modulen wie php-mysql, welche Sie brauchen um von Ihren PHP Skripts auf MySQL zuzugreifen, folgendermaßen installieren:

yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

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

vi /etc/php.ini

..., ändern Sie die Fehlerberichterstattung (sodass keine Nachrichten mehr angezeigt werden) und entkommentieren Sie cgi.fix_pathinfo=1:
[...]
;error_reporting = E_ALL & ~E_DEPRECATED error_reporting = E_ALL & ~E_NOTICE [...]
Setzen Sie auch cgi.fix_pathinfo=0:

vi /etc/php.ini


[...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...]
(Lesen Sie bitte http://wiki.nginx.org/Pitfalls um zu erfahren, warum dies empfehlenswert ist.)

Zusätzlich sollten Sie date.timezone in /etc/php.ini setzen, um Fehler wie

[08-Aug-2011 18:07:08] PHP Warning: phpinfo(): It is
not safe to rely on the system's timezone settings. You are *required*
to use the date.timezone setting or the date_default_timezone_set()
function. In case you used any of those methods and you are still
getting this warning, you most likely misspelled the timezone
identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in
/usr/share/nginx/html/info.php on line 2

im /var/log/php-fpm/www-error.log zu vermeiden wenn Sie ein PHP Skript im Browser aufrufen.
[...]
[Date] ; Defines the default timezone used by the date functions ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = "Europe/Berlin" [...]
Sie können die richtige Zeitzone für Ihr System durch folgenden Befehl bestimmen:

cat /etc/sysconfig/clock

[root@server1 tmp]# cat /etc/sysconfig/clock
ZONE="Europe/Berlin"
[root@server1 tmp]#

Erstellen Sie dann die Systemstartlinks für php-fpm und starten es:

chkconfig --levels 235 php-fpm on
/etc/init.d/php-fpm start

PHP-FPM ist ein Daemon-Prozess (mit dem init-Script /etc/init.d/php-fpm), der einen FastCGI Server auf dem Port 9000 betreibt.

Um CGI Unterstützung auf nginx zu erhalten, installieren Sie Fcgiwrap.

Fcgiwrap ist ein CGI Wrapper, der auch für komplexere CGI Skripts funktionieren sollte und für Shared Hosting Environments eingesetzt werden kann, da es jedem vhost erlaubt, sein eigenes cgi-bin Verzeichnis zu benutzen.

Da es kein fcgiwrap Paket für CentOS 6.1 gibt, müssen Sie dies selbst bauen. Installieren Sie zuerst einige vorausgesetzte Pakete:

yum install fcgi-devel

Nun können Sie fcgiwrap wie folgt bauen:

cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make install

Dies installiert fcgiwrap nach /usr/local/sbin/fcgiwrap.

Als nächstes installieren Sie das spawn-fcgi Paket, welches es erlaubt, fcgiwrap als Daemon laufen zu lassen:

yum install spawn-fcgi

Öffnen Sie /etc/sysconfig/spawn-fcgi...

vi /etc/sysconfig/spawn-fcgi

... und modifizieren Sie die Datei wie folgt:
# You must set some working options before the "spawn-fcgi" service will work.
# If SOCKET points to a file, then this file is cleaned up by the init script. # # See spawn-fcgi(1) for all possible options. # # Example : #SOCKET=/var/run/php-fcgi.sock #OPTIONS="-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi" FCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=apache FCGI_GROUP=apache FCGI_EXTRA_OPTIONS="-M 0770" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM"
Fügen Sie dann den Benutzer nginx zur Gruppe apache hinzu:

usermod -a -G apache nginx

Erstellen Sie die Systemstartlinks für spawn-fcgi...

chkconfig --levels 235 spawn-fcgi on

... und starten es folgendermaßen:

/etc/init.d/spawn-fcgi start

Sie sollten nun den fcgiwrap Socket in/var/run/fcgiwrap.socket finden, zugehörig dem Benutzer und der Gruppe apache (einige Skripts, z.B. Mailman, erfordern es vom Benutzer / der Gruppe apache ausgeführt zu werden, deshalb starten wir spawn-fcgi nicht als Benutzer/Gruppe nginx, sondern fügen nginx der Gruppe apache hinzu).

16 Installation von phpMyAdmin

Installieren Sie nun phpMyAdmin:

yum install phpmyadmin

Ändern Sie dann die Authentifikation in phpMyAdmin von cookie zu http:

vi /usr/share/phpmyadmin/config.inc.php


[...]
/* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...]
Sie können phpMyAdmin nun im /usr/share/phpmyadmin/ Verzeichnis finden.

Nach der Installation von ISPConfig 3 können Sie folgendermaßen auf phpMyAdmin zugreifen:

Der ISPConfig apps vhost auf Port 8081 für nginx kommt mit einer phpMyAdmin Konfiguration, Sie können daher  http://server1.example.com:8081/phpmyadmin oder http://server1.example.com:8081/phpMyAdmin benutzen um auf phpMyAdmin zuzugreifen.

Wollen Sie ein /phpmyadmin oder /phpMyAdmin Alias einrichten, dass Sie von Ihren Webseiten aus benutzen können, ist dies etwas komplizierter als für Apache, da nginx keine globalen Aliase hat (also Aliase, welche für alle vhosts definiert werden können). Sie müssen Ihre Aliase deshalb für jeden vhost definieren, von dem aus Sie auf phpMyAdmin zugreifen wollen.

Um dies zu tun, fügen Sie folgendes in das nginx Directives Feld im Options Reiter der Webseite in ISPConfig ein:
 location /phpmyadmin {
root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; }
Benutzen Sie für Ihren vhost https statt http, sollten Sie die Zeile fastcgi_param HTTPS on; zu Ihrer phpMyAdmin Konfiguration hinzufügen:
 location /phpmyadmin {
root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS on; # <-- Fügen Sie diese Zeile hinzu fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; }
Benutzen Sie für Ihren vhost sowohl http als auch https, müssen Sie die folgende Sektion zur http {} Sektion in /etc/nginx/nginx.conf hinzufügen (vor jeglichen include Zeilen) welche überprüft, ob der Besucher http oder https benutzt und dementsprechend die $fastcgi_https Variable setzt (welche in der phpMyAdmin Konfiguration benutzt wird):

vi /etc/nginx/nginx.conf


[...]
http { [...] ## Detect when HTTPS is used map $scheme $fastcgi_https { default off; https on; } [...] } [...]
Vergessen SIe nicht, nginx danach neu zu starten:

/etc/init.d/nginx reload

Gehen Sie danach wieder in das nginx Directives Feld und anstatt der Zeile fastcgi_param HTTPS on; fügen Sie nun  fastcgi_param HTTPS $fastcgi_https; hinzu, sodass Sie phpMyAdmin sowohl für http als auch für https Anfragen benutzen können:
 location /phpmyadmin {
root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS $fastcgi_https; # <-- Fügen Sie diese Zeile hinzu fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; }

17 Installation von Mailman

Ab Version 3.0.4 unterstützt ISPConfig die Verwaltung von Mailman Mailinglisten (Erstellen/Modifizieren/Löschen). Wollen SIe von dieser Neuerung Gebrauch machen, installieren Sie Mailman wie folgt:

yum install mailman

Bevor Sie Mailman starten können, müssen Sie zunächst eine erste Mailingliste namens mailman erstellen:

/usr/lib/mailman/bin/newlist mailman

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Enter the email of the person running the list:
<-- Admin Email Adresse, z.B. info@example.com Initial mailman password: <-- Admin Password für die Mailman Liste To finish creating your mailing list, you must edit your /etc/aliases (or equivalent) file by adding the following lines, and possibly running the
`newaliases' program:

## mailman mailing list
mailman:              "|/usr/lib/mailman/mail/mailman post mailman"
mailman-admin:        "|/usr/lib/mailman/mail/mailman admin mailman"
mailman-bounces:      "|/usr/lib/mailman/mail/mailman bounces mailman"
mailman-confirm:      "|/usr/lib/mailman/mail/mailman confirm mailman"
mailman-join:         "|/usr/lib/mailman/mail/mailman join mailman"
mailman-leave:        "|/usr/lib/mailman/mail/mailman leave mailman"
mailman-owner:        "|/usr/lib/mailman/mail/mailman owner mailman"
mailman-request:      "|/usr/lib/mailman/mail/mailman request mailman"
mailman-subscribe:    "|/usr/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe:  "|/usr/lib/mailman/mail/mailman unsubscribe mailman"

Hit enter to notify mailman owner... <-- ENTER
[root@server1 tmp]#
Öffnen Sie danach /etc/aliases ...

vi /etc/aliases

... und fügen die folgenden Zeilen hinzu:
[...]
mailman: "|/usr/lib/mailman/mail/mailman post mailman" mailman-admin: "|/usr/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/usr/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/usr/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/usr/lib/mailman/mail/mailman join mailman" mailman-leave: "|/usr/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/usr/lib/mailman/mail/mailman owner mailman" mailman-request: "|/usr/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/usr/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe mailman"
Benutzen Sie dann

newaliases

und starten Postfix neu:

/etc/init.d/postfix restart

Erstellen Sie die Systemstartlinks für Mailman und starten es:

chkconfig --levels 235 mailman on
/etc/init.d/mailman start

Um Mailman mit ISPConfig kompatibel zu machen, müssen Sie folgenden Symlink erstellen:

cd /usr/lib/mailman/cgi-bin/
ln -s ./ mailman

Wollen Sie Mailman von Ihren mit ISPConfig erstellten Webseiten nutzen, ist dies mit nginx etwas komplizierter als mit Apache, da nginx keine globalen Aliase hat (also Aliase, welche für alle vhosts definiert werden können). Sie müssen Ihre Aliase deshalb für jeden vhost definieren, von dem aus Sie auf phpMyAdmin zugreifen wollen.

Um dies zu tun, fügen Sie folgendes in das nginx Directives Feld im Options Reiter der Webseite in ISPConfig ein:
 location /cgi-bin/mailman {
alias /usr/lib/mailman/cgi-bin; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/mailman$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED /usr/lib/mailman$fastcgi_path_info; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /images/mailman { alias /usr/lib/mailman/icons; } location /pipermail { alias /var/lib/mailman/archives/public; autoindex on; }
Dies definiert das Alias /cgi-bin/mailman/ für Ihren vhost, was bedeutet, dass Sie per http://<vhost>/cgi-bin/mailman/admin/<listname> für eine Liste auf die Mailman Administrator-Kontrolloberfläche
zugreifen können; die Webseite für Benutzer einer Mailingliste kann unter http://<vhost>/cgi-bin/mailman/listinfo/<listname> gefunden werden.

Unter http://<vhost>/pipermail können Sie die Mailinglisten-Archive finden.

18 Installation von PureFTPd

PureFTPd kann mit dem folgenden Befehl installiert werden:

yum install pure-ftpd

Erstellen Sie dann die Systemstartlinks und starten Sie PureFTPd:

chkconfig --levels 235 pure-ftpd on
/etc/init.d/pure-ftpd start

Sie müssen nun PureFTPd konfigurieren, um FTP und TLS Sitzungen zu erlauben. FTP ist ein sehr unsicheres Protokoll, weil alle Passwörter und Daten in reinem Text übertragen werden. Durch die Benutzung von TLS kann die gesamte Kommunikation verschlüsselt werden, um so FTP sehr viel sicherer zu machen.

Für TLS wird OpenSSL gebraucht; um dieses zu installieren benutzen sie einfach:

yum install openssl

Öffnen Sie /etc/pure-ftpd/pure-ftpd.conf...

vi /etc/pure-ftpd/pure-ftpd.conf

Wenn Sie FTP und TLS Sitzungen erlauben wollen, setzen Sie TLS auf 1::
[...]
# This option can accept three values : # 0 : disable SSL/TLS encryption layer (default). # 1 : accept both traditional and encrypted sessions. # 2 : refuse connections that don't use SSL/TLS security mechanisms, # including anonymous sessions. # Do _not_ uncomment this blindly. Be sure that : # 1) Your server has been compiled with SSL/TLS support (--with-tls), # 2) A valid certificate is in place, # 3) Only compatible clients will log in. TLS 1 [...]
Um TLS verwenden zu können, müssen Sie ein SSL Zertifikat erstellen. Ich erstelle es im /etc/ssl/private/ Verzeichnis, welches ich erst erstellen muss:

mkdir -p /etc/ssl/private/

Darauf folgend können Sie das SSL Zertifikat wie folgt generieren:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Country Name (2 letter code) [XX]: <-- Geben Sie den Namen Ihres Landes ein (z.B. "DE"). State or Province Name (full name) []: <-- Geben Sie den Namen Ihres Bundesstaates oder Ihrer Provinz ein. Locality Name (eg, city) [Default City]: <-- Geben Sie Ihre Stadt ein. Organization Name (eg, company) [Default Company Ltd]: <-- Geben Sie den Namen Ihrer Organisation ein (z.B. den Namen Ihrer Firma). Organizational Unit Name (eg, section) []: <-- Geben Sie Ihre Organisationsabteilung ein (z.B. "IT Department"). Common Name (eg, your name or your server's hostname) []: <-- Geben Sie den vollen Domainnamen Ihres Systems ein (z.B. "server1.example.com"). Email Address []: <-- Geben Sie Ihre Email Adresse ein.

Ändern Sie die Zugriffsberechtigungen des SSL Zertifikats folgendermaßen:

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

Starten Sie PureFTPd neu:

/etc/init.d/pure-ftpd restart

Sie können nun versuchen den FTP Client zur Verbindung zu benutzen, sollten diesen jedoch so konfigurieren, dass er TLS verwendet.

19 Installation von BIND

Installieren Sie BIND wie folgt:

yum install bind bind-utils

Öffnen Sie als nächstes /etc/sysconfig/named...

vi /etc/sysconfig/named

... und stellen Sie sicher, dass die Zeile ROOTDIR=/var/named/chroot auskommentiert ist:
# BIND named process options
# ~~~~~~~~~~~~~~~~~~~~~~~~~~ # Currently, you can use the following options: # # ROOTDIR="/var/named/chroot" -- will run named in a chroot environment. # you must set up the chroot environment # (install the bind-chroot package) before # doing this. # NOTE: # Those directories are automatically mounted to chroot if they are # empty in the ROOTDIR directory. It will simplify maintenance of your # chroot environment. # - /var/named # - /etc/pki/dnssec-keys # - /etc/named # - /usr/lib64/bind or /usr/lib/bind (architecture dependent) # # Those files are mounted as well if target file doesn't exist in # chroot. # - /etc/named.conf # - /etc/rndc.conf # - /etc/rndc.key # - /etc/named.rfc1912.zones # - /etc/named.dnssec.keys # - /etc/named.iscdlv.key # # Don't forget to add "$AddUnixListenSocket /var/named/chroot/dev/log" # line to your /etc/rsyslog.conf file. Otherwise your logging becomes # broken when rsyslogd daemon is restarted (due update, for example). # # OPTIONS="whatever" -- These additional options will be passed to named # at startup. Don't add -t here, use ROOTDIR instead. # # KEYTAB_FILE="/dir/file" -- Specify named service keytab file (for GSS-TSIG) # # DISABLE_ZONE_CHECKING -- By default, initscript calls named-checkzone # utility for every zone to ensure all zones are # valid before named starts. If you set this option # to 'yes' then initscript doesn't perform those # checks.
Erstellen Sie ein Backup der /etc/named.conf Datei und legen Sie folgendermaßen eine neue an:

cp /etc/named.conf /etc/named.conf_bak
cat /dev/null > /etc/named.conf
vi /etc/named.conf


//
// named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { any; }; listen-on-v6 port 53 { any; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; recursion yes; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.conf.local";
Erstellen Sie die Datei /etc/named.conf.local, welche am Ende von /etc/named.conf integriert ist (/etc/named.conf.local wird später von ISPConfig benutzt werden, wenn Sie mit ISPConfig DNS Zonen erstellen):

touch /etc/named.conf.local

Dann erstellen Sie die Systemstartlinks und starten BIND:

chkconfig --levels 235 named on
/etc/init.d/named start


20 Installation von Vlogger, Webalizer und AWStats

Vlogger, webalizer und AWStats können folgendermaßen installiert werden:

yum install webalizer awstats
perl-DateTime-Format-HTTP perl-DateTime-Format-Builder

cd /tmp
wget http://n0rp.chemlab.org/vlogger/vlogger-1.3.tar.gz
tar xvfz vlogger-1.3.tar.gz
mv vlogger-1.3/vlogger /usr/sbin/
rm -rf vlogger*


21 Installation von Jailkit

Jailkit wird nur benötigt wenn sie chroot auf SSH Benutzer anwenden möchten. Es kann wie folgt installiert werden (wichtig: Jailkit muss vor ISPConfig installiert werden - es kann nicht im nachhinein installiert werden!):

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*


22 Installation von fail2ban

Diese Installation ist nicht notwendig, jedoch empfohlen, da der ISPConfig Monitor versucht, den Verlauf anzuzeigen:

yum install fail2ban

Fail2ban muss so konfiguriert werden, dass es seine Logs in die Datei /var/log/fail2ban.log schreibt, da diese Datei vom ISPConfig Monitor-Modul überwacht wird. Öffnen Sie /etc/fail2ban/fail2ban.conf...

vi /etc/fail2ban/fail2ban.conf

... kommentieren Sie die Zeile logtarget = SYSLOG aus und fügen Sie logtarget = /var/log/fail2ban.log hinzu:
[...]
# Option: logtarget # Notes.: Set the log target. This could be a file, SYSLOG, STDERR or STDOUT. # Only one log target can be specified. # Values: STDOUT STDERR SYSLOG file Default: /var/log/fail2ban.log # #logtarget = SYSLOG logtarget = /var/log/fail2ban.log [...]
Erstellen Sie dann die Systemstartlinks für fail2ban und starten es:

chkconfig --levels 235 fail2ban on
/etc/init.d/fail2ban start


23 Installation von rkhunter

rkhunter kann folgendermaßen installiert werden:

yum install rkhunter


24 Installation von SquirrelMail

Um den SquirrelMail Webmail Client zu installieren, benutzen Sie...

yum install squirrelmail

Konfigurieren Sie dann SquirrelMail:

/usr/share/squirrelmail/config/conf.pl

SquirrelMail muss wissen, dass Courier-IMAP/-POP3 verwendet wird:

SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color off
S   Save data
Q   Quit

Command >> <-- D
SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don't work so
well with others.  If you select your IMAP server, this option will
set some pre-defined settings for that server.

Please note that you will still need to go through and make sure
everything is correct.  This does not change everything.  There are
only a few settings that this will change.

Please select your IMAP server:
bincimap    = Binc IMAP server
courier     = Courier IMAP server
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          = University of Washington's IMAP server
gmail       = IMAP access to Google mail (Gmail) accounts

quit        = Do not change anything
Command >> <-- courier
SquirrelMail Configuration : Read: config.php
---------------------------------------------------------
While we have been building SquirrelMail, we have discovered some
preferences that work better with some servers that don't work so
well with others.  If you select your IMAP server, this option will
set some pre-defined settings for that server.

Please note that you will still need to go through and make sure
everything is correct.  This does not change everything.  There are
only a few settings that this will change.

Please select your IMAP server:
bincimap    = Binc IMAP server
courier     = Courier IMAP server
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          = University of Washington's IMAP server
gmail       = IMAP access to Google mail (Gmail) accounts

quit        = Do not change anything
Command >> courier

imap_server_type = courier
default_folder_prefix = INBOX.
trash_folder = Trash
sent_folder = Sent
draft_folder = Drafts
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = .
delete_folder = true

Press enter to continue... <-- ENTER
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color off
S   Save data
Q   Quit

Command >> <--S
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database
10. Languages

D.  Set pre-defined settings for specific IMAP servers

C   Turn color off
S   Save data
Q   Quit

Command >> <--Q
Eine letzte Einstellung, die Sie vornehmen müssen, ist das Auskommentieren der $default_folder_prefix Variable in der /etc/squirrelmail/config_local.php Datei - tun Sie dies nicht, werden Sie die folgende Fehlermeldung in SquirrelMail sehen, nachdem Sie sich angemeldet haben: Query: CREATE "Sent" Reason Given: Invalid mailbox name.

vi /etc/squirrelmail/config_local.php


<?php
 /** * Local config overrides. * * You can override the config.php settings here. * Don't do it unless you know what you're doing. * Use standard PHP syntax, see config.php for examples. * * @copyright &copy; 2002-2006 The SquirrelMail Project Team * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id: config_local.php,v 1.2 2006/07/11 03:33:47 wtogami Exp $ * @package squirrelmail * @subpackage config */ //$default_folder_prefix = ''; ?>
Sie können SquirrelMail nun im /usr/share/squirrelmail/ Verzeichnis finden.

Nachdem Sie ISPConfig 3 installiert haben, können Sie folgendermaßen auf SquirrelMail zugreifen:

Der ISPConfig apps vhost auf Port 8081 für nginx kommt mit einer SquirrelMail Konfiguration, Sie können daher  http://server1.example.com:8081/squirrelmail oder http://server1.example.com:8081/webmail benutzen um auf SquirrelMail zuzugreifen.

Wollen Sie ein /webmail oder /squirrelmail Alias einrichten, das Sie von Ihren Webseiten aus benutzen können, so ist dies etwas komplizierter als für Apache, da nginx keine globalen Aliase hat (also Aliase, welche für alle vhosts definiert werden können). Sie müssen Ihre Aliase deshalb für jeden vhost definieren, von dem aus Sie auf phpMyAdmin zugreifen wollen.

Um dies zu tun, fügen Sie folgendes in das nginx Directives Feld im Options Reiter der Webseite in ISPConfig ein:
 location /squirrelmail {
root /usr/share/; index index.php index.html index.htm; location ~ ^/squirrelmail/(.+.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/squirrelmail/(.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /webmail { rewrite ^/* /squirrelmail last; }
Benutzen Sie für Ihren vhost https statt http, sollten Sie die Zeile fastcgi_param HTTPS on; zu Ihrer SquirrelMail Konfiguration hinzufügen:
 location /squirrelmail {
root /usr/share/; index index.php index.html index.htm; location ~ ^/squirrelmail/(.+.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS on; # <-- Fügen Sie diese Zeile hinzu fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/squirrelmail/(.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /webmail { rewrite ^/* /squirrelmail last; }
Benutzen Sie für Ihren vhost sowohl http als auch https, müssen Sie die folgende Sektion zur http {} Sektion in /etc/nginx/nginx.conf hinzufügen (vor jeglichen include Zeilen) welche überprüft, ob der Besucher http oder https benutzt und dementsprechend die $fastcgi_https Variable setzt (welche in der SquirrelMail Konfiguration benutzt wird) (beachten Sie bitte, dass Sie dies nicht mehr tun müssen, wenn Sie die Sektion bereits hinzugefügt haben, zum Beispiel bei der Konfiguration von phpMyAdmin - siehe Kapitel 16):

vi /etc/nginx/nginx.conf


[...]
http { [...] ## Detect when HTTPS is used map $scheme $fastcgi_https { default off; https on; } [...] } [...]
Vergessen Sie nicht, danach nginx neu zu starten:

/etc/init.d/nginx reload

Gehen Sie danach wieder in das nginx Directives Feld und anstatt der Zeile fastcgi_param HTTPS on; fügen Sie nun  fastcgi_param HTTPS $fastcgi_https; hinzu, sodass Sie SquirrelMail sowohl für http als auch für https Anfragen benutzen können:
 location /squirrelmail {
root /usr/share/; index index.php index.html index.htm; location ~ ^/squirrelmail/(.+.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS $fastcgi_https; # <-- Fügen Sie diese Zeile hinzu fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/squirrelmail/(.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /webmail { rewrite ^/* /squirrelmail last; }

25 Installation von ISPConfig 3

Bevor Sie mit der Installation von ISPConfig beginnen, stellen Sie sicher, dass Apache gestoppt ist (falls es installiert ist - es ist möglich, dass einige installierte Pakete Apache als vorausgesetztes Paket mitinstalliert haben, ohne, dass Sie dies gemerkt hätten). Ist Apache2 installiert, stoppen Sie es jetzt...

/etc/init.d/httpd stop

... und entfernen die Apache Systemstartlinks:

chkconfig --del httpd

Stellen Sie sicher, dass nginx gestartet ist:

/etc/init.d/nginx restart

(Haben Sie sowohl Apache als auch nginx installiert, wird Sie der Installer fragen, welches davon Sie benutzen möchten: Apache and nginx detected. Select server to use for ISPConfig: (apache,nginx) [apache]:
Geben Sie hier nginx ein. Ist nur Apache oder nur nginx installiert wird dies automatisch vom Installer erkannt und es werden keine Fragen gestellt.)

Laden Sie die aktuelle Version von ISPConfig 3 herunter und installieren Sie. Der ISPConfig Installer wird alle Dienste wie Postfix, Courier, etc. für Sie konfigurieren. Manuelle Einstellungen wie in ISPConfig 2 sind nicht mehr notwendig.

Sie haben nun außerdem die Möglichkeit, den Installer einen SSL vhost für die ISPConfig Kontrolloberfläche erstellen zu lassen, sodass ISPConfig durch https:// anstatt von http:// erreichbar ist. Um dies zu bewerkstelligen, drücken Sie einfach ENTER, wenn Sie diese Frage sehen: Do you want a secure(SSL) connection to the ISPConfig web interface (y,n) [y]:.

Um die aktuellste Version von ISPConfig 3 zu installieren, führen Sie folgendes aus:

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

Als nächstes benutzen Sie folgenden Befehl:

php -q install.php

Dieser wird den ISPConfig 3 Installer starten:

[root@server1 install]# php -q install.php
--------------------------------------------------------------------------------
_____ ___________   _____              __ _         ____
|_   _/  ___| ___  /  __             / _(_)       /__
| |  `--.| |_/ / | /  / ___  _ __ | |_ _  __ _    _/ /
| |  `--.   __/  | |    / _ | '_ |  _| |/ _` |  |_ |
_| |_/__/ / |     | __/ (_) | | | | | | | (_| | ___
___/____/_|      ____/___/|_| |_|_| |_|__, | ____/
__/ |
|___/
--------------------------------------------------------------------------------

>> Initial configuration

Operating System: Redhat or compatible, unknown version.

Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with <ENTER>.
Tap in "quit" (without the quotes) to stop the installer.

Select language (en,de) [en]: <-- ENTER
Installation mode (standard,expert) [standard]: <-- ENTER
Full qualified hostname (FQDN) of the server, eg server1.domain.tld  [server1.example.com]: <-- ENTER
MySQL server hostname [localhost]: <-- ENTER
MySQL root username [root]: <-- ENTER
MySQL root password []: <-- IhrrootsqlPasswort
MySQL database to create [dbispconfig]: <-- ENTER
MySQL charset [utf8]: <-- ENTER
Apache and nginx detected. Select server to use for ISPConfig: (apache,nginx) [apache]: <-- nginx
Generating a 2048 bit RSA private key
....+++
.................................+++
writing new private key to 'smtpd.key'
-----
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) [XX]:
<-- ENTER State or Province Name (full name) []: <-- ENTER Locality Name (eg, city) [Default City]: <-- ENTER Organization Name (eg, company) [Default Company Ltd]: <-- ENTER Organizational Unit Name (eg, section) []: <-- ENTER Common Name (eg, your name or your server's hostname) []: <-- ENTER Email Address []: <-- ENTER Configuring Jailkit
Configuring SASL
Configuring PAM
Configuring Courier
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring BIND
Configuring nginx
Configuring Vlogger
Configuring Apps vhost
Configuring Bastille Firewall
Configuring Fail2ban
Installing ISPConfig
ISPConfig Port [8080]:
<-- ENTER
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: <-- ENTER
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) [XX]:
<-- ENTER State or Province Name (full name) []: <-- ENTER Locality Name (eg, city) [Default City]: <-- ENTER Organization Name (eg, company) [Default Company Ltd]: <-- ENTER Organizational Unit Name (eg, section) []: <-- ENTER Common Name (eg, your name or your server's hostname) []: <-- ENTER Email Address []: <-- ENTER
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
<-- ENTER An optional company name []: <-- ENTER writing RSA key
Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Restarting services ...
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]
Shutting down postfix:                                     [  OK  ]
Starting postfix:                                          [  OK  ]
Stopping saslauthd:                                        [FAILED]
Starting saslauthd:                                        [  OK  ]
Shutting down amavisd: Daemon [1503] terminated by SIGTERM
[  OK  ]
amavisd stopped
Starting amavisd:                                          [  OK  ]

Stopping clamd.amavisd:                                    [  OK  ]
Starting clamd.amavisd:                                    [  OK  ]
Stopping Courier authentication services: authdaemond
Starting Courier authentication services: authdaemond
Stopping Courier-IMAP server: imap imap-ssl pop3 pop3-ssl
Starting Courier-IMAP server: imap imap-ssl pop3 pop3-ssl
Stopping Courier-IMAP server: imap imap-ssl pop3 pop3-ssl
Starting Courier-IMAP server: imap imap-ssl pop3 pop3-ssl
Stopping Courier-IMAP server: imap imap-ssl pop3 pop3-ssl
Starting Courier-IMAP server: imap imap-ssl pop3 pop3-ssl
Stopping Courier-IMAP server: imap imap-ssl pop3 pop3-ssl
Starting Courier-IMAP server: imap imap-ssl pop3 pop3-ssl
SyntaxError: ('invalid syntax', ('/usr/lib/mailman/Mailman/mm_cfg.py', 76, 27, 'DEFAULT_SERVER_LANGUAGE = n'))

Traceback (most recent call last):
File "/usr/lib/mailman/bin/mailmanctl", line 109, in <module>
from Mailman import mm_cfg
File "/usr/lib/mailman/Mailman/mm_cfg.py", line 76
DEFAULT_SERVER_LANGUAGE =
^
SyntaxError: invalid syntax
Shutting down mailman:                                     [FAILED]
SyntaxError: ('invalid syntax', ('/usr/lib/mailman/Mailman/mm_cfg.py', 76, 27, 'DEFAULT_SERVER_LANGUAGE = n'))

Traceback (most recent call last):
File "/usr/lib/mailman/bin/mailmanctl", line 109, in <module>
from Mailman import mm_cfg
File "/usr/lib/mailman/Mailman/mm_cfg.py", line 76
DEFAULT_SERVER_LANGUAGE =
^
SyntaxError: invalid syntax
Starting mailman:                                          [FAILED]
Reloading php-fpm:                                         [  OK  ]
Reloading nginx:                                           [  OK  ]
Stopping pure-ftpd:                                        [  OK  ]
Starting pure-ftpd:                                        [  OK  ]
Installation completed.
[root@server1 install]#

Um die Mailman Fehler zu beheben, die während der Installation
auftreten könnten, öffnen Sie /usr/lib/mailman/Mailman/mm_cfg.py...

vi /usr/lib/mailman/Mailman/mm_cfg.py

... und setzen Sue DEFAULT_SERVER_LANGUAGE =
'en'
:
[...]
#------------------------------------------------------------- # The default language for this server. DEFAULT_SERVER_LANGUAGE = 'en' [...]
Starten Sie Mailman danach neu:

/etc/init.d/mailman restart

Sie können ISPConfig 3 danach unter http(s)://server1.example.com:8080/ oder http(s)://192.168.0.100:8080/ (http oder https ist abhängig davon, wofür Sie sich während der Installation entschieden haben). Loggen Sie sich mit dem Benutzernamen admin und dem Passwort admin (Sie sollten das Standartpasswort nach Ihrer ersten Anmeldung ändern):



Das System kann nun benutzt werden.

26 Links