Der perfekte Server - Debian Lenny (Debian 5.0) [ISPConfig 2]

Version 1.0
Autor: Falko Timme


Diese Anleitung zeigt wie man den Debian Lenny (Debian 5.0) Server aufsetzt. Er bietet alle Dienste die insbesondere ISP's und Hoster benötigen: Apache Webserver (SSL-fähig), Postfix Mailserver mit SMTP-AUTH und TLS, BIND DNS Server, Proftpd FTP Server, MySQL Server, Courier POP3/IMAP, Quota, Firewall, usw. Als Ergebnis erhält man ein System das zuverlässig arbeitet, und Du kannst das kostenlose Webhosting Control Panel ISPConfig 2 nutzen.

Ich werde folgende Software benutzen:
  • Webserver: Apache 2.2.9 mit PHP 5.2.6, Python, und Ruby
  • Datenbankserver: MySQL 5.0.51a
  • Mailserver: Postfix
  • DNS Server: BIND9
  • FTP Server: proftpd
  • POP3/IMAP: Ich werde das Maildir Format nutzen und dafür das Courier-POP3/Courier-IMAP installieren
  • Webalizer für Webseitenstatistiken
Bitte beachte dass diese Anleitung nicht für ISPConfig 3 geeignet ist! Sie ist nur für ISPConfig 2 gültig!

Es gibt natürlich auch andere Wege solch ein System aufzusetzen. Diese Anleitung ist eine der vielen Möglichkeiten, für die ich mich entschieden habe. Ich gebe keine Gewähr darauf, dass es bei Dir genauso funktioniert!

1 Anforderungen

Um dieses System zu installieren, wirst Du folgendes benötigen:

2 Vorbemerkung

In dieser Anleitung benutze ich den Host-Namen server1.example.com mit der IP Adresse 192.168.0.100 und der Gateway 192.168.0.1. Diese Angaben können bei Dir anders sein, bitte achte darauf dass sie gegebenenfalls angepasst werden.

3 Das Basissystem

Lege die Debian Lenny Netzwerk Instalaltions-CD ein und boote von der CD. Wähle Install (das startet den textbasierten Installer - wenn Due eine graphische Oberfläche bevorzugst, wähle Graphical install):


Wähle die Sprache aus :


Dann wähle Dein Standort aus :




Wähle ein Tastatur-Layout:


Der Installer überprüft die Installations-CD, Deine hardware, und konfiguriert anschliessend das Netzwerk per DHCP, wenn es einen DHCP- Server im Netzwerk gibt::



Gib den Hostnamen ein. In diesem Beispiel heisst mein System server1.example.com, also gebe ich server1 ein:


Gib den Domain Namen an. In diesem Beispiel ist es example.com:



Nun musst Du Deine Festplatte partitionieren. Der Einfachheit halber werde ich eine grosse Partition erstellen (mit dem Mount-Punkt /) und eine kleine Tauschpartition, daher wähle ich Guided - use entire disk aus. Selbstverständlich kannst Du die Partition beliebig erstellen und auch LVM benutzen.


Wähle die Festplatte aus die partitioniert werden soll:


Dann wähle das partitionsschema aus. Wie bereits gesagt, wähle ich die einfache Variante All files in one partition (recommended for new users) - Du kannst auch etwas anderes auswählen:


Hiernach wähle Finish partitioning and write changes to disk:


Wähle Yes aus wenn Du gefragt wirst Write changes to disks?:


Hiernach wurden Deine Partitionen erstellt und formatiert:


Nun ist das Basissystem installiert:


Bitte gib nun dem Root-Benutzer ein Passwort:


Bestätige das Passwort - und vertippe Dich nicht...:


Erstelle ein normales Benutzerkonto wie z.B. für den Nutzer Administrator mit dem Namen administrator. Benutze aber nicht den Namen admin, da dieser bereits vom Debian Lenny System reserviert ist:






Als Nächstes musst Du apt konfigurieren. Da wir die Debian Lenny Netzwerk Installations-CD nutzen, die nur eine kleine Anzahl von paketen bereit hält, müssen wir einen Netzwerk-Mirror benutzen. Wähle das Mirror aus das Du benutzen möchtest, üblicherweise das wo Dein Debian Lenny System herkommt:


Dann wähle ein Mirror aus (z.B. ftp2.de.debian.org):


Wenn Du keinen HTTP Proxy benutzt, lass das folgende Feld leer und klick auf Continue:


Apt aktualisiert nun die Paket-Datenbank:


Du kannst die Umfrage zur Paket-Nutzung übergehen, indem Du auf No klickst:


Wir brauchen zwar einen Webserver, DNS-Sserver, Mailserver, und eine MySQL Datenbank, nichstdestotrotz wähle ich nichts davon aus da ich volle Kontrolle über das System haben möchte. Wir werden die Pakete natürlich später manuell installieren. Daher wähle Standard system und klick Continue:


Die benötigten Pakete wurden heruntergeladen und auf Dein System installiert:



Wenn Du gefragt wirst Install the GRUB boot loader to the master boot record, wähle bitte Yes aus:


Die Basissysteminstallation ist nun beendet. Nimm die Debian Lenny Netzwerk Installations-CD raus und klick auf Continue um das System neu zu starten:


Weiter zu den nächsten Schritten ...

4 SSH-Server installieren

Debian Lenny installiert nicht standardmässig OpenSSH, daher müssen wir es selbst machen. Gib ein:

apt-get install ssh openssh-server


Ab sofort kannst Du einen SSH-Client wie PuTTY benutzen und Dich für die restlichen Anleitungsschritte von Deinem Rechner aus auf Deinem Debian Lenny Server einloggen.

5 vim-nox installieren (optional)

Ich werde vi als Texteditor in dieser Anleitung benutzen. Das standardmässige vi Programm hat einige Macken auf Debian und Ubuntu und um diese zu beheben installieren wir vim-nox:

apt-get install vim-nox


(Das brauchst Du natürlich nicht wenn Du einen anderen Texteditor wie joe oder nao benutzt.)

6 Netzwerk konfigurieren

Da der Debian Lenny Installer das System so konfiguriert hat dass es die netzwerkeinstellungen per DHCP bekommt, müssen wir das ändern, da ein Server eine statische IP-Adresse benötigt. Editiere /etc/network/interfaces und passe es nach Deinen Bedürfnissen an (in diesem Beispiel nutze ich die IP-Adresse 192.168.0.100). Bitte beachte dass ich allow-hotplug eth0 mit auto eth0 ersetze; ansonsten kann man das Netztwerk nicht neu starten und müsste das gesamte System neu starten):

vi /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface #allow-hotplug eth0 #iface eth0 inet dhcp auto eth0 iface eth0 inet static address 192.168.0.100 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 192.168.0.1
Dann starte das Netzwerk neu:

/etc/init.d/networking restart


Bitte editiere /etc/hosts. Es sollte folgendermassen aussehen:

vi /etc/hosts

127.0.0.1       localhost.localdomain   localhost
192.168.0.100 server1.example.com server1 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
Gib ein

echo server1.example.com > /etc/hostname
/etc/init.d/hostname.sh start

Danach gib ein

hostname
hostname -f

Beide sollten server1.example.com anzeigen.

7 Debian Installation aktualisieren

Gib ein

apt-get update


um die apt Paket-Datenbank zu aktualisieren und

apt-get upgrade


um die neuesten Updates zu installieren, falls es welche gibt.

8 Zusätzliche Software installieren

Wir installieren nun ein paar Pakete, die wir später benötigen. Gib ein

apt-get install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.6-dev libpcre3 libpopt-dev lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++ build-essential


(Dieses Befehl muss in einer Zeile erfolgen!)

9 Quota

(Solltest Du ein anderes Partitionsschema ausgewählt haben als ich, musst Du dieses Kapitel so anpassen, dass Quota für die entsprechenden Partitionen gilt.)


Um Quota zu installieren, gib ein

apt-get install quota


Editiere /etc/fstab. Meines schaut folgendermassen aus (Ich habe ,usrquota,grpquota zu der Partition mit dem Mount-Punkt /) hinzugefügt:

vi /etc/fstab

# /etc/fstab: static file system information.
# # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/sda1 / ext3 errors=remount-ro,usrquota,grpquota 0 1 /dev/sda5 none swap sw 0 0 /dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
Um Quota zu aktivieren, gib folgende Befehle ein:

touch /quota.user /quota.group
chmod 600 /quota.*
mount -o remount /

quotacheck -avugm
quotaon -avug

10 BIND9 DNS Server

Gib ein

apt-get install bind9


um BIND9 zu installieren.

Aus Sicherheitsgründen soll BIND gechrootet werden, daher müssen wir folgende Schritte machen:

/etc/init.d/bind9 stop


Editiere die Datei /etc/default/bind9 so dass der Daemon normaler Benutzer bind läuft, gechrootet nach /var/lib/named. Ändere die Zeile: OPTIONS="-u bind" so dass sie folgendermassen aussieht OPTIONS="-u bind -t /var/lib/named":

vi /etc/default/bind9

# run resolvconf?
RESOLVCONF=yes # startup options for the server OPTIONS="-u bind -t /var/lib/named"
Erstelle die notwendigen Verzeichnisse unter /var/lib:

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run

Dann verschiebe das Config-Verzeichnis von /etc to /var/lib/named/etc:

mv /etc/bind /var/lib/named/etc


Erstelle einen Symlink zum neuen Config-Verzeichnis von dem ursprünglichen Ort, um bei einer BIND Aktualisierung Problemen vorzubeugen:

ln -s /var/lib/named/etc/bind /etc/bind


Erstelle null und random Devices, und korrigiere die Zugangsberechtigungen für die Verzeichnisse:

mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind

Wir müssen /etc/rsyslog.d/bind-chroot.conf öffnen...

vi /etc/rsyslog.d/bind-chroot.conf


... und folgende Zeile hinzufügen, damit wir wichtige Benachrichtigungen vom Log-System bekommen:
$AddUnixListenSocket /var/lib/named/dev/log
Starte das Logging-Daemon neu:

/etc/init.d/rsyslog restart


Starte BIND, und überprüfe /var/log/syslog for errors:

/etc/init.d/bind9 start


11 MySQL

Um MySQL zu installieren, geben wir ein

apt-get install mysql-server mysql-client libmysqlclient15-dev


Du wirst um ein Passwort für den MySQL Root-Benutzer gebeten - dieses Passwort wird sowohl für den Benutzer root@localhost als auch für root@server1.example.com gültig sein, so dass wir später nicht manuell ein MySQL Root-Passwort erstellen müssen:

New password for the MySQL "root" user: <-- yourrootsqlpassword Repeat password for the MySQL "root" user: <-- yourrootsqlpassword
MySQL soll auf alle Oberflächen laufen, nicht nur auf localhost, daher editieren wir /etc/mysql/my.cnf und kommentieren die Zeile bind-address = 127.0.0.1 aus:

vi /etc/mysql/my.cnf

[...]
# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1 [...]
Dann starten wir MySQL neu:

/etc/init.d/mysql restart


Nun überprüfe ob das Netzwerk aktiviert ist. Gib ein

netstat -tap | grep mysql


Die Antwort sollte so aussehen:

server1:~# netstat -tap | grep mysql
tcp        0      0 *:mysql                 *:*                     LISTEN      6612/mysqld
server1:~#

12 Postfix mit SMTP-AUTH und TLS

Um Postfix mit SMTP-AUTH und TLS zu installieren, befolge bitte folgende Schritte:

apt-get install postfix libsasl2-2 sasl2-bin libsasl2-modules procmail


Du wirst um zwei Angaben gebeten. Bitte antworte folgendermassen:

General type of mail configuration: <-- Internet Site System mail name: <-- server1.example.com
Dann gib ein

dpkg-reconfigure postfix


Erneut wirst Du einige Angaben machen müssen:

General type of mail configuration: <-- Internet Site System mail name: <-- server1.example.com Root and postmaster mail recipient: <-- [blank] Other destinations to accept mail for (blank for none): <-- server1.example.com, localhost.example.com, localhost.localdomain, localhost Force synchronous updates on mail queue? <-- No Local networks: <-- 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 Use procmail for local delivery? <-- Yes Mailbox size limit (bytes): <-- 0 Local address extension character: <-- + Internet protocols to use: <-- all
Dann mach bitte folgendes:

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_sasl_authenticated_header = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'
echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

Hiernach erstellen wir das Zertifikat 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 (versichere Dich bitte dass Du für myhostname den richtigen Hostnamen benutzt):

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


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'

Die Datei /etc/postfix/main.cf sollte nun so aussehen:

cat /etc/postfix/main.cf

# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # TLS parameters smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_use_tls = yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. myhostname = server1.example.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = server1.example.com, localhost.example.com, localhost.localdomain, localhost relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = all smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination smtpd_tls_auth_only = no smtp_use_tls = yes smtp_tls_note_starttls_offer = yes 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
Die Authentifizierung erfolgt von saslauthd. Wir müssen allerdings einige Dinge ändern damit es richtig funktioniert. Da Postfix gechrootet in /var/spool/postfix läuft, müssen wir folgende Schritte machen:

mkdir -p /var/spool/postfix/var/run/saslauthd


Jetzt editieren wir /etc/default/saslauthd um saslauthd zu aktivieren. Gib an START to yes und ändere die Zeile OPTIONS="-c -m /var/run/saslauthd" to OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r":

vi /etc/default/saslauthd

#
# Settings for saslauthd daemon # Please read /usr/share/doc/sasl2-bin/README.Debian for details. # # Should saslauthd run automatically on startup? (default: no) START=yes # Description of this saslauthd instance. Recommended. # (suggestion: SASL Authentication Daemon) DESC="SASL Authentication Daemon" # Short name of this saslauthd instance. Strongly recommended. # (suggestion: saslauthd) NAME="saslauthd" # Which authentication mechanisms should saslauthd use? (default: pam) # # Available options in this Debian package: # getpwent -- use the getpwent() library function # kerberos5 -- use Kerberos 5 # pam -- use PAM # rimap -- use a remote IMAP server # shadow -- use the local shadow password file # sasldb -- use the local sasldb database file # ldap -- use LDAP (configuration is in /etc/saslauthd.conf) # # Only one option may be used at a time. See the saslauthd man page # for more information. # # Example: MECHANISMS="pam" MECHANISMS="pam" # Additional options for this mechanism. (default: none) # See the saslauthd man page for information about mech-specific options. MECH_OPTIONS="" # How many saslauthd processes should we run? (default: 5) # A value of 0 will fork a new process for each connection. THREADS=5 # Other options (default: -c -m /var/run/saslauthd) # Note: You MUST specify the -m option or saslauthd won't run! # # WARNING: DO NOT SPECIFY THE -d OPTION. # The -d option will cause saslauthd to run in the foreground instead of as # a daemon. This will PREVENT YOUR SYSTEM FROM BOOTING PROPERLY. If you wish # to run saslauthd in debug mode, please run it by hand to be safe. # # See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information. # See the saslauthd man page and the output of 'saslauthd -h' for general # information about these options. # # Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd" #OPTIONS="-c -m /var/run/saslauthd" OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
Als Nächstes füge den postfix Benutzer zu der sasl Gruppe hinzu. Das sorgt dafür, dass Postfix die Erlaubnis hat saslauthd anzusteuern:

adduser postfix sasl


Starte Postfix neu und starte saslauthd:

/etc/init.d/postfix restart
/etc/init.d/saslauthd start

Um zu sehen ob SMTP-AUTH und TLS korrekt funktionieren, gib folgenden Befehl ein:

telnet localhost 25


Nachdem Du die Verbindung zu Deinem Postfix Mailserver erstellt hast, gib ein

ehlo localhost


Wenn Du folgende Zeilen siehst

250-STARTTLS


und

250-AUTH LOGIN PLAIN


...dann ist alles in Ordnung!

Die Ausgabe sieht bei mir folgendermassen aus:

server1:/etc/postfix/ssl# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Debian/GNU)
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.
server1:/etc/postfix/ssl#

Gib ein

quit


um zur Kommandozeile des Systems zurückzukehren.

13 Courier-IMAP/Courier-POP3

Gib das ein um Courier-IMAP/Courier-IMAP-SSL (für IMAPs auf Port 993) und Courier-POP3/Courier-POP3-SSL (für POP3s auf Port 995) zu installieren:

apt-get install courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin libgamin0 libglib2.0-0


Du wirst nach zwei Angaben gefragt:

Create directories for web-based administration? <-- No SSL certificate required <-- Ok
Während der Installation werden die SSL Zertifikate für IMAP-SSL und POP3-SSL mit dem Hostnamen localhost erstellt. Um das in den richtigen Hostnamen abzuändern (in dieser Anleitung server1.example.com), lösche die Zertifikate...

cd /etc/courier
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem

... und ändere folgende zwei Dateien ab; ersetze CN=localhost mit CN=server1.example.com (Du kannst natürlich auch andere Werte angeben, falls notwendig):

vi /etc/courier/imapd.cnf

[...]
CN=server1.example.com [...]

vi /etc/courier/pop3d.cnf

[...]
CN=server1.example.com [...]
Dann erstelle die Zertifikate neu...

mkimapdcert
mkpop3dcert

... und starte Courier-IMAP-SSL und Courier-POP3-SSL neu:

/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop-ssl restart

Wenn Du ISPConfig nicht nutzen möchtest, konfiguriere Postfix die Emails zum Benutzer Maildir zu versenden*:

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

*Achtung: Das brauchst Du nicht wenn Du ISPConfig auf Dein System benutzen möchtest, da ISPConfig die notwendige Konfiguration mit Procmail selbst vornimmt. Dennoch, bitte versichere Dich dass Maildir unter Management -> Server -> Settings -> EMail in der ISPConfig Web Interface aktiviert wurde.

14 Apache/PHP5/Ruby/Python

Wir installieren nun Apache:

apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2-suexec libexpat1 ssl-cert


Als Nächstes intsallieren wir PHP5, Ruby, und Python (alle drei als Apache Module):

apt-get install libapache2-mod-php5 libapache2-mod-ruby libapache2-mod-python php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-suhosin php5-tidy php5-xcache php5-xmlrpc php5-xsl


Editiere/etc/apache2/mods-available/dir.conf...

vi /etc/apache2/mods-available/dir.conf


... und ändere die Zeile DirectoryIndex:
<IfModule mod_dir.c>
#DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml </IfModule>
Wir müssen nun einige Apache Module aktivieren (SSL, rewrite, suexec, und include):

a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include

Starte Apache neu:

/etc/init.d/apache2 restart


Wir müssen ein kleines Problem mit Ruby beheben. Wenn ISPConfig installiert und Ruby für eine Webseite aktiviert wird, werden .rbx Dateien ausgeführt und im Browser angezeigt, was jedoch nicht für .rb Dateien gilt - es folgt der Befehl die .rb Datei herunterzuladen. Das Gleiche geschieht wenn Ruby manuell für einen Vhost konfiguriert wird, d. h. es hat nichts mit beispielsweise ISPConfig zu tun.Um dies zu behebn, öffnen wir /etc/mime.types...

vi /etc/mime.types


... und kommentieren die Zeile application/x-ruby aus:
[...]
#application/x-ruby rb [...]
Starte Apache neu:

/etc/init.d/apache2 restart


Nun werden die .rb Dateien wie die .rbx Dateien ausgeführt und im Browser dargestellt.

Im nächsten Kapitel (14.1) werden wir PHP deaktivieren. Das ist nur notwendig falls man ISPConfig darauf laufen lassen möchte. Im Gegensatz zu PHP sind Ruby und Python standardmässig deaktiviert, daher müssen wir das nicht mehr machen.

14.1 PHP global deaktivieren

(Wenn Du ISPConfig nicht auf diesem Server installieren möchtest, vernachlässige bitte diesen Absatz!)


Mit ISPConfig konfiguriert man PHP für die jeweiligen Webseiten, so dass Du angeben kannst welche Seite PHP Skripte benutzen kann und welche nicht. Das funktioniert nur, wenn PHP vorab global deaktiviert wurde, da ansonsten alle Webseiten PHP ermöglichen, egal was in ISPConfig spezifiziert wurde.

Um PHP global zu deaktivieren, editieren wir /etc/mime.types und kommentieren die Zeilen application/x-httpd-php aus:

vi /etc/mime.types

[...]
#application/x-httpd-php phtml pht php #application/x-httpd-php-source phps #application/x-httpd-php3 php3 #application/x-httpd-php3-preprocessed php3p #application/x-httpd-php4 php4 [...]
Editiere /etc/apache2/mods-enabled/php5.conf und kommentiere folgende Zeilen aus:

vi /etc/apache2/mods-enabled/php5.conf

<IfModule mod_php5.c>
#AddType application/x-httpd-php .php .phtml .php3 #AddType application/x-httpd-php-source .phps </IfModule>
Dann starte Apache neu:

/etc/init.d/apache2 restart


15 Proftpd

Um Proftpd zu installieren, gib ein

apt-get install proftpd ucf


Du wirst Folgendes gefragt :

Run proftpd: <-- standalone
Füge aus Sicherheitsgründen folgende Zeilen hinzu /etc/proftpd/proftpd.conf (Danke an Reinaldo Carvalho; für mehr Infos: http://proftpd.org/localsite/Userguide/linked/userguide.html):

vi /etc/proftpd/proftpd.conf

[...]
DefaultRoot ~ IdentLookups off ServerIdent on "FTP Server ready." [...]
ISPConfig erwartet die Konfiguration in /etc/proftpd.conf anstatt in /etc/proftpd/proftpd.conf, daher erstellen wir einen Symlink. Diesen Schritt kannst Du auslassen, wenn Du ISPConfig nicht installieren möchstest.

ln -s /etc/proftpd/proftpd.conf /etc/proftpd.conf


Dann starte Proftpd neu:

/etc/init.d/proftpd restart


16 Webalizer

Um webalizer zu installieren, gib einfach ein

apt-get install webalizer


17 Systemuhrzeit synchronisieren

Es ist ganz sinnvoll die Systemuhrzeit mit einem NTP (network time protocol) Server zu synchronisieren. Bitte folgendes ausführen:

apt-get install ntp ntpdate


und Deine Uhr wird immer richtig ticken...

18 Perl Module für SpamAssassin (kommt mit ISPConfig) installieren

Gib ein

apt-get install libhtml-parser-perl libdb-file-lock-perl libnet-dns-perl


19 ISPConfig

Die Konfiguration des Servers ist nun beendet, also kannst Du nun ISPConfig installieren, falls Du es wünscht. Bitte beachte das Handbuch bzw. die Installationsanweisung zu ISPConfig: http://www.ispconfig.org/manual_installation.htm

19.1 Notiz zu SuExec

Wenn Du CGI Skripte unter suExec ausführen möchtest, solltest Du /var/www als Homeverzeichnis für die mit ISPConfig erstellten Webseiten spezifizieren, da Debian's suExec mit /var/www as Doc_Root kompiliert wurde. Gib ein

/usr/lib/apache2/suexec -V


und die Ausgabe sollte folgendermassen aussehen:

server1:~# /usr/lib/apache2/suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="www-data"
-D AP_LOG_EXEC="/var/log/apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"
server1:~#

Wenn Du suExec mit ISPConfig benutzen möchtest, ändere bitte nicht den Standard Web-Root, der /var/www ist, falls Du den Expertenmodus während der ISPConfig Installation benutzt. Im Standardmodus kann man den Web-Root allerdings ohnehin nicht ändern, daher wird suExec auf alle Fälle funktionieren.

20 Links