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ühreniptables -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):
hinzuvi /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
ausnetstat -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
einehlo localhost
Wenn Sie die Linien
sehen250-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
einquit
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 ...
ausyum 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
ausyum 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).
18 Links
- CentOS:http://www.centos.org/
- ISPConfig 2:http://www.ispconfig.org/ispconfig-2/