vServer - Jared Tarbell 28TB - CC BY 2.0

vServer mit Debian

In diesem Artikel beschreibe ich meinen kompletten Weg auf der Suche nach virtuellen Serverlösungen – von der Anbietersuche über die Einrichtung bis hin zum Fazit. Der Schwerpunkt liegt auf Einrichtung und Konfiguration eines Linux-Webservers mit Debian 3.0 auf einem vServer-System wie es Provider wie HostEurope zur Verfügung stellen. Das heisst: die LAMP-Umgebung ist bereits da, alles andere fehlt.

Die Informationen beruhen zum überwiegenden Teil auf dem Debian Howto. Allerdings sind die Angaben entweder entsprechend meiner Bedürfnisse gekürzt, angepasst oder erweitert.

  1. Anbieter und Leistungen
  2. MC und FTP installieren
  3. Einrichtung Web- und FTP-User
  4. Diverses
  5. MySQL
  6. Datenbanken übertragen
  7. PhpMyAdmin

Links:
Debian HowTo: http://www.debianhowto.de/howtos/de/

vServer – Anbieter und Leistungen

Vorgeschichte

Nachdem ich mehrere Webpacks bei verschiedenen Anbietern hatte, wechselte ich auf Anraten eines 1&1-Support-Mitarbeiters zu einem Root-Server. Dank einer mehrmonatigen – wenn auch marginalen – Fortbildung in Debian war Linux für mich zumindest kein absolutes Fremdwort mehr. Leider trieb mich die Kombination aus SuSE und Confixx immer wieder in den Wahnsinn. Zwar einfach zum Verwalten per Mausklick. Aber Confixx mischte sich immer wieder an Stellen ein, wo es meiner Ansicht nach nichts verloren hatte. Und Yast war kein Vergleich zum Paketmanager von Debian.

Richtig schlimm wurde es, als ich aufgrund der integrierten Backup-Möglichkeit für 70 Euro/Monat den Server wechselte und SuSE 9.1 bekam. Plötzlich waren da Apache2 & co. Die – mittlerweile gewohnte – Unübersichtlichkeit der httpd.conf eines Apache 1 wurden vertauscht mit einer Menge Dateien eines Apache 2. Wo ich – auch dank Confixx – kaum noch wusste, woran zu drehen war. Als dann irgendwann eine ReInitialisierung fällig war, weil keine Perl-Scripte mehr liefen, manche Support-Mitarbeiter überfordert waren und meine Telefonrechnung dank dieser Anrufe immer höher wurde, war Schluss.

Alternativen

Es gab drei Möglichkeiten:

  1. Nie wieder kümmern durch richtig guten Webspace mit serverähnlichen Features wie Cronjobs. Den fand ich bei all-inkl.de. Er hieß WebBusiness L mit 1 x Domain, 1000 MB Speicherplatz, 75 GB Traffic, PHP, CGI, 15 x MySQL-Datenbanken, 5 x CronJobs, SSL Proxy, 50 Kunden je Server, 14,95 EUR je Monat und 19,95 EUR Einrichtung. Nie wieder Arbeit mit Serverkonfiguration. Was mich abhielt, war das ätzende KAS. So viel Zeug verwalten mit einer solch userfeindlichen Verwaltung? Warten auf KAS 2? Erst einmal nicht.
  2. Managed Server. Normal schweineteuer. Doch auch hier empfahl sich all-inkl: ManagedServer L mit AMD Duron 1300, 256 MB RAM, 20 GB Speicherplatz, 100 GB Traffic, 50 Accounts aufschaltbar, 29,95 EUR je Monat. Der Knackpunkt waren 149,95 EUR Einrichtungsgebühr und die fehlende Benennung der eigenen IP-Adresse. 10 Euro/Monat kämen zusätzlich für die Backup-Geschichte dazu. Der Vorteil: ich könnte Kunden mit drauf nehmen. Nachteil: wieder KAS. Und die Frage, wie sich all-inkl bei dem steten Zuwachs an anspruchsvollen Neukunden entwickeln würde.
  3. Die dritte und letzte Variante: ein VPS-Root-Server. Wesentlich günstiger als der bisherige Root-Server und wohl leistungsfähiger als normaler Webspace. Endlich mit Debian. Okay, ich gab mir eine letzte Chance, ein Servergott zu werden 😉

Entscheidung

Nach zahlreichen Recherchen im Netz, alten c’t-Ausgaben und natürlich webhostlist entschied ich mich für zwei vServer-Systeme:

  1. VPS (Virtual Private Server) Root S bei HostEurope.
    Für 14,99 /Monat und ohne Einrichtungsgebühr erhielt ich 2,5 GB Speicher, 100 GB Traffic auf einem Dual Xeon. Hardware RAID inklusive!
  2. Die zweite Variante war ein vServer small von Star-Hosting. Für 4,99 plus 9,95 Euro Einrichtungsgebühr erhielt ich 1 GB Speicher und 25 GB Traffic. Monatliche Vertragslaufzeit und 1 Domain.

Der HE VPS sollte nun mein Hauptsystem werden, der vServer small zur Sicherung und als Spielwiese dienen. Sollte es nicht funktionieren, blieb immer noch Variante 1 oder 2

Erfahrungen

Star-Hosting (SH) war schnell: morgens beantragt, kam bereits abends die eMail, dass der Server bereit stünde. 24 Stunden später stand auch die Domain bereit. Als ich mich nach vier Tagen erstmals einloggen wollte, war die Kiste allerdings nicht erreichbar. Also eine eMail an den Support und wenige Minuten später war ich drin.
HostEurope (HE) brauchte einen Tag länger. Dies lag allerdings daran, dass ich noch eine alte, seit einem Jahr nicht benutzte Kundennummer hatte und mir angeboten wurde, sie weiterhin zu nutzen. Sehr aufmerksam. Der Server war dann, als ich mich einloggte, sofort präsent. Guter Einstieg.

Und der Support? SH löcherte ich gleich mal mit ein paar Fragen. Ergebnis: Innerhalb kürzester Zeit erhielt ich Antwort – zumindest dann, wenn ich meine Fragen in den Abendstunden stellte. Die aus fünf Menschen bestehende Firma scheint um Support bemüht. Und alle Antworten waren hilfreich und korrekt.
HE schnitt bislang im Vergleich weniger gut ab. Die Erstanfrage brauchte 24 Stunden bis zu einer Antwort. Nachdem ich dann einmal eine Ticketnummer hatte, ging alles fix. Aber die Antworten war nie wirklich hilfreich – allerdings konfrontierte ich sie im Gegensatz zu SH mit wirklich kniffligen Fragen. Letztendlich gab es das Angebot, sich als Root auf meinen VPS einzuloggen und nach dem Rechten zu sehen. Grundsätzlich eine nette Geste. Jedoch: „Falls die Konfiguration aufwendiger ist muss ich Ihnen dies leider berechnen (bis ca. 30 Minuten). Hierfür gelten unsere normalen Preise von 25,75 EUR pro 15 Minuten.“ Also suchte ich die Lösung erst einmal in den Weiten des Netzes. Später zeigte sich allerdings, dass der Support bei HE sehr kulant sein kann.

vServer – Einrichtung von MC und FTP

Als erster Schritt wurde der Midnight Commander und FTP installiert.

Midnight Commander für Dateiverwaltung installieren:
d23-23-42-666:~# apt-get install mc

FTP installieren
d23-23-42-666:~# apt-get install proftpd<br> configfiles bearbeiten? YES
Typ: inetd (da beim Webserver nur gelegentlicher Up- und Download von Dateien)
anonymous-Zugang: NO (will ja nicht jeden auf meinem Server haben)
Update der /etc/proftpd.conf? YES

FTP konfigurieren
konsole:~# addgroup ftpuser
/etc/proftpd.conf im MC öffnen und am Ende einfügen:
DefaultRoot ~ ftpuser

<Limit LOGIN>
DenyGroup !ftpuser
</Limit>

<Global>
RootLogin off
RequireValidShell on
</Global>

UseReverseDNS off
IdentLookups off

LogFormat default „%h %l %u %t „%r“ %s %b“
LogFormat auth „%v [%P] %h %t „%r“ %s“
LogFormat write „%h %l %u %t „%r“ %s %b“

ExtendedLog /var/log/ftp_auth.log AUTH auth

ExtendedLog /var/log/ftp_access.log WRITE,READ write
Zum Schluss:
konsole:~# cp /bin/false /bin/ftp
konsole:~# echo „/bin/ftp“ >> /etc/shells
konsole:~# /etc/init.d/inetd restart

Links:
Debian HowTo: http://www.debianhowto.de/howtos/de/

vServer – Web- und FTP-User

Für jeden User alle Schritte bitte entsprechend durchführen:

1. Schritt: User anlegen

konsole:~# useradd -g ftpuser -d /var/www/user1 -s /bin/ftp -m user1
Und natürlich ein Passwort zuweisen:
konsole:~# passwd user1
Zwei Mal das Passwort eingeben

2. Schritt: Verzeichnisrechte

konsole:~# chown user1.www-data /var/www/user1
konsole:~# chmod 750 /var/www/user1

3. Schritt: Domain, Unterverzeichnisse und FTP-Rechte

konsole:~# mkdir -p /var/www/user1/domain1.de/{cgi-bin,html,temp}
konsole:~# chmod 770 /var/www/user1/domain1.de/temp
konsole:~# chown -R user1.ftpuser /var/www/user1/*

4. Schritt: Default-vHost in /etc/apache/vhosts.conf

konsole:~# echo „Include /etc/apache/vhosts.conf“ >> /etc/apache/httpd.conf
konsole:~# touch /etc/apache/vhosts.conf

Dann, ganz wichtig, in der ersten Zeile eintragen:
NameVirtualHost 190.xxx.yyy.zzz
damit der Apache weiss, dass mehrere virtuelle Domains auf derselben IP laufen.

<VirtualHost 190.xxx.yyy.zzz>
ServerName 190.xxx.yyy.zzz
DocumentRoot /var/www/nirvana
</VirtualHost>

<Location /cgi-bin>
AllowOverride None
Options +ExecCGI -Includes
SetHandler cgi-script
</Location>

konsole:~# mkdir /var/www/nirvana
konsole:~# chown root.www-data /var/www/nirvana/
konsole:~# chmod 750 /var/www/nirvana/
konsole:~# echo „<HTML><HEAD><TITLE>closed</TITLE>“ >> /var/www/nirvana/index.html“
konsole:~# echo „<BODY><H2>This Domain does not exist.</H2>“ >> /var/www/nirvana/index.html
konsole:~# echo „</BODY></HTML>“ >> /var/www/nirvana/index.html

5. Schritt: vHost für Domain incl. CGI, abgesicherter PHP-Umgebung und Logfiles

<VirtualHost 190.xxx.yyy.zzz>
ServerName domain1.de
ServerAlias www.domain1.de
User user1
Group ftpuser
DocumentRoot /var/www/user1/domain1.de/html
ScriptAlias /cgi-bin /var/www/user1/domain1.de/cgi-bin
php_admin_value open_basedir /var/www/user1/domain1.de/
php_admin_value upload_tmp_dir /var/www/user1/domain1.de/temp
php_admin_value session.save_path /var/www/user1/domain1.de/temp/
php_admin_value safe_mode on
CustomLog /var/log/apache/domain1.de.log combined
</VirtualHost>

 vServer – Sicherheit und mehr

Ein paar Dinge zur Absicherung:

Falls Webmin drauf ist, runter damit:
konsole:~# /etc/webmin/uninstall.sh

Sicherheit:
Bei manchen Providern (star-hosting) funktioniert pstree nicht – auch weitere Tests (s.u.) sind nicht erlaubt, bei HE sind die Infos kurz:
konsole:~# pstree
init-+-cron
|-sshd—sshd—bash—pstree
`-syslogd

Der Portscanner ist bei HE bereits installiert, man kann sich also sparen:
konsole:~# apt-get install nmap
Der Befehl: konsole:~# nmap localhost
ergibt: 22/tcp open ssh
Klingt in meinen Newbie-Ohren richtig gut. Beide vServer-Systeme erscheinen frei von unnötigen Diensten bzw. stark abgesichert.

Links:
UserMin FAQ: http://www.usermin.de/faq.php
Debian absichern: http://www.debianhowto.de/howtos/de/absichern/c_absichern.html

vServer – MySQL

Essentiell ist natürlich der Datenbank-Dienst:

Da bei den VPS MySQL bereits standardmässig installiert ist, kann ich mir folgendes sparen:
konsole:~# apt-get install mysql-server mysql-client
Also erstmal ein Passwort für den MySQL-Rootuser vergeben:
rootserver:~# /usr/bin/mysqladmin -u root password ‚xyz‘
Sollte das Passwort eines Tages geändert werden, bitte folgenden Befehl:
echo „update mysql.user set password=PASSWORD(‚NEUESPW‘) where user=’root'“ | mysql -uroot -pALTESPW

Jetzt das Passwort für Root in einer Datei speichern:
konsole:~# vi .my.cnf
[mysql]
user = root
password = <xyz>

[mysqladmin]
user = root
password = <xyz>
reinkopieren, insert mit ESQ beenden, :w und :q
Und diese Datei absichern:
konsole:~# chmod 0600 .my.cnf

In der /etc/mysql/my.cnf deutschsprachige Fehlermeldungen einstellen:
language = /usr/share/mysql/german
Und zum Schluss neustarten:
konsole:~# /etc/init.d/mysql restart

Links:
Debian HowTo: http://www.debianhowto.de/howtos/de/
MySQL: http://dev.mysql.com/doc/

vServer – Datenbanken übertragen

Die Ausgangsfrage ist folgende: Aufgrund des Server-Wechsels liegen Datenbanken bei meinem alten Provider, die ich möglichst schnell auf den neuen Server transferieren möchte. Wie stelle ich das an?

Schritt 1: Datenbank sichern
konsole:~# mysqldump -uweb0 -pPASSWORT -h localhost usr_web0_1 | gzip > /home/htdocs/web0/html/dump/web01.sql.gz

Schritt 2: rüberschieben auf die neue IP
konsole:~# scp /home/htdocs/web0/html/dump/web01.sql.gz 80.237.xxx.zzz:/var/www/user1/domain.de/html

Schritt 3: Datenbank importieren von der zweiten Konsole:
konsole:~# gunzip /var/www/user1/domain.de/html/web01.sql.gz
konsole:~# mysql -uuser1 -pPASSWORT -h localhost user1_1 < /var/www/user1/domain.de/html/web01.sql

Links:

Server Support: http://www.serversupportforum.de/forum/showthread.php?t=2583
MySQL: http://dev.mysql.com/doc/

vServer – PhpMyAdmin

Unverzichtbar bei der Verwaltung der Datenbanken ist für mich phpMyAdmin:

konsole:~# apt-get install phpmyadmin
Bei der Installation wählte ich Apache aus – Apache-SSL stellte sich als wesentlich kniffliger heraus (Zertifikat besorgen etc.)
Konfiguration via /etc/phpmyadmin/config.inc.php

Da ich auf meinem VPS allerdings nicht an das oben installierte phpMyAdmin herankam, wählte ich einen anderen Weg:
Installation unterhalb einer Domain und Schutz mittels htaccess. Dazu muss allerdings in der httpd.conf angegeben werden:
AllowOverride All

User anlegen

Damit user1 nur auf die Datenbanken Zugriff hat, muss ich ihn anlegen. Entweder per PHPMyAdmin (Rechte < neuen User anlegen) oder via Konsole:
konsole:~#mysql –user=root mysql mysql:~#GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , FILE , INDEX , ALTER ON * . * TO ‚user1’@’localhost‘ IDENTIFIED BY ‚********‘;

Links:

Debian HowTo: http://www.debianhowto.de/howtos/de/
Netzadmin: Funktionen der htaccess-Datei

vServer – Fazit

Anhand der vorher beschriebenen Schritte stellte sich die Einrichtung und Inbetriebnahme eines vServers als nicht allzu knifflig heraus – Grundkenntnisse über Linux und den Willen, sich Antworten im Netz zu suchen, natürlich vorausgesetzt.

Leider traten im Laufe der Zeit Schwierigkeiten auf, die letztendlich zum Abbruch des Abenteuers führten. Bei HostEurope häuften sich Dienstabstürze. Anfangs „nur“ sendmail/postfix, später dann so elementare Dienste, dass die gehosteten Domains nicht erreichbar waren.

Das Problem schien nicht bei meinen Kompetenzen zu liegen, wie mir das Schreiben eines Supporters zeigte: „natürlich finden auch wir diese Fehler nicht schön. Leider kommt es noch hier und da zu ‚Kinderkrankheiten‘ der neuen VPS, mit denen wir so nicht rechnen konnten. Es wird allerdings mit Hochdruck an einer Verbesserung gearbeitet.“

Mag sein, dass sich die Probleme bei HE später lösten, so dass ein Betrieb heutzutage problemlos möglich ist. Über meinen Einsatz als kostenpflichtiger Beta-Tester war ich allerdings nicht amüsiert. Dies führte zur Kündigung bei HE und der Inbetriebnahme eines Webpacks bei all-inkl. Da es bei all-inkl möglich ist, die betriebenen Domains auch ausserhalb zu hosten, konnten sie bei Schlund Technologies unter Angabe der Nameserver von all-inkl bleiben. Der vServer von Star-Hosting wurde nie einer so ausgiebigen Prüfung wie der von HE unterzogen. Da das Server-Abenteuer jedoch als beendet betrachtet wurde, kündigte ich auch diesen Account.

Letztendlich zeigte sich: so leicht es heutzutage auch ist, zu einem eigenen Server zu kommen, will dieser Schritt wohlüberlegt sein. Wie sich bei meinem 1&1 Root-Server zeigte, der während eines Auslandsaufenthaltes ausfiel, so dass sämtliche Webpräsenzen für eine Woche nicht erreichbar waren, sollten grundsätzlich mindestens zwei kompetente Server-Admins zur Verfügung stehen, damit immer ein Ansprechpartner im Einsatz ist. Und das Wissen zur Serveradministration erwirbt man nicht nebenbei.

Im Zweifelsfalle gilt: ein Webpack ist allemal relaxter und in der Regel kostengünstiger. Seit über einem halben Jahr bin ich nun bei all-inkl und das Leben ist schön 🙂

Bildnachweis: vServer – Jared Tarbell 28TBCC BY 2.0

Kommentare (2) Schreibe einen Kommentar

  1. Pingback: 2.2 Struktur | Wolke23 Webdesign & SEO

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.