GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Panels

Der perfekte Server – CentOS 6.0 x86_64 [ISPConfig 2]

Der perfekte Server – CentOS 6.0 x86_64 [ISPConfig 2]

Diese Anleitung zeigt, wie Sie ein CentOS 6.0 einrichten Server (x86_64), der alle von ISPs und Webhostern benötigten Dienste anbietet:Apache-Webserver (SSL-fähig), Postfix-Mailserver mit SMTP-AUTH und TLS, BIND-DNS-Server, Proftpd-FTP-Server, MySQL-Server, Dovecot POP3/IMAP, Quota, Firewall usw. Dieses Tutorial wurde für die 64-Bit-Version von CentOS 6.0 geschrieben, sollte aber mit sehr geringen Änderungen auch für die 32-Bit-Version gelten. Am Ende sollten Sie ein System haben, das zuverlässig funktioniert, und wenn Sie möchten, können Sie das kostenlose Webhosting-Control-Panel ISPConfig 2 installieren (d. h. ISPConfig läuft darauf out of the box).

Ich werde die folgende Software verwenden:

  • Webserver:Apache 2.2.15 mit PHP 5.3.2
  • Datenbankserver:MySQL 5.1.52
  • Mailserver:Postfix
  • DNS-Server:BIND9 (Chroot)
  • FTP-Server:Proftpd
  • POP3/IMAP-Server:Dovecot
  • Webalizer für Website-Statistiken

Bitte beachten Sie, dass dieses Setup nicht für ISPConfig 3 funktioniert ! Es gilt nur für ISPConfig 2!

Ich möchte zunächst sagen, dass dies nicht die einzige Möglichkeit ist, ein solches System einzurichten. Es gibt viele Wege, dieses Ziel zu erreichen, aber ich gehe diesen Weg. Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!

1 Voraussetzungen

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

  • Laden Sie die beiden CentOS 6.0-DVDs von einem Spiegel neben Ihnen herunter (die Liste der Spiegel finden Sie hier:http://isoredirect.centos.org/centos/6/isos/x86_64/).
  • eine schnelle Internetverbindung.

2 Vorbemerkung

In diesem Tutorial 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 für Sie abweichen, daher müssen Sie sie gegebenenfalls ersetzen.

3 Installieren Sie das Basissystem

Booten Sie von Ihrer ersten CentOS 6.0-DVD (DVD 1). Wählen Sie Vorhandenes System installieren oder aktualisieren:

Das Testen des Installationsmediums kann lange dauern, daher überspringen wir diesen Test hier:

Der Begrüßungsbildschirm des CentOS-Installationsprogramms wird angezeigt. Klicken Sie auf Weiter:

Wählen Sie als nächstes Ihre Sprache:

Wählen Sie Ihr Tastaturlayout aus:

Ich gehe davon aus, dass Sie eine lokal angeschlossene Festplatte verwenden, daher sollten Sie hier Basic Storage Devices auswählen:

Möglicherweise wird die folgende Warnung angezeigt:Fehler beim Verarbeiten des Laufwerks. Wenn Sie dies sehen, klicken Sie auf die Schaltfläche Alle neu initialisieren, um fortzufahren:

Geben Sie den Hostnamen des Servers ein (z. B. server1.example.com) und klicken Sie dann auf die Schaltfläche Netzwerk konfigurieren:

Gehen Sie zur Registerkarte Verkabelt, wählen Sie die Netzwerkschnittstelle (wahrscheinlich eth0) aus und klicken Sie auf Bearbeiten...:

Aktivieren Sie das Kontrollkästchen Automatisch verbinden und gehen Sie zur Registerkarte IPv4-Einstellungen und wählen Sie im Dropdown-Menü Methode die Option Manuell aus. Geben Sie einen, zwei oder drei Nameserver (durch Komma getrennt) in das Feld DNS-Server ein (z. B. 8.8.8.8, 8.8.4.4) und klicken Sie dann auf die Schaltfläche Hinzufügen neben dem Bereich Adressen:

Geben Sie Ihrer Netzwerkkarte nun eine statische IP-Adresse und Netzmaske (in diesem Tutorial verwende ich zu Demonstrationszwecken die IP-Adresse 192.168.0.100 und die Netzmaske 255.255.255.0; wenn Sie sich nicht sicher sind, welche Werte richtig sind, http://www. subnetmask.info könnte Ihnen helfen). Geben Sie auch Ihr Gateway ein (z. B. 192.168.0.1) und klicken Sie auf die Schaltfläche Anwenden...:

Die Netzwerkkonfiguration ist nun abgeschlossen. Klicken Sie auf die Schaltfläche Weiter:

Der perfekte Server – CentOS 6.0 x86_64 [ISPConfig 2] – Seite 2

4 /etc/hosts anpassen

Als nächstes bearbeiten wir /etc/hosts. Lass es so aussehen:

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 bereits am Ende der grundlegenden Systeminstallation deaktiviert haben.)

Ich möchte ISPConfig am Ende dieses Tutorials installieren, das mit einer eigenen Firewall geliefert wird. Deshalb deaktiviere ich jetzt die standardmäßige CentOS-Firewall. Natürlich steht es Ihnen frei, sie eingeschaltet zu lassen und nach Ihren Bedürfnissen zu konfigurieren (aber dann sollten Sie später keine andere Firewall verwenden, da diese höchstwahrscheinlich die CentOS-Firewall stört).

Ausführen

system-config-firewall

und die Firewall deaktivieren.

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

ausführen
iptables -L 

nachher. Die Ausgabe sollte so aussehen:

[[email protected] ~]# 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
[[email protected] ~]#

6 SELinux deaktivieren

SELinux ist eine Sicherheitserweiterung von CentOS, die erweiterte Sicherheit bieten soll. Meiner Meinung nach brauchen Sie es nicht, um ein sicheres System zu konfigurieren, und es verursacht normalerweise mehr Probleme als Vorteile (denken Sie daran, nachdem Sie eine Woche lang Fehler behoben haben, weil ein Dienst nicht wie erwartet funktioniert hat, und dann Sie feststellen, dass alles in Ordnung war, nur SELinux verursachte das Problem). Daher deaktiviere ich es (dies ist ein Muss, wenn Sie später ISPConfig installieren möchten).

Bearbeiten Sie /etc/selinux/config und setzen Sie 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

Danach müssen wir das System neu starten:

reboot

7 Einige Software installieren

Zuerst importieren wir die GPG-Schlüssel für Softwarepakete:

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

Dann aktualisieren wir unsere bestehenden Pakete auf dem System:

yum update

Jetzt installieren wir einige Softwarepakete, die später benötigt werden:

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

8 Quote

(Falls Sie ein anderes Partitionierungsschema gewählt haben als ich, müssen Sie dieses Kapitel anpassen, damit Quota für die Partitionen gilt, wo Sie es brauchen.)

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

yum install quota

Bearbeiten 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 Mon Jul 11 16:29:27 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=6a119ddb-46eb-4054-a17c-8968ea87369f /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

Dann ausführen

mount -o remount /

quotecheck -avugm
quotaon -avug

zum Aktivieren des Kontingents.

9 Installieren Sie einen Chrooted-DNS-Server (BIND9)

Um ein chrooted BIND9 zu installieren, gehen wir wie folgt vor:

yum install bind-chroot

Dann tun Sie 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 /var/named/named.localhost /var/named/chroot/var/named/named.localhost
cp /var/named/named.ca /var/named/chroot/var/named/named.ca
cp /var/named/named.empty /var/named/chroot/var/named/named.empty
cp /var/named/named.loopback /var/named/chroot/var/named/named.loopback
chgrp named /var/named/chroot/var/named/named.localhost /var/named /chroot/var/named/named.ca /var/named/chroot/var/named/named.empty /var/named/chroot/var/named/named.loopback
touch /var/named/chroot/ etc/named.conf
chkconfig --levels 235 benannt auf
/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 usw.) zu konfigurieren.

Der perfekte Server – CentOS 6.0 x86_64 [ISPConfig 2] – Seite 4

10 MySQL (5.1)

Um MySQL zu installieren, gehen wir wie folgt vor:

yum install mysql mysql-devel mysql-server

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

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

Überprüfen Sie nun, ob das Netzwerk aktiviert ist. Führen Sie

aus
netstat -tap | grep mysql

Es sollte eine Zeile wie diese anzeigen:

[[email protected] ~]# netstat -tap | grep mysql
tcp        0      0 *:mysql                    *:*                         HÖREN      2044/mysqld
[[email protected] ~]#

Wenn dies nicht der Fall ist, bearbeiten Sie /etc/my.cnf und kommentieren Sie die Option skip-networking aus:

vi /etc/my.cnf
[...]
#skip-networking
[...]

und starten Sie Ihren MySQL-Server neu:

/etc/init.d/mysqld restart 

Legen Sie Passwörter für das MySQL-Root-Konto fest:

mysql_secure_installation

[[email protected] ~]# mysql_secure_installation




HINWEIS:DAS AUSFÜHREN ALLER TEILE DIESES SKRIPTS WIRD FÜR ALLE MySQL-
      SERVER IN DER PRODUKTION EMPFOHLEN BENUTZEN! BITTE LESEN SIE JEDEN SCHRITT SORGFÄLTIG DURCH!


Um sich bei MySQL anzumelden, um es zu sichern, benötigen wir das aktuelle
Passwort für den Root-Benutzer. Wenn Sie gerade MySQL installiert und
das Root-Passwort noch nicht festgelegt haben, ist das Passwort leer,
also sollten Sie hier einfach die Eingabetaste drücken.

Enter Aktuelles Passwort für Root (Eingabe für Keine):
OK, erfolgreich verwendetes Passwort, weiter ...

Das Festlegen des Root-Passworts stellt sicher, dass sich niemand bei dem MySQL-Root anmelden kann.
Benutzer ohne die richtige Autorisierung.

Root-Passwort festlegen? [Y/n] <-- ENTER
Neues Passwort: <-- yourrootsqlpassword
Neues Passwort erneut eingeben: <-- yourrootsqlpassword
Passwort erfolgreich aktualisiert!
Berechtigungstabellen werden neu geladen. .
 ... Erfolg!


Standardmäßig hat eine MySQL-Installation einen anonymen Benutzer, der ermöglicht, dass sich jeder
bei MySQL anmelden kann, ohne einen Benutzeraccount haben zu müssen für
sie erstellt. Dies ist nur zum Testen sollte und damit die Installation
etwas flüssiger läuft. Sie sollten sie entfernen, bevor Sie in eine
Produktionsumgebung wechseln.

Anonyme Nutzer entfernen? [Y/n] <-- ENTER
 ... Erfolgreich!

Normalerweise sollte root nur erlaubt werden, sich von 'localhost' aus zu verbinden. Dies
stellt sicher, dass niemand das Root-Passwort aus dem Netzwerk erraten kann.

Root-Anmeldung aus der Ferne nicht zulassen? [Y/n] <-- EINGABE
 ... Erfolg!

Standardmäßig wird MySQL mit einer Datenbank namens "test" geliefert, auf die jeder
zugreifen kann. Dies ist auch nur zum Testen vorgesehen und sollte entfernt werden
bevor in eine Produktionsumgebung umgezogen wird.

Testdatenbank und Zugriff darauf entfernen? [Y/n] <-- ENTER
 - Testdatenbank wird gelöscht...
 ... Erfolg!
 - Berechtigungen für Testdatenbank entfernen...
 ... Erfolg !

Durch das Neuladen der Berechtigungstabellen wird sichergestellt, dass alle bisher vorgenommenen Änderungen
sofort wirksam werden.

Berechtigungstabellen jetzt neu laden? [Y/n] <-- EINGABE
 ... Erfolgreich!

Aufräumen ...



Alle fertig! Wenn Sie alle oben genannten Schritte ausgeführt haben, sollte Ihre MySQL
Installation jetzt sicher sein.

Vielen Dank, dass Sie MySQL verwenden!


[example @unixlinux.online ~]#

11 Postfix mit SMTP-AUTH und TLS

Jetzt installieren wir Postfix und Dovecot (Dovecot wird unser POP3/IMAP-Server):

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_sasl_authenticated_header =yes'
postconf -e 'smtpd_recipient_restrictions =permission_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces =all'
postconf -e 'mynetworks =127.0.0.0/8'

Anschließend 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 setzen wir den Hostnamen in unserer Postfix-Installation (stellen Sie sicher, dass Sie server1.example.com durch Ihren eigenen Hostnamen ersetzen):

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

Nach diesen Konfigurationsschritten sollten Sie nun eine /etc/postfix/main.cf haben, die so aussieht (ich habe alle Kommentare daraus entfernt):

cat /etc/postfix/main.cf
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
inet_interfaces = all
inet_protocols = 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
         ddd $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.6.6/samples
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
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
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

Standardmäßig stellt der Dovecot-Daemon von CentOS nur IMAP- und IMAPs-Dienste bereit. Da wir auch POP3 und POP3s wollen, müssen wir Dovecot dafür konfigurieren. Wir editieren /etc/dovecot/dovecot.conf und aktivieren die Zeile protocols =imap pop3:

vi /etc/dovecot/dovecot.conf
[...]
# Protocols we want to be serving.
protocols = imap pop3
[...]

Als nächstes müssen wir die Klartext-Authentifizierung aktivieren:

vi /etc/dovecot/conf.d/10-auth.conf
[...]
# Disable LOGIN command and all other plaintext authentications unless
# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
# matches the local IP (ie. you're connecting from the same computer), the
# connection is considered secure and plaintext authentication is allowed.
disable_plaintext_auth = no
[...]

Starten Sie nun Postfix, saslauthd und Dovecot:

chkconfig --levels 235 sendmail aus
chkconfig --levels 235 postfix ein
chkconfig --levels 235 saslauthd ein
chkconfig --levels 235 dovecot ein
/etc/init.d /sendmail stop
/etc/init.d/postfix start
/etc/init.d/saslauthd start
/etc/init.d/dovecot start

Um zu sehen, ob SMTP-AUTH und TLS jetzt richtig funktionieren, führen Sie den folgenden Befehl aus:

telnet localhost 25 

Nachdem Sie die Verbindung zu Ihrem Postfix-Mailserver hergestellt haben, geben Sie

ein
ehlo localhost 

Wenn Sie die Linien

sehen
250-STARTTLS 

und

250-AUTH PLAIN LOGIN 

alles ist gut.

[[email protected] ssl]# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape-Zeichen ist '^]'.
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 PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
<-- quit
221 2.0.0 Bye
Verbindung von fremdem Host geschlossen.
[[email protected] ssl]#

Geben Sie

ein
quit 

um zur Shell des Systems zurückzukehren.

11.1 Maildir

Dovecot verwendet das Maildir-Format (nicht mbox). Wenn Sie also ISPConfig auf dem Server installieren, stellen Sie bitte sicher, dass Sie Maildir unter Verwaltung -> Server -> Einstellungen -> E-Mail aktivieren. ISPConfig nimmt dann die notwendige Konfiguration vor.

Wenn Sie ISPConfig nicht installieren möchten, müssen Sie Postfix so konfigurieren, dass E-Mails an das Maildir eines Benutzers gesendet werden (Sie können dies auch tun, wenn Sie ISPConfig verwenden - es schadet nicht;-)):

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

Der perfekte Server – CentOS 6.0 x86_64 [ISPConfig 2] – Seite 5

12 Apache2 mit PHP, Ruby, Python, WebDAV

Jetzt installieren wir Apache mit PHP (das ist PHP 5.3.2):

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

Bearbeiten Sie dann /etc/httpd/conf/httpd.conf:

vi /etc/httpd/conf/httpd.conf

und ändern Sie DirectoryIndex in

[...]
DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl
[...]

Konfigurieren Sie nun Ihr System so, dass Apache beim Booten gestartet wird:

chkconfig --levels 235 httpd on

Apache starten:

/etc/init.d/httpd start

12.1 PHP global deaktivieren

(Wenn Sie ISPConfig nicht auf diesem Server installieren möchten, überspringen Sie bitte diesen Abschnitt!)

In ISPConfig konfigurieren Sie PHP pro Website, d. h. Sie können angeben, welche Website PHP-Skripte ausführen kann und welche nicht. Dies kann nur funktionieren, wenn PHP global deaktiviert ist, da sonst alle Websites PHP-Skripte ausführen könnten, egal was Sie in ISPConfig angeben.

Um PHP global zu deaktivieren, entfernen Sie /etc/httpd/conf.d/php.conf und kommentieren Sie die Zeilen AddHandler und AddType 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.
#
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

#
# 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

12.2 Installieren von mod_ruby

Für CentOS 6.0 ist kein mod_ruby-Paket verfügbar, also müssen wir es selbst kompilieren. Zuerst installieren wir einige Voraussetzungen:

yum install httpd-devel ruby ruby-devel

Als nächstes laden wir mod_ruby herunter und installieren es wie folgt:

cd /tmp
wget http://www.modruby.net/archive/mod_ruby-1.3.0.tar.gz
tar zxvf mod_ruby-1.3.0.tar.gz
cd mod_ruby -1.3.0/
./configure.rb --with-apr-includes=/usr/include/apr-1
make
make install

Schließlich müssen wir das Modul mod_ruby zur Apache-Konfiguration hinzufügen, also erstellen wir die Datei /etc/httpd/conf.d/ruby.conf...

vi /etc/httpd/conf.d/ruby.conf
LoadModule ruby_module modules/mod_ruby.so
RubyAddPath /1.8

... und Apache neu starten:

/etc/init.d/httpd restart

(Wenn Sie die Direktive RubyAddPath /1.8 weglassen, sehen Sie Fehler wie die folgenden im Fehlerprotokoll von Apache, wenn Sie Ruby-Dateien aufrufen:

[Do, 26. Mai 02:05:05 2011] [Fehler] mod_ruby:ruby:0:in `require':keine solche Datei zum Laden -- apache/ruby-run (LoadError)
[Do, 26. Mai 02:05:05 2011] [Fehler] mod_ruby:Apache/ruby-run konnte nicht angefordert werden
[Donnerstag, 26. Mai 02:05:05 2011] [Fehler] mod_ruby:Fehler in Ruby

)

12.3 Installieren von mod_python

Das mod_python-Paket ist in den EPEL-Repositories verfügbar, die wir wie folgt aktivieren können:

rpm --import https://fedoraproject.org/static/0608B895.txt
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch. rpm
rpm -ivh epel-release-6-5.noarch.rpm

yum install yum-priorities

Bearbeiten Sie /etc/yum.repos.d/epel.repo...

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

... und fügen Sie die Zeile priority=10 zum Abschnitt [epel] 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
[...]

Um mod_python zu installieren, führen wir einfach ...

aus
yum install mod_python

... und danach Apache neu starten:

/etc/init.d/httpd restart

12.4 WebDAV

WebDAV sollte bereits aktiviert sein, aber um dies zu überprüfen, öffnen Sie /etc/httpd/conf/httpd.conf und stellen Sie sicher, dass die folgenden drei Module aktiv sind:

vi /etc/httpd/conf/httpd.conf
[...]
LoadModule auth_digest_module modules/mod_auth_digest.so
[...]
LoadModule dav_module modules/mod_dav.so
[...]
LoadModule dav_fs_module modules/mod_dav_fs.so
[...]

Wenn Sie /etc/httpd/conf/httpd.conf ändern müssen, vergessen Sie nicht, Apache danach neu zu starten:

/etc/init.d/httpd restart

13 ProFTPd

ISPConfig hat eine bessere Unterstützung für proftpd als vsftpd, also entfernen wir vsftpd:

yum remove vsftpd

Wir können ProFTPd jetzt wie folgt aus dem EPEL-Repository installieren:

yum install proftpd  

Aus Sicherheitsgründen können Sie auch die folgende Zeile zu /etc/proftpd.conf hinzufügen (danke an Reinaldo Carvalho; weitere Informationen finden Sie hier:http://proftpd.org/localsite/Userguide/linked/userguide.html):

vi /etc/proftpd.conf
[...]
IdentLookups off
[...]

Jetzt können wir die Systemstartlinks 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ühren Sie einfach

aus
yum install webalizer

15 Synchronisieren Sie die Systemuhr

Wenn Sie die Systemuhr mit einem NTP-Server synchronisieren möchten, gehen Sie wie folgt vor:

yum install ntp

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

16 Einige Perl-Module installieren

ISPConfig wird mit SpamAssassin geliefert, das einige Perl-Module benötigt, um zu funktionieren. Wir installieren die erforderlichen Perl-Module mit einem einzigen Befehl:

yum install perl-HTML-Parser perl-DBI perl-Net-DNS perl-Digest-SHA1 perl-Archive-Tar perl-NetAddr-IP

17 Das Ende

Die Konfiguration des Servers ist nun abgeschlossen. Sie können nun ISPConfig darauf installieren, indem Sie diesen Anweisungen folgen:http://www.ispconfig.org/manual_installation.htm

Bevor Sie ISPConfig installieren, gibt es eine wichtige Sache, die Sie tun müssen. Öffnen Sie /usr/include/stdio.h und ersetzen Sie in Zeile 673 getline durch parseline:

vim /usr/include/stdio.h
[...]
/* Like `getdelim', but reads up to a newline.

   This function is not part of POSIX and therefore no official
   cancellation point.  But due to similarity with an POSIX interface
   or due to the implementation it is a cancellation point and
   therefore not marked with __THROW.  */
extern _IO_ssize_t parseline (char **__restrict __lineptr,
                            size_t *__restrict __n,
                            FILE *__restrict __stream) __wur;
#endif
[...]

Wenn Sie dies nicht tun, schlägt die Installation aufgrund des folgenden Fehlers fehl:

htpasswd.c:101:Fehler:widersprüchliche Typen für „getline“
/usr/include/stdio.h:673:Hinweis:vorherige Deklaration von „getline“ war hier
make[2]:*** [htpasswd. o] Fehler 1
make[2]:Verzeichnis verlassen `/home/install_ispconfig/compile_aps/apache_1.3.41/src/support'
make[1]:*** [build-support] Fehler 1
make[1]:Verzeichnis `/home/install_ispconfig/compile_aps/apache_1.3.41' verlassen
make:*** [build] Fehler 2
FEHLER:Apache konnte nicht erstellt werden

Sie können die Änderung an /usr/include/stdio.h nach der erfolgreichen ISPConfig-Installation rückgängig machen (aber vergessen Sie nicht, sie wieder rückgängig zu machen, wenn Sie ISPConfig aktualisieren möchten!).

17.1 Eine Anmerkung zu SuExec

Wenn Sie CGI-Skripte unter suExec ausführen möchten, sollten Sie /var/www als Home-Verzeichnis für Websites angeben, die von ISPConfig erstellt werden, da suExec von CentOS mit /var/www als Doc_Root kompiliert wird. Führen Sie

aus
/usr/sbin/suexec -V

und die Ausgabe sollte so aussehen:

[[email protected] ~]# /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"
[[email protected] ~]#

Wenn Sie also suExec mit ISPconfig verwenden möchten, ändern Sie nicht das Standard-Web-Root (das /var/www ist), wenn Sie den Expertenmodus während der ISPConfig-Installation verwenden (im Standardmodus können Sie das Web-Root sowieso nicht ändern, also müssen Sie suExec auf jeden Fall verwenden können).

  • CentOS:http://www.centos.org/
  • ISPConfig 2:http://www.ispconfig.org/ispconfig-2/

Panels
  1. Der perfekte Server – Fedora 15 x86_64 [ISPConfig 2]

  2. Der perfekte Server – Fedora 15 x86_64 [ISPConfig 3]

  3. Der perfekte Server - Ubuntu 11.04 [ISPConfig 3]

  4. Der perfekte Server – CentOS 5.6 x86_64 [ISPConfig 2]

  5. Der perfekte Server – CentOS 6.1 x86_64 mit Apache2 [ISPConfig 3]

Der perfekte Server – CentOS 6.1 x86_64 mit nginx [ISPConfig 3]

Der perfekte Server – CentOS 6.3 x86_64 (nginx, Dovecot, ISPConfig 3)

Der perfekte Server – CentOS 6.3 x86_64 (nginx, Courier, ISPConfig 3)

Der perfekte Server – CentOS 6.3 x86_64 (Apache2, Courier, ISPConfig 3)

Der perfekte Server – CentOS 6.4 x86_64 (nginx, Dovecot, ISPConfig 3)

Der perfekte Server – CentOS 6.4 x86_64 (Apache2, Dovecot, ISPConfig 3)