Apache, Mail, DNS und MySQL Server für CentOS 5.0 (32-bit) auch bekannt als "Das Perfekte Setup"

Version 1.0
Author: Falko Timme


Diese Anleitung veranschaulicht, wie man einen CentOS 5.0 basierten Server einrichtet, der alle Dienste anbietet, 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. Die Anleitung ist zwar für die 32-Bit Version von CentOS 5.0 geschrieben - sie sollte aber mit sehr kleinen Modifikationen genauso gut für die 64-Bit Version funktionieren.

Folgende Software werde ich verwenden:
  • Web Server: Apache 2.2 with PHP 5.1.6
  • Database Server: MySQL 5.0
  • Mail Server: Postfix
  • DNS Server: BIND9 (chrooted)
  • FTP Server: Proftpd
  • POP3/IMAP server: Dovecot
  • Webalizer für Webseiten Statistiken
Am Ende erhältst Du ein System, dass zuverlässig arbeitet. Wenn Du magst kannst Du im Anschluss das kostenlose Webhosting Control Panel ISPConfig installieren.

Allerdings möchte ich an dieser Stelle darauf hinweisen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten dieses Ziel zu erreichen - dies ist der Weg, den ich gewählt habe. Ich kann aber nicht garantieren, dass diese Lösung bei jedem funktioniert bzw. für jeden die richtige ist!

1 Voraussetzungen

Um ein solches System zu installieren, wirst Du Folgendes benötigen:

2 Vorbemerkung

In dieser Anleitung verwende ich den Hostnamen server1.example.com mit der IP Adresse 192.168.0.100 und dem Gateway 192.168.0.1. Diese Einstellungen können von Deinen abweichen, Du musst sie also an ensprechender Stelle ersetzen.

3 Installation des Basissystems

Starte mit Deiner ersten CentOS 5.0 CD (CD 1). Drücke <ENTER> bei der Startaufforderung:


Es kann etwas dauern das Installationsmedium zu testen, Du kannst diesen Schritt überspringen:


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


Wähle als Nächstes Deine Sprache:


Wähle Dein Tastaturlayout:


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


Nun müssen wir das Partitionsschema für unsere Installation auswählen. Aus Gründen der Einfachheit wähle ich Remove linux partitions on selected drives and create default layout. Damit entsteht eine kleine /boot und eine große / Partition, sowie eine swap Partition. Natürlich kannst Du Deine Festplatte nach Belieben partitionieren. Dann drücke ich Next:


Beantworte folgende Frage (Are you sure you want to do this?) mit Yes:


Weiter mit den Netzwerkeinstellungen. Mit der Standardeinstellung wird das Netzwerk Interface mit DHCP konfiguriert, aber wir installieren einen Server, also sind statische IP Adressen hier keine schlechte Idee... Klicke auf das Edit Feld rechts oben.



Entferne in dem Fenster, das sich öffnet, die Markierung von Use dynamic IP configuration (DHCP) and Enable IPv6 support und weise Deiner Netzwerkkarte eine statische IP Adresse (in dieser Anleitung verwende ich die IP Adresse 192.168.0.100 aus Demonstrationsgründen) und eine passende Netzmaske (z.B. 255.255.255.0; wenn Du Dir mit den richtigen Werten nicht ganz sicher bist, kann Dir http://www.subnetmask.info vielleicht helfen) zu:


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


Wähle Deine Zeitzone:


Weise root ein Passwort zu:


Nun wählen wir die Software aus, die wir installieren wollen. Wähle nur Servers (entferne die Markierungen von allen anderen). Wähle auch nicht Packages from CentOS Extras. Markiere dann Customize now und klicke auf Next:


Nun müssen wir die Paketgruppen auswählen, die wir installieren möchten. Wähle Editors, Text-based Internet, Development Libraries, Development Tools, DNS Name Server, FTP Server, Mail Server, MySQL Database, Server Configuration Tools, Web Server, Administration Tools, Base, and System Tools und klicke auf Next:


Der Installer überprüft die Abhängigkeiten der ausgewählten Pakete:


Klicke auf Next um die Installation zu starten:


Der Installer fragt Dich, ob Du das benötigte Installationsmedium zur Hand hast. Klicke auf Continue:


Die Festplatte wird formatiert:



Die Installation beginnt. Das kann etwas dauern:


Nun ist die Installation abgeschlossen, Du kannst die CD entfernen und Deinen Computer neu starten:


Nach dem Neustart siehst Du diesen Screen. Wähle Firewall configuration und drücke Run Tool:


Ich möchte am Ende der Anleitung 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 sie nach eigenem Ermessen konfigurieren (dann solltest Du später aber keine andere Firewall verwenden, da diese höchstwahrscheinlich die CentOS Firewall beeinflussen wird).

SELinux ist eine Sicherheitserweiterung von CentOS. Meiner Meinung nach ist die Konfiguration eines sicheren Systems überflüssig und verursacht für gewöhnlich mehr Probleme als dass es Vorteile verschafft. Daher deaktiviere ich es (das ist ein Muss, wenn Du später ISPConfig installieren möchtest). Drücke danach OK:


Verlasse dann den Setup Agent indem Du Exit wählst:


Melde Dich dann als Root-Benutzer an und starte das System neu damit die Änderungen übernommen werden können:

shutdown -r now

Weiter mit der Konfiguration...

4 /etc/hosts anpassen

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 ::1 localhost6.localdomain6 localhost6

5 Konfiguration zusätzlicher IP Adressen

(Dieser Abschnitt ist optional. Er zeigt lediglich, wie Du Deinem Netzwerk Interface eth0 weitere IP Adressen hinzufügen kannst, falls Du mehr als eine benötigst. Wenn eine IP Adresse für Dich in Ordnung ist, kannst Du diesen Abschnitt überspringen.)

Gehen wir davon aus, dass Dein Netzwerk Interface eth0 ist. Dann gibt es eine Datei /etc/sysconfig/network-scripts/ifcfg-eth0 die die Einstellungen für eth0 enthält. Wir können dies als ein Muster für unser virtuelles Netzwerk Interface eth0:0 verwenden:

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

Nun möchten wir die IP Adresse 192.168.0.101 auf dem virtuellen Interface eth0:0 verwenden. Dafür öffnen wir die Datei /etc/sysconfig/network-scripts/ifcfg-eth0:0 und bearbeiten sie wie folgt (wir können die HWADDR Zeile weglassen, da es die gleiche 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 IPV6ADDR= IPV6PREFIX= NETMASK=255.255.255.0 NETWORK=192.168.0.0 ONBOOT=yes
Danach müssen wir das Netzwerk neu starten:

/etc/init.d/network restart

Du möchtest vielleicht ebenfalls /etc/hosts anpassen, nachdem Du neue IP Adressen hinzugefügt hast, obwohl das nicht notwendig ist.

Führe nun dies aus

ifconfig

Du solltest nun Deine neue IP Adresse in der Ausgabe sehen:

[root@server1 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:5A:9C:41
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe5a:9c41/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:535 errors:0 dropped:0 overruns:0 frame:0
TX packets:363 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:52498 (51.2 KiB) TX bytes:66064 (64.5 KiB)
Interrupt:177 Base address:0x1400

eth0:0 Link encap:Ethernet HWaddr 00:0C:29:5A:9C:41
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)

6 Die Firewall und SELinux deaktivieren

(Du kannst dieses Kapitel überspringen, wenn Du die Firewall und SELinux bereits am Ende der Installation des Basissystems deaktiviert hast (im Setup Agent).)

Ich möchte am Ende der Anleitung 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 sie nach eigenem Ermessen konfigurieren (dann solltest Du später aber keine andere Firewall verwenden, da diese höchstwahrscheinlich die CentOS Firewall beeinflussen wird).

SELinux ist eine Sicherheitserweiterung von CentOS. Meiner Meinung nach ist die Konfiguration eines sicheren Systems überflüssig und verursacht für gewöhnlich mehr Probleme als dass es Vorteile verschafft. Daher deaktiviere ich es (das ist ein Muss, wenn Du später ISPConfig installieren möchtest).

Führe Folgendes aus

system-config-securitylevel

Setze Security Level und SELinux zu Disabled und drücke OK:


Danach müssen wir das System neu starten:

shutdown -r now

7 Installation einiger Softwar-Pakete

Zunächst importieren wir die GPG keys für die Software-Pakete:

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

Dann aktualisieren wir unsere vorhandenen Pakete:

yum update

Nun installieren wir einige Software-Pakete, die wir später benötigen werden:

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


8 Quota

(Falls Du ein anderes Partitionsschema als ich gewählt hast, musst Du dieses Kapitel anpassen, sodass Quota der Partition entspricht.)

Um Quota zu installieren, führen wir diesen Befehl aus:

yum install quota

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

vi /etc/fstab


/dev/VolGroup00/LogVol00 /                       ext3    defaults,usrquota,grpquota        1 1
LABEL=/boot /boot ext3 defaults 1 2 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 /dev/VolGroup00/LogVol01 swap swap defaults 0 0
Führe dann dies aus

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

um Quota zu aktivieren.

9 Installation eines Chrooted DNS Servers (BIND9)

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

yum install bind-chroot

Dann dies:

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
cp /usr/share/doc/bind-9.3.3/sample/var/named/named.local /var/named/chroot/var/named/named.local
cp /usr/share/doc/bind-9.3.3/sample/var/named/named.root /var/named/chroot/var/named/named.root
touch /var/named/chroot/etc/named.conf
chkconfig --levels 235 named on
/etc/init.d/named start

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

10 MySQL (5.0)

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

yum install mysql mysql-devel mysql-server

Dann erstellen wir die System Startup Links für MySQL (sodass MySQL beim Hochfahren automatisch startet) und starte den MySQL Server:

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

Überprüfe nun, ob der Netzwerkbetrieb aktiviert ist. Führe dies aus

netstat -tap

Eine Zeile in der Art sollte angezeigt werden:

tcp 0 0 *:mysql *:* LISTEN 2492/mysqld

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

Führe dies aus

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

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

11 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, sodass Postfix PLAIN und LOGIN Logins zulässt. Auf einem 64Bit Centos 5.0 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'

Nach diesen Konfigurationsschritten solltest Du nun eine /etc/postfix/main.cf Datei haben, 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.3.3/samples readme_directory = /usr/share/doc/postfix-2.3.3/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
CentOS' Dovecot daemon bietet standardmäßig nur IMAP und IMAPs Dienste an. Da wir aber auch POP3 und POP3s möchten, müssen wir Dovecot dementsprechend konfigurieren. Wir bearbeiten /etc/dovecot.conf und aktivieren die Zeile protocols = imap imaps pop3 pop3s:

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 # If you only want to use dovecot-auth, you can set this to "none". protocols = imap imaps pop3 pop3s # IP or host address where to listen in for connections. It's not currently # possible to specify multiple addresses. "*" listens in all IPv4 interfaces. [...]
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, führe folgenden Befehl aus:

telnet localhost 25

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

ehlo localhost

Wenn Du die Zeile

250-STARTTLS

und

250-AUTH LOGIN PLAIN

siehst, dann 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-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

Tippe

quit

um zur Kommandozeile des Systems zurückzukehren.

11.1 Maildir

Dovecot verwendet ein Maildir Format (nicht mbox), wenn Du also ISPConfig auf dem Server installieren möchtest, pass bitte auf, dass Du Maildir unter Management -> Server -> Settings -> Email aktivierst. ISPConfig nimmt dann die notwendige Konfiguration vor.

Wenn Du ISPConfig nicht installieren möchtest, dann musst Du Postfix so konfigurieren, dass E-Mails an eine Maildir des Benutzers gesendet werden (das kannst Du auch tun, wenn Du ISPConfig verwendest - es schadet nicht ;-)):

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

12 Apache2 mit PHP

Nun installieren wir Apache mit PHP (PHP 5.1.6):

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, damit Apache beim Hochfahren gestartet wird:

chkconfig --levels 235 httpd on

Starte Apache:

/etc/init.d/httpd start


12.1 PHP global deaktivieren

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

In ISPConfig wirst Du PHP pro Web Site konfigurieren, d.h. Du kannst festlegen, welche Web Site PHP Skripte ausführen kann und welche nicht. Das funktioniert nur, wenn PHP global deaktiviert ist, da sonst alle Web Sites in der Lage wären, PHP Skripte auszuführen, egal was Du in ISPConfig festlegst.I

Um PHP global zu deaktivieren, bearbeiten wir /etc/httpd/conf.d/php.conf und kommentieren die AddHandler und AddType Zeilen 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 php5_module modules/libphp5.so # # Cause the PHP interpreter to handle files with a .php extension. # #AddHandler php5-script .php #AddType text/html .php # # Add index.php to the list of files that will be served as directory # indexes. # DirectoryIndex index.php # # Uncomment the following line to allow PHP to pretty-print .phps # files as PHP source code: # #AddType application/x-httpd-php-source .phps
Danach starten wir Apache neu:

/etc/init.d/httpd restart


13 ProFTPd

ISPConfig unterstützt proftpd besser als vsftpd, also entfernen wir vsftpd:

yum remove vsftpd

Da CentOS kein proftpd Paket hat, müssen wir Proftpd manuell kompilieren:

cd /tmp/
wget --passive-ftp ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0a.tar.gz
tar xvfz proftpd-1.3.0a.tar.gz
cd proftpd-1.3.0a/
./configure --sysconfdir=/etc
make
make install
cd ..
rm -fr proftpd-1.3.0a*

Die proftpd Binärdatei wird in /usr/local/sbin installiert, jedoch brauchen wir sie in /usr/sbin, also erstellen wir einen Symlink:

ln -s /usr/local/sbin/proftpd /usr/sbin/proftpd

Erstelle nun das Init Skript /etc/init.d/proftpd:

vi /etc/init.d/proftpd


#!/bin/sh
# $Id: proftpd.init,v 1.1 2004/02/26 17:54:30 thias Exp $ # # proftpd This shell script takes care of starting and stopping # proftpd. # # chkconfig: - 80 30 # description: ProFTPD is an enhanced FTP server with a focus towards # simplicity, security, and ease of configuration. # It features a very Apache-like configuration syntax, # and a highly customizable server infrastructure, # including support for multiple 'virtual' FTP servers, # anonymous FTP, and permission-based directory visibility. # processname: proftpd # config: /etc/proftp.conf # pidfile: /var/run/proftpd.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x /usr/sbin/proftpd ] || exit 0 RETVAL=0 prog="proftpd" start() { echo -n $"Starting $prog: " daemon proftpd RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/proftpd } stop() { echo -n $"Shutting down $prog: " killproc proftpd RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/proftpd } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status proftpd RETVAL=$? ;; restart) stop start ;; condrestart) if [ -f /var/lock/subsys/proftpd ]; then stop start fi ;; reload) echo -n $"Re-reading $prog configuration: " killproc proftpd -HUP RETVAL=$? echo ;; *) echo "Usage: $prog {start|stop|restart|reload|condrestart|status}" exit 1 esac exit $RETVAL
Dann machen wir das Init Skript ausführbar:

chmod 755 /etc/init.d/proftpd

Als Nächstes öffnen wir /etc/proftpd.conf und ändern Group zu nobody:

vi /etc/proftpd.conf


[...]
Group nobody [...]
Aus Sicherheitsgründen kannst Du außerdem folgende Zeilen /etc/proftpd.conf hinzufügen (Dank an Reinaldo Carvalho; nähere Informationen findest Du hier: http://proftpd.org/localsite/Userguide/linked/userguide.html):

vi /etc/proftpd.conf


[...]
DefaultRoot ~ IdentLookups off ServerIdent on "FTP Server ready." [...]
Jetzt können wir die System Startup Links für Proftpd erstellen:

chkconfig --levels 235 proftpd on

Und schließlich starten wir Proftpd:

/etc/init.d/proftpd start


14 Webalizer

Um Webalizer zu installieren, führe einfach dies aus

yum install webalizer


15 Synchronisation der System-Uhr

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

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

16 Installation einiger Perl Module

In ISPConfig ist SpamAssassin integriert, das einige Perl Module benötigt um zu funktionieren. Wir installieren die benötigten Perl Module mit einem einzigen Befehl:

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


17 Das Ende

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

17.1 Eine Notiz über SuExec

Wenn Du CGI Skripte unter suExec ausführen möchtest, solltest Du /var/www als den Web Root für Web Sites festlegen, die von ISPConfig erstellt werden, da CentOS' suExec mit /var/www als Doc_Root erstellt wird. Führe Folgendes aus

/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"

Sofern Du nicht den Standard-Web-Root ( /var/www) während der Installation von ISPConfig änderst, kannst Du CGI Skripte unter suExec mit ISPConfig ausführen.

18 Links