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

Einführung

In diesem Tutorial wird gezeigt, wie Sie https://www.phusionpassenger.com [Phusion Passenger] als Rails-freundlichen Webserver installieren, konfigurieren und warten können. Wir werden es in Apache unter Ubuntu 14.04 integrieren. Am Ende dieses Tutorials wird eine Test-Rails-Anwendung auf unserem Droplet bereitgestellt.

Wenn Sie Nginx gegenüber Apache bevorzugen, besuchen Sie https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-passenger-and-nginx-on-ubuntu-14 -04 [Bereitstellen einer Rails-App mit Passenger und Nginx unter Ubuntu 14.04], indem Sie dem Link folgen.

Voraussetzungen

Der erste Schritt besteht darin, ein neues Droplet zu erstellen. Für kleinere Websites reicht es aus, den 512-MB-Plan zu verwenden.

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 möglicherweise ein Upgrade auf mehr als 4 GB RAM durchführen, sollten Sie die 64-Bit-Version in Betracht ziehen.

Verwenden Sie unbedingt Ubuntu 14.04. Zum Zeitpunkt des Schreibens dieses Artikels verfügt Ubuntu 14.10 noch nicht über ein APT-Repository für Passagiere. Darüber hinaus bietet Ubuntu 14.04 einen weiteren Vorteil: Es handelt sich um eine LTS-Version, die für „Langzeit-Support“ steht. LTS-Releases sind als stabile Plattformen konzipiert, an denen wir uns lange halten können. Ubuntu garantiert, dass LTS-Releases fünf Jahre lang Sicherheitsupdates und andere Fehlerbehebungen erhalten.

  • Ubuntu 14.04 32-Bit-Droplet

Schritt 1 - Hinzufügen eines Sudo-Benutzers

Nachdem das Droplet erstellt wurde, sollten Sie einen Systembenutzer erstellen und den Server sichern. Sie können dies tun, indem Sie dem Artikel Initial Server Setup folgen.

Wenn Sie diesem Tutorial folgen möchten, benötigen Sie einen Basisbenutzer mit sudo-Berechtigungen. In diesem Beispiel wird der Benutzer * rail * verwendet. Wenn Ihr Benutzer einen anderen Namen hat, stellen Sie sicher, dass Sie in den nächsten Schritten die richtigen Pfade verwenden.

Schritt 2 (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.

Schritt 3 - 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 Bibliotheken und andere Abhängigkeiten. Dadurch wird die Installation so reibungslos wie möglich:

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 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.4. Die aktuellste Version finden Sie auf der Ruby website. 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.4.tar.gz

Dekomprimieren Sie die heruntergeladene Datei:

tar -xzf ruby-2.1.4.tar.gz

Wählen Sie das extrahierte Verzeichnis:

cd ruby-2.1.4

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 zu kopieren. Für diesen Schritt ist Root-Zugriff erforderlich, um in dieses Verzeichnis zu schreiben:

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

Wenn Ihre Ruby-Installation erfolgreich war, sollte die Ausgabe folgendermaßen aussehen:

ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-linux]

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

rm -rf ~/ruby

Schritt 4 - Installieren Sie Apache

Geben Sie zum Installieren von Apache den folgenden Befehl ein:

sudo apt-get install apache2

Ja, das ist alles!

Schritt 5 - Passenger installieren

Installieren Sie zunächst den PGP-Schlüssel für den Repository-Server:

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

Erstellen Sie eine APT-Quelldatei:

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

Fügen Sie die folgende Zeile ein, um das Passagier-Repository zur Datei hinzuzufügen:

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 die EINGABETASTE, um den Speicherort der Datei zu bestätigen.

Ändern Sie den Eigentümer und die Berechtigungen für diese Datei, um den Zugriff auf * root * einzuschränken:

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:

sudo apt-get install libapache2-mod-passenger

Stellen Sie sicher, dass das Passenger Apache-Modul; es ist vielleicht schon aktiviert:

sudo a2enmod passenger

Starten Sie Apache neu:

sudo service apache2 restart

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 6 - 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 / apache2 / sites-available / default +" fortfahren.

Für dieses Tutorial erstellen wir eine neue Rails-App direkt auf dem Droplet. Wir werden das Juwel brauchen, um die neue App zu erstellen.

Wechseln Sie in das Home-Verzeichnis Ihres Benutzers:

cd ~

Installieren Sie das Juwel ohne zusätzliche Dokumentation, was die Installation beschleunigt. 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, müssen Sie die Pfade in den anderen Befehlen und Dateien in diesem Abschnitt aktualisieren.

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 zuerst das * Gemfile *:

nano Gemfile

Suchen Sie die folgende Zeile:

# gem 'therubyracer',  platforms: :ruby

Kommentar entfernen:

gem 'therubyracer',  platforms: :ruby

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

bundle install

Jetzt müssen wir eine virtuelle Hostdatei für unser Projekt erstellen. Dazu kopieren wir den virtuellen Apache-Standardhost:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/testapp.conf

Öffnen Sie die Konfigurationsdatei:

sudo nano /etc/apache2/sites-available/testapp.conf

Bearbeiten Sie es oder ersetzen Sie den vorhandenen Inhalt, damit Ihr Endergebnis mit der unten gezeigten Datei übereinstimmt. Änderungen, die Sie vornehmen müssen, sind in hervorgehoben. Denken Sie daran, Ihren eigenen Domainnamen und den richtigen Pfad zu Ihrer Rails-App zu verwenden:

<VirtualHost *:80>


   ServerAdmin webmaster@localhost
   DocumentRoot

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined




</VirtualHost>

Grundsätzlich ermöglicht diese Datei das Abhören unseres Domainnamens auf Port 80, das Festlegen eines Alias ​​für die Unterdomäne * www *, das Festlegen der E-Mail-Adresse unseres Serveradministrators, das Festlegen des Stammverzeichnisses für das öffentliche Verzeichnis unseres neuen Projekts und den Zugriff auf unsere Seite. Weitere Informationen zu Apache virtual hosts finden Sie unter Verknüpfung.

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 * RailsEnv * ändern. Wenn Ihre App produktionsbereit ist, möchten Sie diese Einstellung deaktivieren.

Wenn Sie dieser App Ihre Domain nicht zuweisen möchten, können Sie die Zeilen "+ ServerName " und " ServerAlias ​​+" überspringen oder Ihre IP-Adresse verwenden.

Speichern Sie die Datei (STRG + X, Y, EINGABE).

Deaktivieren Sie die Standard-Site, aktivieren Sie Ihre neue Site und starten Sie Apache neu:

sudo a2dissite 000-default
sudo a2ensite testapp
sudo service apache2 restart

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

http://droplet_ip_address

Stellen Sie sicher, dass Ihre App bereitgestellt ist. Sie sollten entweder Ihre benutzerdefinierte Anwendung oder die Standard-Rails-Seite * Willkommen an Bord * sehen:

Die Rails-App ist jetzt live auf Ihrem Server.

Schritt 7 - Regelmäßig aktualisieren

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

Um Passenger und Apache 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 den vorhandenen Symlink zur Ruby-Binärdatei zu entfernen und einen neuen (richtigen) zu erstellen. Sie werden am Ende von Schritt 6 in diesem Lernprogramm aufgeführt.

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

sudo service apache2 restart