Bereitstellen einer Rails-App mit Passenger und Nginx unter Ubuntu 14.04

Einführung

Wenn Sie ein Ruby on Rails-Entwickler sind, benötigen Sie wahrscheinlich einen Webserver, um Ihre Web-Apps zu hosten. In diesem Tutorial erfahren Sie, wie Sie Phusion Passenger als Rails-freundlichen Webserver verwenden. Passenger ist einfach zu installieren, zu konfigurieren und zu warten und kann mit Nginx oder Apache verwendet werden. In diesem Tutorial installieren wir Passenger mit Nginx unter Ubuntu 14.04.

Eine alternative Methode zum Bereitstellen Ihrer Rails-App ist https://www.digitalocean.com/community/tutorials/how-to-use-the-1-click-ruby-on-rails-on-ubuntu-14-04 -image [1-Click Rails-Installation], das Nginx mit Unicorn verwendet, einem HTTP-Server, der mehrere Anforderungen gleichzeitig verarbeiten kann.

Am Ende dieses Tutorials wird eine Test-Rails-Anwendung auf Ihrem Passenger / Nginx-Webserver bereitgestellt, auf die Sie über eine Domain oder eine IP-Adresse zugreifen können.

Erster Schritt - Erstellen Sie Ihr Tröpfchen

Erstelle ein neues Ubuntu 14.04 Droplet. Für kleinere Sites ist es ausreichend, den 512-MB-Plan zu verwenden.

image: https: //assets.digitalocean.com/articles/Rails_Passenger_Nginx/1.png [Tröpfchengröße]

Möglicherweise möchten Sie das 32-Bit-Ubuntu-Image aufgrund des geringeren Speicherverbrauchs auswählen (64-Bit-Programme belegen etwa 50% mehr Speicher als ihre 32-Bit-Gegenstücke). Wenn Sie jedoch einen größeren Computer benötigen oder die Möglichkeit besteht, dass Sie auf mehr als 4 GB RAM aktualisieren, sollten Sie die 64-Bit-Version wählen.

image: https: //assets.digitalocean.com/articles/Rails_Passenger_Nginx/2.png [Droplet image]

Zweiter Schritt - Hinzufügen eines Sudo-Benutzers

Nachdem das Droplet erstellt wurde, sind zusätzliche Systemverwaltungsarbeiten erforderlich. Sie sollten einen Systembenutzer erstellen und den Server sichern.

Folgen Sie dem Artikel Initial Server Setup.

In diesem Lernprogramm sollten Sie einen Basisbenutzer mit Sudo-Berechtigungen erstellen. In diesem Beispiel wird der Benutzer rails verwendet. Wenn Ihr Benutzer einen anderen Namen hat, stellen Sie sicher, dass Sie in den nächsten Schritten die richtigen Pfade verwenden.

Dritter Schritt (optional) - Richten Sie Ihre Domain ein

Um sicherzustellen, dass Ihre Site verfügbar und sichtbar ist, müssen Sie Ihre DNS-Einträge so einrichten, dass Ihr Domain-Name auf Ihren neuen Server verweist. Weitere Informationen finden Sie unter einrichten eines Hostnamens, indem Sie dem Link folgen.

Dieser Schritt ist jedoch optional, da Sie über eine IP-Adresse auf Ihre Site zugreifen können.

Vierter Schritt - Installieren Sie Ruby

Wir werden Ruby manuell von der Quelle installieren.

Bevor wir etwas anderes tun, sollten wir ein Update ausführen, um sicherzustellen, dass alle Pakete, die wir installieren möchten, auf dem neuesten Stand sind:

sudo apt-get update

Installieren Sie als Nächstes einige Abhängigkeiten. Dies sollte die Installation so reibungslos wie möglich gestalten:

sudo apt-get install build-essential libssl-dev libyaml-dev libreadline-dev openssl curl git-core zlib1g-dev bison libxml2-dev libxslt1-dev libcurl4-openssl-dev nodejs libsqlite3-dev sqlite3

Erstellen Sie einen temporären Ordner für die Ruby-Quelldateien:

mkdir ~/ruby

In den neuen Ordner verschieben:

cd ~/ruby

Laden Sie den neuesten stabilen Ruby-Quellcode herunter. Zum Zeitpunkt des Schreibens ist dies die Version 2.1.3. Die aktuellste Version finden Sie auf der Website Download Ruby. Wenn eine neuere Version verfügbar ist, müssen Sie den Link im folgenden Befehl ersetzen:

wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.3.tar.gz

Dekomprimieren Sie die heruntergeladene Datei:

tar -xzf ruby-2.1.3.tar.gz

Wählen Sie das extrahierte Verzeichnis:

cd ruby-2.1.3

Führen Sie das Skript aus. Dies wird einige Zeit in Anspruch nehmen, da es nach Abhängigkeiten sucht und ein neues * Makefile * erstellt, das Schritte enthält, die zum Kompilieren des Codes ausgeführt werden müssen:

./configure

Führen Sie das Dienstprogramm aus, das das Makefile verwendet, um das ausführbare Programm zu erstellen. Dieser Schritt kann etwas länger dauern:

make

Führen Sie jetzt denselben Befehl mit dem Parameter aus. Es wird versucht, die kompilierten Binärdateien in den Ordner "+ / usr / local / bin +" zu kopieren. Für diesen Schritt ist Root-Zugriff erforderlich, um in dieses Verzeichnis zu schreiben. Es wird auch einige Zeit dauern:

sudo make install

Ruby sollte jetzt auf dem System installiert sein. Wir können es mit dem folgenden Befehl überprüfen, der die Ruby-Version ausgeben soll:

ruby -v

Schließlich können wir den temporären Ordner löschen:

rm -rf ~/ruby

Fünfter Schritt - Installieren Sie Passenger und Nginx

Die in der Vergangenheit bevorzugte Methode zur Installation von Passenger war die Verwendung einer allgemeinen Installation über RubyGems (+ Passenger-Install-Nginx-Modul +).

Sie können Passenger jetzt jedoch mit dem Advanced Packaging Tool (APT) auf Ubuntu installieren, das wir verwenden werden. Auf diese Weise ist die Installation und - was noch wichtiger ist - der Aktualisierungsprozess für Passenger mit Nginx wirklich einfach.

Installieren Sie zunächst einen PGP-Schlüssel:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7

Erstellen Sie eine APT-Quelldatei (Sie benötigen sudo-Berechtigungen):

sudo nano /etc/apt/sources.list.d/passenger.list

Und füge die folgende Zeile in die Datei ein:

deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main

Drücken Sie zum Beenden * STRG + x *, geben Sie * y * ein, um die Datei zu speichern, und drücken Sie dann * ENTER *, um den Speicherort der Datei zu bestätigen.

Ändern Sie den Besitzer und die Berechtigungen für diese Datei:

sudo chown root: /etc/apt/sources.list.d/passenger.list
sudo chmod 600 /etc/apt/sources.list.d/passenger.list

Aktualisieren Sie den APT-Cache:

sudo apt-get update

Zum Schluss installieren Sie Passenger mit Nginx:

sudo apt-get install nginx-extras passenger

Dieser Schritt überschreibt unsere Ruby-Version auf eine ältere. Um dies zu beheben, entfernen Sie einfach den falschen Ruby-Speicherort und erstellen Sie einen neuen Symlink zur richtigen Ruby-Binärdatei:

sudo rm /usr/bin/ruby
sudo ln -s /usr/local/bin/ruby /usr/bin/ruby

Schritt Sechs - Richten Sie den Webserver ein

Öffnen Sie die Nginx-Konfigurationsdatei:

sudo nano /etc/nginx/nginx.conf

Suchen Sie im Block die folgenden Zeilen:

# passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
# passenger_ruby /usr/bin/ruby;

Kommentieren Sie beide aus. Aktualisieren Sie den Pfad in der Zeile. Sie sollten so aussehen:

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/local/bin/ruby;

Speichern und schließen Sie die Datei.

Schritt Sieben - Bereitstellen

An diesem Punkt können Sie Ihre eigene Rails-Anwendung bereitstellen, wenn Sie eine bereit haben. Wenn Sie eine vorhandene App bereitstellen möchten, können Sie Ihr Projekt auf den Server hochladen und mit dem Schritt "+ / etc / nginx / sites-available / default +" fortfahren.

Für dieses Tutorial erstellen wir eine neue Rails-App direkt auf dem Droplet. Für die Erstellung der neuen App benötigen wir den Edelstein * Rails *.

Wechseln Sie in das Home-Verzeichnis Ihres Benutzers (andernfalls erhalten Sie die Fehlermeldung "+ Keine solche Datei oder solches Verzeichnis - getcwd +").

cd ~

Installieren Sie den Edelstein * Rails * (ohne zusätzliche Dokumentation, um die Installation zu beschleunigen). Dies wird noch einige Minuten dauern:

sudo gem install --no-rdoc --no-ri rails

Jetzt können wir eine neue App erstellen. In unserem Beispiel verwenden wir den Namen. Wenn Sie einen anderen Namen verwenden möchten, stellen Sie sicher, dass Sie die richtigen Pfade verwenden. Wir werden die Bundler-Installation überspringen, da wir sie später manuell ausführen möchten.

rails new testapp --skip-bundle

Geben Sie das Verzeichnis ein:

cd testapp

Jetzt müssen wir eine JavaScript-Ausführungsumgebung installieren. Es kann als Edelstein installiert werden. Um es zu installieren, öffne die * Gemfile *:

nano Gemfile

Suchen Sie die folgende Zeile:

# gem 'therubyracer',  platforms: :ruby

Und kommentiere es aus:

gem 'therubyracer',  platforms: :ruby

Speichern Sie die Datei und führen Sie Bundler aus:

bundle install

Wir müssen die Standardkonfiguration von Nginx deaktivieren. Öffnen Sie die Nginx-Konfigurationsdatei:

sudo nano /etc/nginx/sites-available/default

Finde die Zeilen:

listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

Kommentiere sie wie folgt aus:

# listen 80 default_server;
# listen [::]:80 default_server ipv6only=on;

Speicher die Datei.

Erstellen Sie jetzt eine Nginx-Konfigurationsdatei für unsere App:

sudo nano /etc/nginx/sites-available/testapp

Fügen Sie den folgenden + server + Block hinzu. Die Einstellungen werden nachfolgend erläutert.

server {
 listen 80 default_server;
 server_name ;
 passenger_enabled on;
 passenger_app_env development;
 root ;
}

In dieser Datei aktivieren wir das Abhören von Port 80, legen Ihren Domain-Namen fest, aktivieren Passenger und legen das Stammverzeichnis auf das Verzeichnis public unseres neuen Projekts fest. Die Zeile, die Sie bearbeiten möchten, entspricht dem Upload-Speicherort Ihrer Rails-App.

Wenn Sie dieser App Ihre Domain nicht zuweisen möchten, können Sie die Zeile überspringen oder Ihre IP-Adresse verwenden.

Um unser Setup zu testen, möchten wir die Rails * Welcome on Board * -Seite sehen. Dies funktioniert jedoch nur, wenn die Anwendung in der Entwicklungsumgebung gestartet wird. Passenger startet die Anwendung standardmäßig in der Produktionsumgebung, daher müssen wir dies mit der Option "+ passenger_app_env +" ändern. Wenn Ihre App produktionsbereit ist, möchten Sie diese Einstellung deaktivieren.

Speichern Sie die Datei (* STRG + x *, * y *, * EINGABE *).

Erstellen Sie einen Symlink dafür:

sudo ln -s /etc/nginx/sites-available/testapp /etc/nginx/sites-enabled/testapp

Starten Sie Nginx neu:

sudo nginx -s reload

Jetzt sollte auf die Website Ihrer App zugegriffen werden können. Navigieren Sie zur Domain oder IP-Adresse Ihres Droplets:

http://droplet_ip_address

Und überprüfe das Ergebnis:

Sie sollten die Rails-Test-App live auf Ihrem Server sehen.

Schritt Acht - Regelmäßig aktualisieren

Um Ruby zu aktualisieren, müssen Sie die neueste Version kompilieren, wie in Schritt 4 dieses Tutorials gezeigt.

Um Passenger mit Nginx zu aktualisieren, müssen Sie ein grundlegendes Systemupdate ausführen:

sudo apt-get update && sudo apt-get upgrade

Wenn jedoch eine neue System-Ruby-Version verfügbar ist, wird sie wahrscheinlich unseren Ruby (von der Quelle installiert) überschreiben. Aus diesem Grund müssen Sie möglicherweise die Befehle erneut ausführen, um die vorhandene Version von Ruby zu entfernen und einen neuen Symlink zur Ruby-Binärdatei zu erstellen. Sie werden am Ende von Schritt 5 in diesem Lernprogramm aufgeführt.

Nach dem Aktualisierungsvorgang müssen Sie den Webserver neu starten:

sudo service nginx restart
Related