Bereitstellen der Rails-Anwendung mit Capistrano und Phusion Passenger

Die Bereitstellung einer Rails-Anwendung auf den Servern ist eine komplizierte Aufgabe, wenn sie manuell durchgeführt wird, da wir uns bei den Servern anmelden, den Code jedes Mal vom lokalen System hochladen und die Sicherung der Updates verwalten müssen, wenn wir sie wiederherstellen möchten.

Der Prozess nimmt viel Zeit in Anspruch und wir müssen die Anwendungsserver jedes Mal stoppen, starten und neu starten, wenn wir ein Update durchführen müssen. Diese Aufgabe kann mit diesen beiden Bereitstellungstools vereinfacht werden, d. h Capistrano Und Phusion-Passagier (auch als „mod_rails“ bezeichnet).

Der Installationsvorgang für beide Tools ist ziemlich gleich, da beide Tools als Rails-Gems installiert werden. Das ist die Spezialität von Rails-Framework dass es über alle erforderlichen Werkzeuge verfügt, um Build as Gems zu betreiben.

Der Unterschied besteht jedoch darin, dass Capistrano dabei hilft, den Code hochzuladen und bereitzustellen Phusion-Passagier ist ein Apache-Modul, das uns hilft, eine Rails-Anwendung im Handumdrehen auf Apache bereitzustellen.

Die Installation der Tools erfolgt wie folgt:

Schritte zur Installation von Capistrano gem

#sudo Gem installiert Capistrano

Dieser Befehl installiert das Capistrano-Gem und Sie können das Capistrano-Tool in Ihrer Rails-Anwendung verwenden, um es auf dem Server bereitzustellen.

Schritte zur Installation des Phusion-Beifahrers

#su –

Für die Installation des Phusion-Passagiers benötigen wir Root-Berechtigungen, da einige für die Installation verwendete Dateien kompiliert werden müssen, wofür Root-Berechtigungen erforderlich sind.

#gem Passagier installieren

Dieser Befehl installiert das Passenger-Gem. Wir benötigen keine Installation von Passenger in unserem lokalen System, um es nutzen zu können. Wir müssen den Passenger auf dem Serversystem installieren, auf dem wir die Anwendung bereitstellen möchten. Da es sich bei Passenger um ein Apache-Modul handelt, müssen wir das Apache-Modul dafür mit dem folgenden Befehl installieren.

#passenger-install-apache2-module

Dieser Befehl installiert das Apache-Modul für das Passagiertool. Während der Installation werden im Gegensatz zur Capistrano-Gem-Installation verschiedene Anforderungen überprüft.

Es gibt Abhängigkeiten, die installiert werden müssen, um das Passenger Apache-Modul zu installieren. Über die Abhängigkeiten müssen wir uns keine großen Gedanken machen, da der Installationsprozess selbst die Verfügbarkeit der Abhängigkeiten prüft und uns, falls diese nicht verfügbar sind, die Befehle zur Installation der Abhängigkeiten gibt. Wir müssen nur den darin enthaltenen Anweisungen folgen und Passenger wird installiert und ist einsatzbereit. Während der Installation werden wir aufgefordert, wie folgt Code zur Apache-Konfigurationsdatei hinzuzufügen:

LoadModule Passenger_module /somewhere/passenger-xxx/ext/apache2/mod_passenger.so PassengerRuby /usr/bin/ruby PassengerRoot /somewhere/passenger/xxx PassengerMaxPoolSize 10

Wenn wir diese Abhängigkeiten nicht installieren möchten und mittendrin abbrechen, wird die Installation abgebrochen, da der Passenger ohne diese Abhängigkeiten nicht ausgeführt werden kann. Beachten Sie, dass Passenger nur auf dem Server installiert sein muss und nicht auf unserem lokalen System. Sobald diese beiden Tools installiert sind, bieten sie uns zusammen eine sehr flexible und einfache Möglichkeit, die Rails-Anwendung auf einer beliebigen Anzahl von Servern gleichzeitig bereitzustellen.

Um Capistrano zum Bereitstellen Ihrer Anwendung zu verwenden, müssen Sie Ihre Anwendung mit diesem Befehl kappen:

../rails_app # capify

Capistrano liest Anweisungen aus einer Capfile und verarbeitet sie wie darin angegeben. In Capfile teilen Sie capistrano alle Server mit, mit denen Sie eine Verbindung herstellen möchten, und die Aufgaben, die Sie auf diesen Servern ausführen möchten. Die Capfile enthält ein Ruby-Skript, das mit einem großen Satz Hilfssyntax erweitert ist, um die Definition von Serverrollen und -aufgaben zu vereinfachen. Der Beispielcode der Capfile sieht folgendermaßen aus:

Rolle :libs, „crimson.capify.org“, „magenta.capify.org“ Rolle :files, „fuchsia.capify.org“ Aufgabe :search_libs, :roles => :libs führen „ls -x1 /usr/lib | grep -i xml“ Task beenden :count_libs, :roles => :libs führt „ls -x1 /usr/lib |“ aus wc -l“ Ende desc „Link in der Produktionsdatenbank.yml“ Aufgabe :link_produktion_db Führen Sie „ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml“ aus Ende

Wenn wir Capistrano verwenden, müssen wir die Struktur der Anwendung mit dem folgenden Befehl einrichten:

../rails_app # cap deploy:setup

Wenn wir diesen Befehl in unserer Anwendung ausführen, richtet Capistrano die Anwendungsstruktur ein. Die Anwendung verfügt nach der Bereitstellung über Ordner mit Namen wie „Freigegeben“, „Releases“ und einen symbolischen Link namens „Aktuell“, der auf den neuesten Code der neuesten Version im Release-Ordner verweist.

Immer wenn wir den Code ändern oder aktualisieren und ihn über Capistrano veröffentlichen, wird der neue Ordner mit der Release-Versionsnummer zum Release-Ordner hinzugefügt (die Versionsnummer basiert auf dem Zeitstempel). Der aktuelle Sym-Link verweist auf die neueste Version, die den neuesten Code enthält.

Die in Capfile geschriebenen Aufgaben sind lesbar und für jemanden, der mit der Befehlszeilen-Linux-Shell arbeiten kann, sehr einfach zu schreiben. Um anzuzeigen, welche Aufgaben in der Capfile vorhanden sind, sollten wir diesen Befehl verwenden, der die selbst dokumentierten Daten anzeigt:

#cap -T oder cap -vT

(-v steht für ausführliche Beschreibungen)

Daraufhin wird die Liste der Aufgaben zusammen mit den Beschreibungen wie folgt angezeigt:

cap deploy # Stellt Ihr Projekt bereit. capploy:check # Testbereitstellungsabhängigkeiten. cap deploy:cleanup # Bereinigt alte Releases. cap deploy:migrate # Führen Sie die Aufgabe „Rake migrieren“ aus. cap deploy:pending # Zeigt die Commits seit Ihrer letzten Bereitstellung an.

Bedenken Sie, dass Sie das Ruby-Skript in capfile geschrieben haben, um die Anwendung bereitzustellen. Wenn Sie nun die Anwendung bereitstellen möchten, müssen Sie Folgendes an der Eingabeaufforderung ausführen:

#-Cap-Bereitstellung

Anschließend stellt der Capistrano die Anwendung entsprechend den Angaben zu den Servern und dem im Capfile angegebenen Pfad der Anwendung bereit. Wenn Sie Mongrel-Anwendungsserver für jede Anwendung ausführen, müssen Sie den Befehl zum Starten des Mongrel-Servers als Aufgabe in die Capfile schreiben.

Angenommen, Sie verwenden Phusion Passenger zum Ausführen der Anwendung, dann müssen Sie die Aufgabe zum Starten und Neustarten der Anwendung mithilfe von Phusion Passenger in die Cap-Datei einfügen.

Desc „Anwendung starten“-Aufgabe: starten und ausführen „touch #{current_path}/tmp/restart.txt“ Ende desc „Anwendung neu starten“-Aufgabe: neu starten und ausführen „touch #{current_path}/tmp/restart.txt“ Ende

Die Standardumgebung, in der der Phusion-Passagier die Anwendung ausführt, ist die Produktionsumgebung. Wenn wir die Umgebung ändern möchten, müssen wir RAILS_ENV in der Umgebungsdatei ändern.

Wenn Sie Phusion Passenger verwenden, das als Apache-Modul ausgeführt wird, führt es den Spawn-Server für die Anwendung aus und erzeugt bei jedem Neustart den Server mit einer neuen Instanz. Mit Phusion Passenger können Sie Anwendungen auf einem virtuellen Host-URI bereitstellen. Dazu müssen Sie den virtuellen Host-Eintrag in der Apache-Konfigurationsdatei hinzufügen, wie im folgenden Beispielcode gezeigt:

Servername www.domain-name.com DocumentRoot /webapps/rails_app/public Von allen Optionen zulassen – MultiViews

Dabei müssen wir auf folgende Bedingungen achten:

*Das Dokumentenstammverzeichnis des virtuellen Hosts muss auf Ihr Dokument verweisen Ruby auf Schienen öffentlichen Ordner der Anwendung. *Die Apache-Berechtigungen pro Verzeichnis müssen den Zugriff auf diesen Ordner ermöglichen. *MultiViews müssen für diesen Ordner deaktiviert sein.

Wenn Sie die Bereitstellung auf einem sub_URI durchführen möchten und davon ausgehen, dass wir bereits über einen virtuellen Host verfügen, müssen wir den Code wie unten gezeigt hinzufügen:

Servername www.domain-name.com DocumentRoot /websites/phusion Von allen RailsBaseURI /rails-Optionen -MultiViews zulassen

Und wenn Sie Ihr wollen Ruby on Rails-Anwendung Um von einer URL wie http://www.domain-name.com/rails aus darauf zugreifen zu können, müssen Sie einen symbolischen Link vom öffentlichen Ordner Ihrer Ruby on Rails-Anwendung zu einem Verzeichnis im Dokumentstammverzeichnis erstellen.

Zum Beispiel:

#ln -s /webapps/rails-app/public /websites/phusion/rails

Sobald Sie diesen Symlink erstellt haben, müssen Sie Apache neu starten und die Anwendung wird bereitgestellt. Sie können mehrere Rails-Anwendungen unter einem virtuellen Host bereitstellen, indem Sie RailsBaseURI mehrmals angeben.

Sobald die Anwendung gestartet ist und wir die Anwendung neu starten möchten, müssen wir eines dieser Dinge tun:

a) Starten Sie den Apache-Webserver neu. b) Verwenden Sie den Befehl

# touch ../path_to_app/rails_app/tmp/restart.txt

Da wir Phusion Passenger verwenden, ein Apache-Modul, wird das laufende Protokoll sowohl in Apache error_logs als auch in der Anwendungsprotokolldatei protokolliert. Manchmal werden diese nicht im Rails-Anwendungsprotokoll protokolliert. In diesem Fall müssen Sie die Berechtigungen überprüfen und dieses Problem beheben, indem Sie die Berechtigungen der Protokolldatei ändern.

Wenn Sie Capistrano mit Phusion Passenger verwenden, können Sie die Anwendung auf mehr als einem Server gleichzeitig bereitstellen und die Anwendung sogar in einem einzigen Lauf starten und neu starten. Daher ist es viel einfacher, a bereitzustellen Rails-Anwendung mit Capistrano und Phusion-Passagier.

Nehmen Sie Kontakt mit uns auf.

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman