Artikelformat
8. März 2009

Installation Debian Lenny Server bzw Debian vServer

Anleitung für die Installation eines Debian Lenny Server mit Apache2, Php5 und MySQL5 anhand eines Debian Lenny vServer. Ich habe ja schon Anleitungen bzw. Neudeutsch Tutorials zu Debian Sarge und Debian Etch geschrieben. Ich möchte Euch auch nicht meinen Weg zum Debian Lenny Server vorenthalten.

Vorab was hat sich geändert bei Lenny?

Für Leute, die einen Root Server, einen vServer oder einen Homeserver haben, und um die geht es mir hier in erster Linie, hat sich wenig geändert. Im Prinzip wurden die einzelnen Dienste von Debian Etch auf Debian Lenny, wie SSH, VPN, Mysql5, Apache2 mit Php5 u.s.w. nur moderat modernisiert.

Neuigkeiten in dieser Anleitung > Beispiel Lenny vServer

In dieser Debian Lenny Anleitung werde ich, wie oft versprochen, meine Schritte nicht an einem Debian Home-Server, sondern an einem public verfügbaren vServer machen. Auf Anfrage war mein Hoster Greatnet dazu bereit mir einen fertig eingerichteten vServer mit Debian Lenny zu überlassen.

Auf diese Art und Weise kann ich Tests bzgl. der Performance meiner vServer-Konfiguration machen und ihr habt eine Empfehlung bzw. könnt Euch sicher sein, dass das was ich hier zeige auch auf Eurem Debian vServer läuft.

Ich hatte bei Greatnet die Anfrage gestellt, mir einen Debian vServer für eine Webseite mit mehr als 2000 Besuchern täglich zu geben. Mir wurde daraufhin der Lenny VServer – Expert gegeben. Ich denke, dass die meisten Blogs weit weniger Besucher haben und mit den günstigeren vServern klar kommen. Die Einschätzung des Administrator von Greatnet ist trotzdem recht interessant, um als Grundlage für die eigenen Einschätzungen des Bedarfs zu dienen.

Vielen Dank an Greatnet, weil wenige Hoster meiner Erfahrung nach so flexibel und entgegenkommend sind. Dafür muss hier Zeit sein.

Die Anleitung eignet sich natürlich auch für einen Root-Server, aber Linux vServer stellen heute die Regel dar, weil sie viel Freiheit bei niedrigen Kosten bieten

Was ist ein Linux vServer?

Ein Linux vServer ist eine von mehren vollständigen Installation eines Linux-System auf einem Root-Server, d.h. man teilt sich mit weiteren Mietern einen Server und dessen Anbindung. Das “v” von vServer steht für virtueller Server, weil Debian Lenny nicht direkt auf die Hardware zugreift, sondern auf XEN oder Virtuozzo … zugreift, die wiederum zentral die Hardware-Ressourcen verwalten. Auf diese Art und Weise ist eine gleichmäßige und faire Verteilung der Ressourcen möglich (mehr oder weniger).

Gerade für Blogger ist es interessant einen eigenen Debian Lenny vServer zu haben, weil kurzfristige Besucherspitzen bei durch Twitter oder Yigg … gehypte Artikel bei normalen Hostings-Angeboten i.d.R. schnell alle Viere von sich strecken. Auf der anderen Seite darf man nicht vergessen, dass man auch Zeit für die Einrichtung und die Administration benötigt.

Installation Debian vServer

Greatnet bietet schon ein Debian Lenny Image an. Die fertig konfigurierten Versionen LAMP sowie LAMP mit Confixx sind noch in Arbeit. Hier nun meine Debian Lenny Server Konfiguration :-)

Erste Schritte und Sicherheit gewinnen

Einloggen auf der Konsole mittels SSH, d.h. in meinem Fall mit Putty.

Ich ändere immer direkt das Passwort für Root mittels

debian vserver~’# passwd

Dann ein paar Vorbereitungen bzw. Debian Lenny und APT-GET auf den neusten Stand bringen:

debian vserver  ~# apt-get update && apt-get upgrade

Ein paar Werkzeuge installieren (optional!!):

debian  vserver  ~# apt-get -y install mc zip unzip bzip2 screen vim rsync traceroute ftp lynx openssl autoconf automake1.9 libtool bison autotools-dev g++ build-essential

Immer die aktuelle Uhrzeit auf dem Server:

debian vserver  ~# apt-get install ntp ntpdate

Danach erstellen ich einen neuen Benutzer mittels

debian vserver ~# adduser timbob
Adding user `timbob’ …
Adding new group `timbob’ (1000) …
Adding new user `timbob’ (1000) with group `timbob’ …
Creating home directory `/home/timbob’ …
Copying files from `/etc/skel’ …
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for timbob
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y

Für die Sicherheit des Passwortes denk Dir einfach einen Satz aus, wie “Mein schöner neuer Debian vServer” und nimm jeweils die ersten Buchstaben als Passwort. Das Passwort lautet also “MsnD5S” und weil wir extra sicher arbeiten packen wir noch ein Semikolon hinten dran –> MsnDv;

Weil zwei Variablen viel besser als eine sind und man nicht ständig als Root auf dem Server arbeiten sollte, sondern nur bei Bedarf, versperren ich Root den Zugriff:

debian vserver ~# mcedit /etc/ssh/sshd_config

Und die Zeile

PermitRootLogin yes

und auf

PermitRootLogin no

ändern.

Wer noch etwas mehr Sicherheit haben will ändert den Port von 22 auf eine beliebige vierstellige Zahl,wie 2233. Speichern & Verlasssen mit F10

Nun starten wir den SSH-Server neu mittels:

debian vserver ~# /etc/init.d/ssh restart
Restarting OpenBSD Secure Shell server: sshd.

Nun machen wir eine ZWEITE Konsole auf und testen, ob wir uns als ROOT noch anmelden können UND ob wir uns als USER anmelden können. Falls wir einen Fehler gemacht haben können wir über die erste Konsole diesen beheben, wenn aber ein Fehler gemacht wurde und die erste Konsole weg ist, dann hilft nur eine Neuinstallation von Debian Lenny. Laß Dir Zeit! Sicher ist sicher ;-)

login as: timbob
timbob@83.133.122.170’s password:
Linux t1602 2.6.20-xen-r6 #1 SMP Fri Feb 8 21:07:17 CET 2008 x86_64

So mittels

su

werden wir wieder Root und per su USERNAME wieder der Benutzer. Bequemer wäre der Wechsel mit sudo, d.h. man kann als Benutzer mit eingeschränkten Rechten von Fall zu Fall auch Superuser werden. Ich sehe darin auf einem Server nur ein mögliches Sicherheitsloch.

Debian Server > Apache2 mit Php5 und MySQL5 einrichten

Ich habe mit entschlossen unter Debian Lenny bei Apache 2 zu bleiben, weil es der Standard-Server ist. Ich möchte jedoch darauf hinweisen, dass lighttpd 1.4 eine gute Alternative unter Debian 5 ist.

Die Installation von Apache2 unter Debian Lenny bringt den apache2-mpm-worker:

debian vserver ~# apt-get install apache2

Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
apache2-mpm-worker apache2-utils apache2.2-common libapr1 libaprutil1
libexpat1 libldap-2.4-2 libmysqlclient15off libpq5 mysql-common
openssl-blacklist ssl-cert
Suggested packages:
apache2-doc apache2-suexec apache2-suexec-custom …

Wenn man aber ein LAMP, d.h. Php-Unterstützung und MySQL5 unter Debian Lenny, haben will, dann braucht man apache2-mpm-prefork. Ich achte hier darauf, dass Php5 gd und Php5 cgi mit installiert wird. Ich fasse die Php5 config zunächst nicht an.

debian vserver ~# apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2-suexec libexpat1 ssl-cert

debian vserver ~# apt-get install php5 php5-common php5-curl php5-dev php5-gd php5-idn php5-imagick php5-mysql php5-xcache libapache2-mod-php5

Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
apache2-mpm-prefork automake1.4 ca-certificates defoma djvulibre-desktop
fontconfig fontconfig-config ghostscript gs-common gsfonts
hicolor-icon-theme libatk1.0-0 libatk1.0-data libcairo2 libcroco3 libcups2
libcupsimage2 libcurl3 libdatrie0 libdirectfb-1.0-0 libdjvulibre21
libfontconfig1 libfontenc1 libfreetype6 libgd2-xpm libgraphviz4 libgs8
libgsf-1-114 libgsf-1-common libgtk2.0-0 libgtk2.0-bin libgtk2.0-common
libice6 libidn11 libilmbase6 libjasper1 libjpeg62 liblcms1 libmagick10
libopenexr6 libpango1.0-0 libpango1.0-common libpaper-utils libpaper1
libpixman-1-0 libpng12-0 librsvg2-2 libsm6 libssh2-1 libssl-dev libsysfs2
libt1-5 libthai-data libthai0 libtiff4 libts-0.0-0 libwmf0.2-7
libxcb-render-util0 libxcb-render0 libxcomposite1 libxcursor1 libxdamage1
libxfixes3 libxfont1 libxft2 libxi6 libxinerama1 libxml2 libxpm4 libxrandr2
libxrender1 libxt6 psfontmgr sgml-base shtool ttf-dejavu ttf-dejavu-core
ttf-dejavu-extra ucf x-ttcidfont-conf xfonts-encodings xfonts-utils xml-core
zlib1g-dev
Suggested packages:
defoma-doc dfontmgr djview4 djvu-viewer evince ghostscript-x hpijs php-pear
cups-common libfreetype6-dev libgd-tools librsvg2-common libjasper-runtime
liblcms-utils libwmf-bin html2ps ttf-kochi-gothic ttf-kochi-mincho
ttf-thryomanes ttf-baekmuk ttf-arphic-gbsn00lp ttf-arphic-bsmi00lp
ttf-arphic-gkai00mp ttf-arphic-bkai00mp librsvg2-bin sgml-base-doc debhelper
Recommended packages:
libft-perl
The following packages will be REMOVED
apache2-mpm-worker
The following NEW packages will be installed
apache2-mpm-prefork automake1.4 ca-certificates defoma djvulibre-desktop
fontconfig fontconfig-config ghostscript gs-common gsfonts
hicolor-icon-theme libapache2-mod-php5 libatk1.0-0 libatk1.0-data libcairo2
libcroco3 libcups2 libcupsimage2 libcurl3 libdatrie0 libdirectfb-1.0-0
libdjvulibre21 libfontconfig1 libfontenc1 libfreetype6 libgd2-xpm
libgraphviz4 libgs8 libgsf-1-114 libgsf-1-common libgtk2.0-0 libgtk2.0-bin
libgtk2.0-common libice6 libidn11 libilmbase6 libjasper1 libjpeg62 liblcms1
libmagick10 libopenexr6 libpango1.0-0 libpango1.0-common libpaper-utils
libpaper1 libpixman-1-0 libpng12-0 librsvg2-2 libsm6 libssh2-1 libssl-dev
libsysfs2 libt1-5 libthai-data libthai0 libtiff4 libts-0.0-0 libwmf0.2-7
libxcb-render-util0 libxcb-render0 libxcomposite1 libxcursor1 libxdamage1
libxfixes3 libxfont1 libxft2 libxi6 libxinerama1 libxml2 libxpm4 libxrandr2
libxrender1 libxt6 php5 php5-common php5-curl php5-dev php5-gd php5-idn
php5-imagick php5-mysql php5-xcache psfontmgr sgml-base shtool ttf-dejavu
ttf-dejavu-core ttf-dejavu-extra ucf x-ttcidfont-conf xfonts-encodings
xfonts-utils xml-core zlib1g-dev

Ein Aufruf der IP bzw. der Subdomain, wie in meinen Beispiel die von Greatnet, bringt und schon ein “It Works”.

debian lenny

Nun testen wir, ob php-Dateien interpretiert werden, indem wir eine info.php anlegen

debian lenny server ~# /etc/init.d/apache2 restart

debian lenny server ~# mcedit /var/www/info.php

Mit dem Inhalt:

<?php
phpinfo();
?>

debian 5

Nun sagen wir dem Apache noch, dass er drei Module aktivieren soll

  • Apache2 suexec für CGI-Skripte,
  • Apache2 SSL = SSL-Support (Grundlage für https) und
  • Apache2 Rewrite = Rewrite-Support):

debian vserver ~#  a2enmod suexec rewrite ssl actions include

Und starten Apache, so dass die neuen Einstellungen aktiv werden.

debian vserver ~# /etc/init.d/apache2 restart

Installation Debian Lenny server > MySQL5 bzw. MySQL-Server und Phpmyadmin 2.x

debian mysql5 server ~# apt-get install mysql-server phpmyadmin

Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
bsd-mailx exim4 exim4-base exim4-config exim4-daemon-light libdbd-mysql-perl
libdbi-perl libhtml-template-perl libmcrypt4 libnet-daemon-perl
libplrpc-perl libterm-readkey-perl mailx mysql-client-5.0 mysql-server-5.0
php5-mcrypt psmisc
Suggested packages:
mail-reader eximon4 exim4-doc-html exim4-doc-info libmail-spf-query-perl
swaks dbishell libipc-sharedcache-perl libmcrypt-dev mcrypt
libcompress-zlib-perl tinyca
The following NEW packages will be installed
bsd-mailx exim4 exim4-base exim4-config exim4-daemon-light libdbd-mysql-perl
libdbi-perl libhtml-template-perl libmcrypt4 libnet-daemon-perl
libplrpc-perl libterm-readkey-perl mailx mysql-client-5.0 mysql-server
mysql-server-5.0 php5-mcrypt phpmyadmin psmisc …

Es wird das Passwort für Root unter MySQL5 abgefragt:

debian lenny mysql

Und es wird gefragt welcher Webserver für MySQL5 konfiguriert werden soll (wir wollen Apache2):

debain 5 mysql

Testen wir, ob Apache2, Php5 und Mysql5 unter unserem Debian vServer gut zusammen arbeiten, indem wir PhpMyAdmin aufrufen:

mysql5 php5

MySQL5 läuft :-) –> Alles schick. Also steht unser Debian Lenny LAMP. Wie man sehen kann wird noch unter Debian Lenny PhpMyAdmin 2.x statt Version 3 eingerichtet. Ich persönlich halte das für ausreichend.

Domain bzw. vHosts des Debian vServers anlegen

Um nun Domains einzurichten findet man alle Informationen unter Linux Apache Virtual Host. Die einzelnen vHosts werden unter Apache unter/etc/apache2/sites-available/gespeichert und per Symlink nach /etc/apache2/sites-enabled/ verlinkt.

Beispiel

Anlegen des Webverzeichnisses

debian vserver ~# mkdir /var/www/PfadZurWebseite

Debian Apache Virtual Host erstellen

debian server ~# mcedit /etc/apache2/sites-available/MeineDomainDE

Anmerkung: Der Name (z.B. MeineDomainDE) ist hier bedeutungslos.
Inhalt:

<VirtualHost * >
# Anmerkung: Default Domain muss vorhanden sein
ServerAdmin EMAIL
ServerName www.Domain.DE
ServerAlias Domain.DE w.Domain.DE ww.Domain.DE
# Anmerkung: Sicherstellung der Erreichbarkeit bei Schreibfehlern; *Domain –> Problem mit Subdomains
DocumentRoot /var/www/PfadZurWebseite
# Pfad zu lokalen Verzeichnis unserer Debian Etch Webseite :-)
<Directory /var/www/PfadZurWebseite>
Order Deny,Allow
Allow from all
Options -Indexes
# option = keine Auflistungvon Verzeichnissen im Browser
</Directory>
</VirtualHost>

Aktivieren bzw. einen Symlink setzen auf den virtual Host und Apache neu starten

debian vserver ~# a2ensite MeineDomainDE
debian lenny server ~# ~# /etc/init.d/apache2 reload

Wer einen namensbasierten vHost unter Debian Lenny mit SSL-Unterstützung anlegen will, der kann unter meinen Debian Etch Tutorial nach schauen. Ist soweit ich sehen konnte identisch.

Installation Debian FTP-Server / von ProFTPd

Wer Zweite und Dritte auf seinen vServer lassen will oder anonymen Zugriff per FTP erlauben will, der schaut sich meine Debian Etch Anleitung an. Ich gehe davon aus, dass auf diesem vServer nur Wissende Zugriffe haben und installiere deshalb einen Standard ProFTP.

debian lenny server ~# apt-get install proftpd
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
proftpd-basic proftpd-mod-ldap proftpd-mod-mysql proftpd-mod-pgsql
Suggested packages:
proftpd-doc …

Statistiken und Überwachung des Debian Lenny vServers

Hier findet man meine Anleitung für die Installation von Webalizer unter Apache2 und an anderer Stelle die Installation und Konfiguration von Munin zur Debian Überwachung.

Datensicherung des Debian vServers

Was noch fehlt ist eine automatisierte Datensicherung des Debian Lenny vServers. Hierfür nutzt man die Anleitungen Backup Restore MySQL 5 um die Datenbanken zu sichern, Debian Linux Backup mittels Paketlisten um die installierten Programme zu sichern und Automatisierte Backups mit RSnapshot um Webverzeichnisse und die Konfiguration, bsp. alles unter /etc/, zu sichern.

Debian vServer für Dritte

Wer nun Webspace für Dritte anbieten will, der braucht noch eine Hand voll Programme, auf deren Konfiguration ich hier aber nicht weiter eingehen will:

quota – Speicherplatznutzung einteilen / begrenzen

vlogger  – teilt die Apache-Log der vHosts in Häppchen

jailkit – um SSH-Benutzer zu chrooten

squirrelMail – webmail

ISPConfig – Open Source Alternative zu Paralleles Plesk und Confixx als webbasierte Konfigurationsoberfläche

etc.

Soweit meine Konfiguration für einen Debian Lenny Server.