18.3 Konfigurieren der Rails-Applikation auf dem Server 

Konfiguration 

Als Nächstes müssen wir für den Apache-Server eine Konfigurationsdatei im Verzeichnis /etc/apache2/sites-available anlegen.
Konfigurations- datei
Der Name der Konfigurationsdatei kann beliebig gewählt werden. Es ist üblich, die Datei nach dem Schema applikationsname.conf, wie z. B. railsair.conf, zu benennen.
Die wichtigsten Einstellungen werden im Folgenden näher erläutert.
- IP-Adresse oder Domainname
Mit der Option ServerName wird der Domainname angegeben, über den die Web-Applikation aufrufbar sein soll. Mit der Option Server- Alias kann ein weiterer Domainname angegeben werden.
- Verzeichnis der Web-Applikation
Die Option DocumentRoot legt das Verzeichnis fest, in dem die Web- Applikation liegt. Für unser Beispiel wählen wir das Verzeichnis /srv/www/railsair/current/public Der Grund für die Verwendung des Verzeichnisses current wird im Abschnitt kap_deployment_capistrano auf Seite kap_deployment_capistrano näher erläutert.
- Symbolische Links erlauben
Für das Deployment mit Capistrano muss dem Webserver mit der Einstellung Options FollowSymLinks mitgeteilt werden, dass dieser symbolische Links akzeptiert.
- Load Balancer definieren
In den Einstellungen Proxy balancer://railsair_cluster geben Sie alle Mongrel-Server an, auf die der Apache-Webserver die Anfragen verteilen soll.
- Wartungsseite
Falls eine Datei maintenance.html vorhanden ist, werden alle Anfragen an diese Datei umgeleitet. Dies ist praktisch, wenn Sie Ihre Applikation für Wartungsarbeiten deaktivieren wollen. Mit einem Capistrano-Befehl (siehe Abschnitt kap_deployment_capistrano auf Seite kap_deployment_capistrano) kann die »Wartungsseite« aktiviert bzw. deaktiviert werden.
- Caching-Dateien werden von Apache ausgeführt
Alle HTML-Dateien, die als Cache-Dateien vorliegen, werden direkt vom Apache-Server ausgeliefert, ohne dass die Rails-Applikation ausgeführt wird.
- Nicht-statische Seiten werden von Mongrel-Servern ausgeführt
Alle Anfragen, für die keine statischen Dateien existieren, werden an die Mongrel-Server (Cluster), die in den Load-Balancer-Einstellungen vorgenommen wurden, weitergleitet bzw. verteilt.
- Komprimieren von Textdateien
Um die Datenmenge an Daten, die an den Client geschickt werden, zu minimieren, kann festgelegt werden, dass Textdateien (HTML, CSS, JavaScript) vorher komprimiert werden. Der Browser dekomprimiert die Dateien dann automatisch während des Ladevorgangs. Diese Einstellungen sind optional.
Railsair
Die Konfigurationsdatei für unsere Beispiel-Applikation Railsair enthält folgende Einstellungen:
Listing /etc/apache2/sites-available/railsair.conf
NameVirtualHost *:80 < VirtualHost *:80 > # Alternativ kann auch eine IP-Adresse angegeben werden # < VirtualHost 78.47.111.82:80 > ServerName railsair.com ServerAlias www.railsair.com # Verzeichnis des public-Verzeichnisses der Railsapplikation DocumentRoot /srv/www/railsair/current/public # Symbolische Links erlauben und # Sicherheitseinstellungen < Directory /srv/www/railsair/current/public > Options FollowSymLinks AllowOverride None Order allow,deny Allow from all < /Directory > # Loadbalancer # Verteilen der Anfragen auf die drei Mongrel-Server < Proxy balancer://railsair_cluster > BalancerMember http://127.0.0.1:8020 BalancerMember http://127.0.0.1:8021 BalancerMember http://127.0.0.1:8022 < /Proxy > RewriteEngine On # Falls Datei maintenance.html vorhanden ist, alle Anfragen # an diese Datei umleiten RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f RewriteCond %{SCRIPT_FILENAME} !maintenance.html RewriteRule ^.*$ /system/maintenance.html [L] # Liefere die index.html aus, falls vorhanden, # wenn nur die Domain ohne Pfad aufgerufen wird. RewriteRule ^/$ /index.html [QSA] # Liefere HTML-Cache-Dateien direkt aus RewriteRule ^([^.]+)$ $1.html [QSA] # Alle nicht-statischen Anfragen, werden an den Cluster # geschickt RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f # ACHTUNG: Den nachfolgenden Befehl bitte in eine # Zeile schreiben! RewriteRule ^/(.*)$ balancer://railsair_cluster%{REQUEST_URI} [P,QSA,L] # Komprimierung von HTML-, Text- und XML-Dateien. AddOutputFilterByType DEFLATE text/html text/plain text/xml BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html ErrorLog /var/log/apache2/error.railsiar.log CustomLog /var/log/apache2/access.railsair.log combined < /VirtualHost >
Konfigurationsdatei aktivieren
Damit die Einstellungen wirksam werden, muss die Konfigurationsdatei Konfigurationsaktiviert und der Apache-Server neu gestartet werden.Listing Konfigurationsdatei aktivieren
a2ensite railsair.conf
Es wird eine Warnmeldung ausgegeben, dass das Verzeichnis für die Website noch nicht vorhanden ist. Wir werden das im nächsten Schritt nachholen.
Verzeichnis für Railsprojekt erstellen 

Anschließend legen wir das Verzeichnis an, in dem die Rails-Applikation per Capistrano installiert wird. Außerdem legen wir fest, dass das Verzeichnis dem User und der Gruppe deploy zugeordnet wird.
Listing Verzeichnis anlegen für die Rails-Applikation
mkdir /srv/www/railsair chown deploy:deploy /srv/www/railsair
Statische Seite testen 

Testdatei anlegen
Wir haben zwar noch nicht die Rails-Applikation auf den Server übertragen, legen aber trotzdem eine Datei index.html im Verzeichnis public an, um zu überprüfen, ob der Apache-Server diese statische Seite ausliefert.
Listing Test-Datei anlegen
mkdir -p /srv/www/railsair/current/public echo 'hallo welt' > /srv/www/railsair/current/public/index.html
Abbildung Testseite
Mongrel-Cluster-Konfiguration vorbereiten 

Für den Mongrel-Cluster benötigen wir eine Konfiguraiontsdatei, in der u. a. festgelegt wird, wie viele Mongrel-Server gestartet werden sollen und unter welcher Port-Nummer diese auf dem Server laufen sollen. Diese Datei kann mit einem sogenannten Capistrano-Task automatisch angelegt werden. Jedoch müssen die Rechte entsprechend gesetzt werden. Daher legen wir das Verzeichnis /etc/mongrel_cluster an und setzen die erforderlichen Rechte:
Listing Mongrel
mkdir -p /etc/mongrel_cluster chown deploy:deploy /etc/mongrel_cluster
Die Arbeiten auf dem Server sind damit vorerst abgeschlossen. Die folgenden Schritte werden auf dem Entwicklungsrechner durchgeführt.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.