Mongrel (Webserver)
# Mongrel (Webserver)

Mongrel ist ein Webserver für Ruby-basierende Webapplikationen. Er verwendet hauptsächlich HTTP an Stelle von FastCGI oder SCGI, um mit anderen (vorgelagerten) Servern zu kommunizieren. Es unterstützt zurzeit Ruby on Rails, Camping und das IOWA-Framework.

Mongrel wurde ursprünglich von Zed A. Shaw in den Programmiersprachen Ruby und C geschrieben.

## Einsatzbereiche

### Live-System

Eine häufig anzutreffende Konfiguration ist die Verwendung des Webservers Apache 2.2 als Loadbalancer unter Verwendung des Moduls mod_proxy_balancer in Verbindung mit mehreren Mongrel-Instanzen. Jede dieser Instanzen läuft dabei auf einer anderen Portadresse. Die Konfiguration lässt sich mit dem sogenannten Mongrel-Cluster-Management Utility bewerkstelligen. Der Apache Webserver verteilt die Anfragen auf die einzelnen Mongrel-Instanzen und kann sogar gleichzeitig noch statische Inhalte ausliefern.

Anstatt des Apache ist auch der Einsatz anderer Webserver möglich. Dafür bieten sich nginx oder Lighttpd an. Als Loadbalancer ist zum Beispiel pound empfehlenswert oder aber eine Hardware basierende Lösung.

### Ersatz für WEBrick

Mongrel kann auch anstelle von WEBrick, dem Standard-Webserver von Ruby on Rails, Websites im Stand-Alone-Modus bereitstellen. Da es sich bei Mongrel jedoch um eine "single-threaded"-Applikation handelt, ist dies nur für Aufgaben mit wenig Serverbelastung (Entwicklung, Intranet) sinnvoll.

## Betrieb

Um Mongrel zu starten, muss man aus dem Basisverzeichnis der Rails-Applikation Folgendes aufrufen:

    -p setzt den Server auf Port 80.
    -e sorgt für die Verwendung der "production"-Einstellungen.
    -d lässt den Server als Dienst/Daemon im Hintergrund laufen.
