CentOS 4.6 Server Setup: LAMP, Email, DNS, FTP, ISPConfig (auch bekannt als Der Perfekte Server)

Version 1.0
Author: Falko Timme


Diese Anleitung veranschaulicht, wie man einen CentOS 4.6 basierten Server einrichtet, der alle Dienste bietet, die von ISPs und Web Hostern benötigt werden: Apache Web Server (SSL-fähig), Postfix Mail Server mit SMTP-AUTH und TLS, BIND DNS Server, Proftpd FTP Server, MySQL Server, Dovecot POP3/IMAP, Quota, Firewall, etc. Diese Anleitung ist für die 32-bit Version von CentOS 4.6 geschrieben worden, sollte aber auch mit geringfügigen Änderungen auf die 64-bit Version zutreffen.

Folgende Software werde ich verwenden:
  • Web Server: Apache 2.0.x
  • Database Server: MySQL 4.1
  • Mail Server: Postfix
  • DNS Server: BIND9 (chrooted!)
  • FTP Server: proftpd
  • POP3/IMAP server: dovecot
  • Webalizer für Webseiten Statistik
Im Endeffekt solltest Du ein System erhalten, das verlässlich arbeitet. Wenn Du möchtest, kannst Du das kostenlose Webhosting Control Panel ISPConfig installieren.

Allerdings möchte ich an dieser Stelle darauf hinweisen, dass dies hier nicht der einzige Weg ist, ein solches System zu installieren. Es gibt viele Möglichkeiten - ich selbst habe mich für diese entschieden. Ich kann aber nicht garantieren, dass diese Lösung bei jedem funktioniert bzw. für jeden die richtige ist!

Was Du Benötigst

Um ein solches System zu installieren, brauchst Du Folgendes:

1 Installation Des Basissystems

Starte von Deiner CentOS 4.6 DVD oder CD (CD 1).


Es kann sehr lange dauern, die Installationsmedien zu testen, überspringe daher diesen Test:


Der Willkommens-Bildschirm des CentOS Installers erscheint. Klicke auf Next:


Wähle als Nächstes eine Sprache aus:


Wähle ein Tastaturlayout:


Wir möchten einen Server installieren, also wählen wir Server hier:


Als Nächstes erfolgt das Partitionieren. Wähle Automatically partition. Das ergibt eine kleine /boot Partition und eine große / Partition, was für unsere Zwecke bestens geeignet ist:


Ich installiere CentOS 4.6 auf einem neu aufgesetzten System, also antworte ich Yes auf die Frage Would you like to initialize this drive, erasing ALL DATA?


Wähle Remove all partitions on this system.



Wir möchten alle Linux Partitionen entfernen, also antworte ich mit Yes auf folgende Frage:


Der Installer präsentiert Dir einen Überblick über Deine neuen Partitionen. Klicke auf Next:


Nun wird der Boot Loader GRUB installiert. Wir können die Standardeinstellungen unverändert lassen und klicken auf Next:


Weiter mit den Netzwerkeinstellungen. Die Standardeinstellung ist, das Netzwerk Interface mit DHCP zu konfigurieren, jedoch installieren wir einen Server, statische IP Adressen sind also keine schlechte Idee... Klicke oben rechts auf Edit. Entferne in dem Fenster, das sich öffnet, die Markierung von Configure using DHCP und weise Deiner Netzwerkkarte eine statische IP Adresse zu (in dieser Anleitung verwende ich die IP Adresse 192.168.0.100 für Demonstrationszwecke):



Richte den Hostnamen manuell ein, z.B. server1.example.com , gib ein Gateway (z.B. 192.168.0.1) ein und bis zu drei DNS Server (z.B. 213.191.92.86, 145.253.2.75 und 193.174.32.18):


Am Ende dieser Anleitung möchte ich ISPConfig installieren, das seine eigene Firewall hat. Daher deaktiviere ich jetzt die Standard-Firewall von CentOS. Natürlich kannst Du sie auch aktiviert lassen und nach Deinen Wünschen konfigurieren (aber dann solltest Du später keine andere Firewall verwenden, da diese höchstwahrscheinlich die CentOS Firewall beeinflusst).

SELinux ist eine Erweiterung von CentOS, die eine erweiterte Sicherheit bieten sollte. Meiner Meinung nach brauchst Du es nicht um ein sicheres System zu konfigurieren. Es verursacht für gewöhnlich mehr Probleme als dass es Vorteile bringt.


Klicke auf Proceed:


Wähle die Standard-Sprache für das System und füge, falls notwendig, weitere Sprachen hinzu:


Wähle Deine Zeitzone:



Weise root ein Passwort zu:


Nun wählen wir die Paketgruppen aus, die wir installieren möchten. Wähle Editors, Text Based Internet, Server Configuration Tools, Web Server, Mail Server, DNS Name Server, FTP Server, MySQL Database, Development Tools, Administration Tools und System Tools und klicke auf Next:


Klicke auf Next um die Installation zu starten:


Die Festplatte wird partitioniert:


Die Installation startet. Das wird ein paar Minuten dauern:


Schließlich ist die Installation abgeschlossen und Du kannst Deine CD entfernen und neu starten:


Weiter mit der Konfiguration...

2 Anpassen Von /etc/hosts

Als Nächstes bearbeiten wir /etc/hosts. So soll es aussehen:

vi /etc/hosts


# Do not remove the following line, or various programs
# that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1

3 Konfiguriere Zusätzliche IP Adressen

(Dieses Kapitel ist völlig optional. Es veranschaulicht nur, wie man zusätzliche IP Adressen dem Netzwerk Interface eth0 hinzufügt, wenn Du mehr als eine IP Adresse brauchst. Wenn Dir eine IP Adresse reicht, kannst Du dieses Kapitel überspringen.)

Lass uns davon ausgehen, dass unser Netzwerk Interface eth0 ist. Dann gibt es eine Datei /etc/sysconfig/network-scripts/ifcfg-eth0, die wie folgt aussieht:

cat /etc/sysconfig/network-scripts/ifcfg-eth0


DEVICE=eth0
BOOTPROTO=static BROADCAST=192.168.0.255 HWADDR=00:0C:29:CD:66:08 IPADDR=192.168.0.100 NETMASK=255.255.255.0 NETWORK=192.168.0.0 ONBOOT=yes TYPE=Ethernet
Nun möchten wir das virtuelle Interface eth0:0 mit der IP Adresse 192.168.0.101 erstellen. Dazu müssen wir nur die Datei /etc/sysconfig/network-scripts/ifcfg-eth0:0 erstellen, die wie folgt aussieht (wir können die HWADDR Zeile auslassen, da es die gleiche physikaliche Netzwerkkarte ist):

vi /etc/sysconfig/network-scripts/ifcfg-eth0:0


DEVICE=eth0:0
BOOTPROTO=static BROADCAST=192.168.0.255 IPADDR=192.168.0.101 NETMASK=255.255.255.0 NETWORK=192.168.0.0 ONBOOT=yes TYPE=Ethernet
Danach müssen wir das Netzwerk neu starten:

/etc/init.d/network restart

Du möchtest vielleich außerdem /etc/hosts anpassen, nachdem Du neue IP Adressen hinzugefügt hast, obwohl das nicht notwendig ist.

Lass nun dies laufen

ifconfig

Du müsstest nun Deine neue IP Adresse in der Ausgabe sehen:

[root@server1 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:CD:66:08
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fecd:6608/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:373 errors:0 dropped:0 overruns:0 frame:0
TX packets:385 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:31529 (30.7 KiB) TX bytes:64449 (62.9 KiB)
Interrupt:177 Base address:0x1400

eth0:0 Link encap:Ethernet HWaddr 00:0C:29:CD:66:08
inet addr:192.168.0.101 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:177 Base address:0x1400

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:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)

[root@server1 ~]#

4 Konfiguriere Die Firewall

(Wenn Du die Firewall bereits während der Installation des Basissystems deaktiviert hast, kannst Du dieses Kapitel überspringen.)

Ich möchte am Ende dieser Anleitung ISPConfig installieren, das seine eigene Firewall hat. Daher deaktiviere ich nun die Standard-Firewall von CentOS. Natürlich kannst Du sie auch aktiviert lassen und nach Wunsch konfigurieren (jedoch solltest Du dann später keine andere Firewall verwenden, da sie höchstwahrscheinlich die Firewall von CentOS beeinflussen wird).

Lass Folgendes laufen

system-config-securitylevel


Wähle Disabled und drücke OK.

Um zu überprüfen, ob die Firewall tatsächlich deaktiviert wurde, kannst Du dies laufen lassen

iptables -L

Die Ausgabe sollte wie folgt 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 ~]#

5 Deaktiviere SELinux

(Wenn Du SELinux bereits während der Installation des Basissystems deaktiviert hast, kannst Du dieses Kapitel überspringen.)

SELinux ist eine Erweiterung von CentOS, die eine erweiterte Sicherheit bieten sollte. Meiner Meinung nach brauchst Du es nicht um ein sicheres System zu konfigurieren. Es verursacht für gewöhnlich mehr Probleme als dass es Vorteile bringt. Daher deaktiviere ich es (das ist ein MUSS wenn Du ISPConfig später installieren möchtest).

Bearbeite /etc/selinux/config und setze 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 - SELinux is fully disabled. SELINUX=disabled # SELINUXTYPE= type of policy in use. Possible values are: # targeted - Only targeted network daemons are protected. # strict - Full SELinux protection. SELINUXTYPE=targeted
Danach müssen wir das System neu starten:

reboot


6 Installation Einiger Softwarepakete

Zunächst importieren wir die GPG Keys für die Softwarepakete:

rpm --import /usr/share/rhn/RPM-GPG-KEY*

Dann aktualisieren wir unsere vorhandenen Pakete auf dem System:

yum update

Nun installieren wir einige Softwarepakete, die wir später noch brauchen werden:

yum install fetchmail wget bzip2 unzip zip nmap openssl lynx fileutils gcc gcc-c++

7 Quota

Um Quota zu installieren, lassen wir folgenden Befehl laufen:

yum install quota

Bearbeite /etc/fstab und füge ,usrquota,grpquota der / Partition (/dev/VolGroup00/LogVol00) hinzu:

vi /etc/fstab


# This file is edited by fstab-sync - see 'man fstab-sync' for details
/dev/VolGroup00/LogVol00 / ext3 defaults,usrquota,grpquota 1 1 LABEL=/boot /boot ext3 defaults 1 2 none /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 /dev/VolGroup00/LogVol01 swap swap defaults 0 0 /dev/hdc /media/cdrecorder auto pamconsole,exec,noauto,managed 0 0 /dev/fd0 /media/floppy auto pamconsole,exec,noauto,managed 0 0
Lass dann folgendes laufen

touch /aquota.user /aquota.group
chmod 600 /aquota.*
mount -o remount /
quotacheck -avugm
quotaon -avug

um Quota zu aktivieren.

8 Installation Eines Chrooted DNS Servers (BIND9)

Um einen chrooted BIND9 zu installieren, führen wir Folgendes aus:

yum install bind-chroot

Führe dann dies aus:

chmod 755 /var/named/
chmod 775 /var/named/chroot/
chmod 775 /var/named/chroot/var/
chmod 775 /var/named/chroot/var/named/
chmod 775 /var/named/chroot/var/run/
chmod 777 /var/named/chroot/var/run/named/
cd /var/named/chroot/var/named/
ln -s ../../ chroot
chkconfig --levels 235 named on
/etc/init.d/named start

BIND wird in einem chroot Gefängnis unter /var/named/chroot/var/named/ laufen. Ich werde ISPConfig verwenden um BIND (Zonen, etc.) zu konfigurieren.

9 MySQL (4.1)

Um MySQL zu installieren, führen wir Folgendes aus:

yum install mysql mysql-devel mysql-server

Das MySQL Init Skript auf CentOS kann einige Probleme verursachen wenn Du versuchst, MySQL neu zu starten. In einigen Fällen versucht es MySQL zu starten bevor alte MySQL Vorgänge abgeschlossen sind, was zu einem Fehler führt. Dazu bearbeiten wir den Neustart-Abschnitt von /etc/init.d/mysqld und fügen ein paar Sekunden Verzögerung zwischen den Abschluss und den Start von MySQL hinzu.

Bearbeite /etc/init.d/mysqld:

vi /etc/init.d/mysqld

und ändere diesen Abschnitt:
[...]
restart(){ stop start } [...]
sodass es wie folgt aussieht:
[...]
restart(){ stop sleep 3 start } [...]
Dies fügt eine Verzögerung von drei Sekunden zwischen dem Abschluss und Start von MySQL hinzu.

Dann erstellen wir die System Startup Links für MySQL (sodass MySQL automatisch startet wenn das System hochfährt) und starten den MySQL Server:

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

Überprüfe nun ob der Netzwerkbetrieb freigeschaltet ist. Lass dies laufen

netstat -tap | grep mysql

Ungefähr soetwas sollte Dir angezeigt werden:

[root@server1 ~]# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 3590/mysqld
[root@server1 ~]#

Wenn nicht, bearbeite /etc/my.cnf und kommentiere die Option skip-networking aus:

vi /etc/my.cnf


[...]
#skip-networking [...]
und starte Deinen MySQL Server neu:

/etc/init.d/mysqld restart

Lass Folgendes laufen

mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

um ein Passwort für den Benutzer Root einzurichten (sonst kann jeder auf Deine MySQL Datenbank zugreifen!).

10 Postfix Mit SMTP-AUTH Und TLS

Nun installieren wir Postfix und dovecot (dovecot wird unser POP3/IMAP Server sein):

yum install cyrus-sasl cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5 cyrus-sasl-plain postfix dovecot

Als Nächstes konfigurieren wir SMTP-AUTH und TLS:

postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'
postconf -e 'mynetworks = 127.0.0.0/8'

Wir müssen /usr/lib/sasl2/smtpd.conf bearbeiten, damit Postfix PLAIN und LOGIN Logins zulässt. Auf einem 64Bit Centos 4.6 musst Du stattdessen die Datei /usr/lib64/sasl2/smtpd.conf bearbeiten. So sollte es aussehen:

vi /usr/lib/sasl2/smtpd.conf


pwcheck_method: saslauthd
mech_list: plain login
Danach erstellen wir die Zertifikate für TLS:

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

openssl rsa -in smtpd.key -out smtpd.key.unencrypted


mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

Als Nächstes konfigurieren wir Postfix für TLS:

postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'

Dann richten wir den Hostnamen in unserer Postfix Installation ein (pass auf, dass Du server1.example.com mit Deinem eigenen Hostnamen ersetzt):

postconf -e 'myhostname = server1.example.com'

Nach diesen Konfigurationsschritten solltest Du eine /etc/postfix/main.cf die wie folgt aussieht (ich habe alle Kommentare entfernt):

cat /etc/postfix/main.cf


queue_directory = /var/spool/postfix
command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix mail_owner = postfix inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.2.10/samples readme_directory = /usr/share/doc/postfix-2.2.10/README_FILES smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination mynetworks = 127.0.0.0/8 smtpd_tls_auth_only = no smtp_use_tls = yes smtpd_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom myhostname = server1.example.com
Der CentOS' Dovecot Daemon bietet standardmäßig nur IMAP und IMAPs Dienste. Da wir aber auch POP3 und POP3s haben wollen, müssen wir Dovecot dementsprechend konfigurieren. Wir bearbeiten /etc/dovecot.conf und fügen die Zeile protocols = imap imaps pop3 pop3s ein:

vi /etc/dovecot.conf


[...]
# Base directory where to store runtime data. #base_dir = /var/run/dovecot/ # Protocols we want to be serving: # imap imaps pop3 pop3s protocols = imap imaps pop3 pop3s [...]
Starte nun Postfix, saslauthd und dovecot:

chkconfig --levels 235 sendmail off
chkconfig --levels 235 postfix on
chkconfig --levels 235 saslauthd on
chkconfig --levels 235 dovecot on
/etc/init.d/sendmail stop
/etc/init.d/postfix start
/etc/init.d/saslauthd start
/etc/init.d/dovecot start

Um herauszufinden, ob SMTP-AUTH und TLS richtig funktionieren, lassen wir folgenden Befehl laufen:

telnet localhost 25

Nachdem Du die Verbindung zu Deinem Postfix Mail Server eingerichtet hast, tippe

ehlo localhost

Wenn Du die Zeilen

250-STARTTLS

und

250-AUTH LOGIN PLAIN

siehst, ist alles in Ordnung.

[root@server1 ssl]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 server1.example.com ESMTP Postfix
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
quit
221 Bye
Connection closed by foreign host.
[root@server1 ssl]#

Gib ein

quit

um zur Kommandozeile des Systems zurückzukehren.

10.1 Maildir

Dovecot verwendet ein Maildir Format (nicht mbox), wenn Du also ISPConfig auf dem Server installierst, vergewissere Dich, dass Du Maildir unter Management -> Server -> Settings -> Email aktivierst. ISPConfig wird dann die notwendige Konfiguration vornehmen.

Wenn Du ISPConfig nicht installieren möchtest, musst Du Postfix konfigurieren, dass es E-Mails an eine Maildir des Benutzers sendet:

postconf -e 'home_mailbox = Maildir/'
postconf -e 'mailbox_command ='
/etc/init.d/postfix restart

11 Apache2 Mit PHP

Nun installieren wir Apache mit PHP (dies ist PHP 4.3.9; CentOS bietet keine PHP5 Pakete an):

yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel

Bearbeite dann /etc/httpd/conf/httpd.conf:

vi /etc/httpd/conf/httpd.conf

und ändere DirectoryIndex zu
[...]
DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl [...]
Konfiguriere nun Dein System so, dass Apache beim Hochfahren gestartet wird:

chkconfig --levels 235 httpd on

Starte Apache:

/etc/init.d/httpd start


11.1 PHP Global Deaktivieren

(Bitte überspringe dieses Kapitel, wenn Du nicht vorhast, ISPConfig auf diesem Server zu installieren!)

In ISPConfig wirst Du PHP pro Webseite konfigurieren, das heißt Du kannst festlegen, welche Webseite PHP Skripte laufen lassen kann und welche nicht. Das funktioniert nur, wenn PHP global deaktiviert ist, da sonst alle Webseiten in der Lage wären, PHP Skripte laufen zu lassen, egal was Du in ISPConfig festlegst.

Um PHP global zu deaktivieren, bearbeiten wir /etc/httpd/conf.d/php.conf und kommentieren die AddType Zeile aus:

vi /etc/httpd/conf.d/php.conf


#
# PHP is an HTML-embedded scripting language which attempts to make it # easy for developers to write dynamically generated webpages. # LoadModule php4_module modules/libphp4.so # # Cause the PHP interpreter to handle files with a .php extension. # #AddType application/x-httpd-php .php # AddType application/x-httpd-php-source .phps # # Add index.php to the list of files that will be served as directory # indexes. # DirectoryIndex index.php
Danach starten wir Apache neu:

/etc/init.d/httpd restart

12 ProFTPd

ISPConfig unterstützt proftpd besser als vsftpd, lass uns also nun vsftpd entfernen:

yum remove vsftpd

Da CentOS kein proftpd Paket hat, müssen wir die yum Paketdatenbank von einem Drittanbieter verwenden um es zu installieren:

cd /etc/yum.repos.d/
wget http://centos.karan.org/kbsingh-CentOS-Extras.repo
rpm --import http://centos.karan.org/RPM-GPG-KEY-karan.org.txt

Nun können wir proftpd installieren:

yum install proftpd

Lass uns nun System Startup Links von proftpd erstellen und es starten:

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

Erstelle dann die Datei /etc/pam.d/ftp mit folgendem Inhalt (sonst bist Du nicht in der Lage, Dich mit Systembenutzern einzuloggen, indem Du FTP verwendest):

vi /etc/pam.d/ftp


#%PAM-1.0
auth required pam_unix.so nullok account required pam_unix.so session required pam_unix.so
und starte proftpd neu:

/etc/init.d/proftpd restart


13 Webalizer

Um webalizer zu installieren, lass einfach Folgendes laufen

yum install webalizer


14 Synchronisation Der System-Uhr

Wenn Du möchtest, dass die System-Uhr mit einem NTP Server synchronisiert wird, führe Folgendes aus:

yum install ntp


chkconfig --levels 235 ntpd on
ntpdate 0.pool.ntp.org
/etc/init.d/ntpd start

15 Installation Einiger Perl Module

SpamAssassin ist bei ISPConfig mit enthalten und braucht ein paar Perl Module um zu funktionieren. Wir installieren die benötigten Perl Module mit einem einzigen Befehl:

yum install perl-DBI perl-Net-DNS perl-Digest-SHA1

Wir brauchen außerdem das Modul HTML::Parser. Wir könnten das CentOS Paket perl-HTML-Parser installieren, jedoch ist diese Version für die SpamAssasin Version, die bei ISPConfig enthalten ist, zu alt. Dies würde mit folgender Fehlermeldung bei der Installation von ISPConfig enden:

REQUIRED module out of date: HTML::Parser

Daher müssen wir das neuste HTML::Parser installieren, indem wir die Per Kommandozeile verwenden.

Lass folgenden Befehl laufen, um die Perl Kommandozeile zu starten:

perl -MCPAN -e shell

Falls Du die Perl Kommandozeile zum ersten Mal laufen lässt, werden Dir ein paar Fragen gestellt. In den meisten Fällen sind die Standardantworten in Ordnung. Da es kein ncftp Paket für CentOS gibt, kann die Perl Kommandozeile die Programme ncftpget und ncftp nicht finden. Du siehst etwas wie:

Warning: ncftpget not found in PATH
Where is your ncftpget program? []
Warning: ncftp not found in PATH
Where is your ncftp program? []

In beiden Fällen kannst Du ruhig ENTER drücken.

Bitte merke: Falls Du eine Firewall auf Deinem System laufen lässt, wirst Du sie ausschalten müssen, während Du mti der Perl Kommandozeile arbeitest, damit die Perl Kommandozeile die benötigten Module ohne größere Verzögerung abrufen kann. Du kannst sie danach wieder einschalten.

Gib nun folgenden Befehl ein um das Perl Modul HTML::Parser zu installieren:

install HTML::Parser

Wenn die Installation erfolgreich war, siehst Du am Ende eine ähnliche Zeile wie:

/usr/bin/make install -- OK

Gib danach

q

ein um die Perl Kommandozeile zu verlassen.

16 Das Ende

Die Konfiguration des Servers ist nun abgeschlossen. Wenn Du magst, kannst Du nun ISPConfig installieren.

16.1 Eine Notiz Für SuExec

Wenn Du CGI Skripte unter suExec laufen lassen möchtest, solltest Du /var/www als Home Verzeichnis für Webseiten festlegen, die von ISPConfig erstellt worden sind, da CentOS' suExec nicht mit /var/www as Doc_Root erstellt wird. Lass Folgendes laufen

/usr/sbin/suexec -V

und die Ausgabe sollte wie folgt aussehen:

[root@server1 ~]# /usr/sbin/suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"
[root@server1 ~]#

Wenn Du also suExec mit ISPconfig verwenden möchtest, ändere nicht den Standard-Web-Root (nämlich /var/www) wenn Du während der ISPConfig Installation den Experten Modus verwendest (im Standardmodus kannst Du den Web-Root sowieso nicht ändern, also kannst Du suExec in jedem Fall verwenden).

17 Links