Installation zusätzlicher Anwendungen auf dem OVH Enterprise SP-64

Dieser Abschnitt unseres Erfahrungsberichts zum OVH Enterprise SP-64 unter Debian GNU/Linux dokumentiert die Installation zusätzlicher Anwendungen auf dem dedizierten Mietserver.

Paketfilter

Im OVH-Image ist kein Paketfilter ("Firewall") vorkonfiguriert. Wir verwenden hier das Frontend Shorewall.

 # aptitude install shorewall

Monitoring

In den vergangenen Jahren haben wir Munin eingesetzt, um visuell eine Übersicht zu Auslastung des Servers und einigen anderen Systemparametern zu erhalten.

Munin funktioniert zwar tadellos, rechtfertigt jedoch den Aufwand im Regelfall nicht. Diesmal reservieren wir ein paar Timeslices mehr für die eigentlichen Aufgaben des Servers.

LAMP/LNMP/LLMP

Eine LAMP-/LNMP-/LLMP-Umgebung ist bei OVH nicht vorkonfiguriert.

Gängige Optionen für Webserver sind beispielsweise Apache 2 (→ LAMP), Lighttp (→ LLMP) und Nginx (→ LNMP); als freie Datenbankserver stehen MySQL und PostgreSQL zur Verfügung.

Nach der Entscheidung für die Serversoftware ist die Topologie zu klären: Sollen alle Server auf einer Maschine laufen, oder soll ein dedizierter Datenbankserver und einer oder mehrere Webheads eingeriichtet werden? Sobald eine verteilte Infrastruktur aufgebaut wird, muß man sich Gedanken über Loadbalancing und - vor allem - die physikalische Verbindung der Systeme machen.

LAMP

Soll alles auf einem Server laufen, dann holen uns MySQL 5.5, Apache 2 und PHP 5:

 # aptitude install mysql-server-5.5 mysql-client

Anschließend läßt man das vorinstallierte Script mysql_secure_installation laufen, das u.a. ein Root-Passwort für MySQL einrichtet sowie anonyme Datenbankuser und Testdatenbanken löscht. Dieses Script sollte man grundsätzlich immer laufen lassen, bevor MySQL in den produktiven Betrieb geht.

Nach Änderungen an MySQL-Benutzeraccounts und -berechtigungen sollte man immer an der Shell testen, ob man sich noch anmelden kann und ob die Shutdown-Skripte ordentlich laufen.

Keinen Schreck zu bekommen braucht man bei einer Ausgabe wie:

# service mysql restart

Stopping MySQL database server: mysqld.

Starting MySQL database server: mysqld ..

Checking for tables which need an upgrade, are corrupt or were

not closed cleanly..

Das "not closed cleanly" bedeutet nicht, daß es ein Problem gäbe; hier wurde nur ein Zeilenumbruch unglücklich platziert.

 # aptitude install apache2-mpm-prefork apache2-utils

# aptitude install curl dbconfig-common fontconfig-config

# aptitude install php5 libapache2-mod-php5 php5-cli php5-gd php5-mysql

# aptitude install wwwconfig-common ssl-cert

Dabei werden diverse weitere Abhängigkeiten aufgelöst.

Abhängigkeiten Apache2: apache2-mpm-prefork apache2-utils apache2.2-bin{a} apache2.2-common{a} libapr1{a} libaprutil1{a} libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libexpat1{a} mime-support{a} ssl-cert{a}

Alternativ kann man sich auch gleich eine passende Web-Applikation wie drupal7 installieren und einfach die Abhängigkeiten auflösen lassen - dafür ist Debian ja da:

 # aptitude install drupal7

Abhängigkeiten: apache2 apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common dbconfig-common fontconfig-config libaio1 libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libexpat1 libfontconfig1 libgd2-xpm libhtml-template-perl libjpeg8 libonig2 libqdbm14 libx11-6 libx11-data libxau6 libxcb1 libxdmcp6 libxpm4 mime-support mysql-client mysql-client-5.5 mysql-server mysql-server-5.5 mysql-server-core-5.5 php5 php5-cli php5-common php5-gd php5-mysql ssl-cert ttf-dejavu-core wwwconfig-common

Für die Integration von MySQL in PHP5 ist das Modul php5-mysql zuständig. Unter Umständen braucht man auch noch weitere Pakete wie php-pear, php5-curl, php5-cgi, php5-imagick, php5-xmlrpc oder php5-mcrypt.

Datenbankbenutzer nach Installation der Debian-Pakete drupal7, phpmyadmin und postfixadmin:

mysql> select user,host,password from mysql.user;

+------------------+-----------+-------------------------------------------+

| user             | host      | password                                  |

+------------------+-----------+-------------------------------------------+

| root             | localhost | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |

| root             | 127.0.0.1 | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |

| root             | ::1       | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |

| debian-sys-maint | localhost | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |

| drupal7          | localhost | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |

| phpmyadmin       | localhost | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |

| postfixadmin     | localhost | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |

+------------------+-----------+-------------------------------------------+

7 rows in set (0.00 sec)

Dedizierter Datenbankserver

Alternativ kann man die Infrastruktur des LAMP-Systems aufsplitten auf mehrere physikalische Server. Dazu ist in Debian lediglich eine Anpassung in der my.cnf erforderlich: Die IP-Adresse - standardmäßig Localhost (127.0.0.1) muß an das Netzwerkinterface (i.d.R. eth0) gebunden werden:

Dokumentation: Server Command Options: --bind-address=addr

Anschließend muß man lediglich noch den Zugriffspfad auf die Datenbank innerhalb der Web-Anwendung anpassen. Bei Drupal finden sich die entsprechenden Paramter in der settings.php:

 $db_url = 'mysqli://username:password@hostname/databasename';

Dedizierte(r) Webhead(s)

Bei einem Webserver entspricht die Konfiguration weitestgehend der eines All-in-one-Servers (mit Web- und Datenbankserver auf einem Rechner).

Relevante Unterschiede:

  • Wenn Caching verwendet wird: Wo werden welche Caches am sinnvollsten platziert?
  • Wenn mehrere Webhead verwendet werden: Wie wird die Last sinnvoll verteilt (unterschiedliche Websites auf unterschiedlichen Webservern oder Loadbalancing)?

Caching

(1) APC will man vermutlich als Opcode-Cache in jedem Fall installieren; ob man die paketierte Version nimmt oder das PECL-Modul selbst baut, ist ein Thema für sich. Debian bietet paketiert:

  • php-apc

(2) Memcached. Aus Performance-Gründen sollte man bei stärker frequentierten Websites über weitere Caching-Methoden nachdenken, beispielsweise:

  • memcached
  • php5-memcache bzw. php5-memcached

Memcached ist ein Key-value-store, er entlastet also vor allem die Datenbank.

Zu den Unterschieden zwischen php5-memcache bzw. php5-memcached:

(3) Varnish ist ein Reverse Proxy, der nebenbei auch als Loadbalancer eingesetzt werden kann. Varnish liefert vor allem statische Dateien schnell aus.

  • varnish
  • ggf. auch Nginx als Reverse Proxy

Achtung - Die Entscheidung zwischen Memcached und Varnish muß nicht unbedingt "entweder" - "oder" lauten; es kann durchaus Sinn machen APC, Memcached und Varnish zu kombinieren. Fragen darf man sich dann allerdings, wie das Boost-Modul in eine solche Caching-Hierarchie hineinpasst…

(4) Ggf. existieren in Verbindung mit Drupal auch noch weitere Alternativen; beispielsweise kann mit dem Drupal-Modul Boost insbesondere die Auslieferung von statischen Seiten beschleunigt werden. Boost lässt sich problemlos mit APC und Memcached kombinieren, mit einigem Aufwand auch zusätzlich noch mit Varnish.

Apache Solr

Ab Debian "Wheezy" besteht außerdem die Option, einen separaten Index-Server zu betreiben. Dieser läßt sich gut in Drupal integrieren und entlastet die Datenbank von SQL-Volltext-Suchanfragen.

Entwicklung / Versionierung

Wenn Daten unter Versionskontrolle gestellt oder aus entsprechenden Repositories bezogen werden werden sollen, benötigt man auch noch Tools wie:

  • cvs
  • git
  • subversion

Mail

Ein MTA ist standardmäßig nicht eingerichtet. Wir installieren Postfix in Kombination mit Dovecot für's Abholen von Mail. Beim Spamschutz hilft policyd-weight:

  # aptitude install postfix dovecot policyd-weight

Postfächer richten wir datenbankbasiert ein; dabei hilft Postfix-Admin, das endlich auch für Debian paketiert wurde:

  # aptitude install postfixadmin

Näheres hierzu im Erfahrungsbericht Mailserver mit Postfix, Dovecot und policyd-weight unter Debian GN/Linux (19. Mai 2010; mit Aktualisierungen für Debian GNU/Linux 6.0 "Squeeze").

Tools

Folgende sinnvolle Tools können noch installiert werden:

  • locate
  • apt-file
  • pwgen
  • links
  • mc
  • putty-tools
  • htop
  • bzip2
  • zip
  • unzip
  • modconf
  • hdparm
  • imagemagick
  • bc

Bereits installiert waren bei OVH:

  • screen
  • hddtemp
  • smartmontools

Als Ergänzung für Webdienste kann man auch noch gebrauchen:

  • phpmyadmin
  • phpsysinfo
  • awstats

Für Monitoring und Leistungsüberwachtung bieten sich an:

  • tiger
  • monit
  • mrtg/rrdtool/cacti
  • collectd
  • iptraf
  • whois
  • netdiag
  • munin
  • munin-node
  • munin-plugins-extra

Um Apache2 und MySQL etwas auf die Finger zu sehen, kann man zurückgreifen auf:

  • apachetop
  • mytop

Wer seinem neuen Mietserver nicht ohne Weiteres über den Weg traut, kann auch ein paar (Burn-in-) Tests laufen lassen:

  • cpuburn
  • memtest86

Dokumentation

Wenn man lokal auf dem Server ein wenig allgemeine Dokumentation vorrätig halten möchte, kann man beispielsweise noch intallieren:

  • doc-debian
  • debian-reference-en/debian-reference-de
  • doc-linux-html/doc-linux-text
  • selflinux

All diese Pakete belegen allerdings etliche Megabyte Speicherplatz auf dem Server, insbesondere bei Platzproblemen sollte man daher genau überlegen, was man wirklich auf dem Server online verfügbar haben möchte. Häufig hat man auch lokal einen ähnlich konfigurierten Debain-Rechner zur Hand, auf dem man die Dokumentation ebensogut einrichen kann. Lokal kann man dann auch bedenkenlos einen komfortablen Man-Browser wie Doc-Central (Paket: doc-central) einsetzen, was online nicht unbedingt ratsam ist.

Die Dokumentation für das LAMP-System muss man ggf. auch manuell installieren:

  • apache2-doc
  • php-doc
  • selfhtml

Beim Installieren von Dokumentation auf einem Server im öffentlichen Internet ist zu bedenken, dass diese unter Umständen Rückschlüsse auf installierte Software zulässt und damit potenzielle Sicherheitslücken aufreißt.

Soll auf dem Server Software gebaut oder gepatcht werden, können folgende Tools notwendig werden:

  • make
  • patch
  • subversion
  • gcc

Grundsätzlich ist jedoch davon abzuraten, auf einem produktiven Server im öffentlichen Internet Compiler installiert zu haben; allerdings sagt man ja mittlerweile auch, dass die Zeiten wären, in denen man einen Internet-Server vor Attacken schützen konnte, indem man keinen Compiler installierte.

Siehe auch

Dazugehöriger Beitrag: 
  • Postfix  – Artikel  – 27. Dezember 2002
  • Apache  – Seite  – 28. Oktober 2008
  • Munin
    Leistungsüberwachung von Server-Diensten unter Debian GNU/Linux
    Blogeintrag  – 06. März 2009