Ubuntu 14.04でPassengerとNginxを使用してRailsアプリを展開する方法

前書き

あなたがRuby on Rails開発者である場合、おそらくWebアプリをホストするためにWebサーバーが必要です。 このチュートリアルでは、https://www.phusionpassenger.com/ [Phusion Passenger]をRailsに優しいWebサーバーとして使用する方法を示します。 Passengerは、インストール、構成、保守が簡単で、NginxまたはApacheで使用できます。 このチュートリアルでは、Ubuntu 14.04にPassengerとNginxをインストールします。

Railsアプリをデプロイする別の方法は、https://www.digitalocean.com/community/tutorials/how-to-use-the-1-click-ruby-on-rails-on-ubuntu-14-04を使用することです。 -image [1-Click Rails Installation]は、複数のリクエストを同時に処理できるHTTPサーバーであるhttp://unicorn.bogomips.org/[Unicorn]でNginxを使用します。

このチュートリアルの終わりまでに、Passenger / Nginx WebサーバーにテストRailsアプリケーションがデプロイされ、ドメインまたはIPアドレスを介してアクセスできるようになります。

ステップ1-ドロップレットを作成する

新しいUbuntu 14.04ドロップレットを作成します。 小規模なサイトの場合は、512 MBのプランで十分です。

画像:https://assets.digitalocean.com/articles/Rails_Passenger_Nginx/1.png [液滴サイズ]

メモリ消費量が少ないため、32ビットUbuntuイメージを選択することをお勧めします(64ビットプログラムは、32ビット版よりも約50%多くのメモリを使用します)。 ただし、より大きなマシンが必要な場合、または4 GBを超えるRAMにアップグレードする可能性がある場合は、64ビットバージョンを選択する必要があります。

image:https://assets.digitalocean.com/articles/Rails_Passenger_Nginx/2.png [ドロップレット画像]

ステップ2-Sudoユーザーを追加する

ドロップレットが作成された後、追加のシステム管理作業が必要です。 システムユーザーを作成し、サーバーを保護する必要があります。

https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 [サーバーの初期セットアップ]の記事に従ってください。

このチュートリアルでは、sudo特権を持つ基本ユーザーを作成する必要があります。 この例では、_rails_ユーザーを使用します。 ユーザーに別の名前がある場合は、次の手順で正しいパスを使用していることを確認してください。

ステップ3(オプション)-ドメインのセットアップ

サイトが確実に表示されるようにするには、DNSレコードを設定して、ドメイン名を新しいサーバーに向ける必要があります。 詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [ホスト名の設定]のリンクをクリックしてください。

ただし、IPアドレスを介してサイトにアクセスできるため、この手順はオプションです。

ステップ4-Rubyをインストールする

ソースから手動でRubyをインストールします。

何かを行う前に、更新を実行して、インストールするすべてのパッケージが最新であることを確認する必要があります。

sudo apt-get update

次に、いくつかの依存関係をインストールします。 これにより、インストールが可能な限りスムーズになります。

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

Rubyソースファイル用の一時フォルダーを作成します。

mkdir ~/ruby

新しいフォルダーに移動します。

cd ~/ruby

最新の安定したRubyソースコードをダウンロードします。 これを書いている時点では、これはバージョン2.1.3です。 現在の最新バージョンはhttps://www.ruby-lang.org/en/downloads/[Rubyのダウンロード] Webサイトから入手できます。 新しいバージョンが利用可能な場合は、次のコマンドのリンクを置き換える必要があります。

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

ダウンロードしたファイルを解凍します。

tar -xzf ruby-2.1.3.tar.gz

抽出されたディレクトリを選択します。

cd ruby-2.1.3

スクリプトを実行してください。 依存関係をチェックして新しい* Makefile *を作成するため、これには時間がかかります。これには、コードをコンパイルするために必要な手順が含まれます。

./configure

Makefileを使用して実行可能プログラムをビルドするユーティリティを実行します。 この手順には少し時間がかかる場合があります。

make

次に、パラメーターを指定して同じコマンドを実行します。 コンパイルされたバイナリを `+ / usr / local / bin +`フォルダにコピーしようとします。 この手順では、このディレクトリに書き込むためにルートアクセスが必要です。 また、少し時間がかかります。

sudo make install

これで、Rubyがシステムにインストールされます。 次のコマンドを使用して確認できます。コマンドを実行すると、Rubyバージョンが出力されます。

ruby -v

最後に、一時フォルダーを削除できます。

rm -rf ~/ruby

ステップ5-PassengerとNginxをインストールする

過去にPassengerをインストールする好ましい方法は、RubyGemsを介した一般的なインストール( + passenger-install-nginx-module +)を使用することでした。

ただし、高度なパッケージングツール(APT)を使用してUbuntuにPassengerをインストールできるようになりました。これを使用します。 このようにして、Nginxを使用したPassengerのインストールと、さらに重要な更新プロセスは非常に簡単です。

最初に、PGPキーをインストールします。

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

APTソースファイルを作成します(sudo権限が必要です)。

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

そして、ファイルに次の行を挿入します。

deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main
  • CTRL + x を押して終了し、 y と入力してファイルを保存し、 ENTER *を押してファイルの場所を確認します。

このファイルの所有者と許可を変更します。

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

APTキャッシュを更新します。

sudo apt-get update

最後に、NginxでPassengerをインストールします。

sudo apt-get install nginx-extras passenger

この手順により、Rubyバージョンが古いバージョンに上書きされます。 これを解決するには、間違ったRubyの場所を削除して、正しいRubyバイナリファイルへの新しいシンボリックリンクを作成します。

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

ステップ6-Webサーバーのセットアップ

Nginx構成ファイルを開きます。

sudo nano /etc/nginx/nginx.conf

ブロック内で次の行を見つけます。

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

両方のコメントを外します。 行のパスを更新します。 彼らはこのように見えるはずです:

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

ファイルを保存して終了します。

ステップ7-デプロイ

この時点で、独自のRailsアプリケーションがあれば準備できます。 既存のアプリをデプロイする場合は、プロジェクトをサーバーにアップロードして、「+ / etc / nginx / sites-available / default +」ステップにスキップできます。

このチュートリアルでは、Dropletで新しいRailsアプリを直接作成します。 新しいアプリを作成するには、* rails * gemが必要です。

ユーザーのホームディレクトリに移動します(そうしないと、「+ No such file or directory-getcwd + `」というエラーが表示されます)

cd ~
  • rails * gemをインストールします(インストールを高速化するための追加のドキュメントはありません)。 これにはまだ数分かかります。

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

これで、新しいアプリを作成できます。 この例では、名前を使用します。 別の名前を使用する場合は、必ず正しいパスを使用してください。 後で手動で実行するため、Bundlerのインストールはスキップします。

rails new testapp --skip-bundle

ディレクトリを入力してください:

cd testapp

ここで、JavaScript実行環境をインストールする必要があります。 gemとしてインストールできます。 それをインストールするには、* Gemfile *を開きます。

nano Gemfile

次の行を見つけます。

# gem 'therubyracer',  platforms: :ruby

そしてコメントを外します:

gem 'therubyracer',  platforms: :ruby

ファイルを保存し、Bundlerを実行します。

bundle install

デフォルトのNginx設定を無効にする必要があります。 Nginx構成ファイルを開きます。

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

行を見つけます。

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

次のようにコメントアウトします。

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

ファイルを保存してください。

次に、アプリのNginx構成ファイルを作成します。

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

次の「+ server +」ブロックを追加します。 設定について以下に説明します。

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

このファイルでは、ポート80でのリッスンを有効にし、ドメイン名を設定し、Passengerを有効にし、新しいプロジェクトの_public_ディレクトリにルートを設定します。 この行は、Railsアプリのアップロード場所に合わせて編集するものです。

ドメインをこのアプリに割り当てたくない場合は、その行をスキップするか、IPアドレスを使用できます。

セットアップをテストするために、Rails * Welcome aboard *ページを表示します。 ただし、これはアプリケーションが開発環境で開始された場合にのみ機能します。 Passengerはデフォルトで実稼働環境でアプリケーションを起動するため、 `+ passenger_app_env +`オプションでこれを変更する必要があります。 アプリの運用準備ができている場合は、この設定を省略してください。

ファイルを保存します(* CTRL + x y ENTER *)。

シンボリックリンクを作成します:

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

Nginxを再起動します。

sudo nginx -s reload

これで、アプリのウェブサイトにアクセスできるようになります。 DropletのドメインまたはIPアドレスに移動します:

http://droplet_ip_address

そして結果を検証します。

画像:https://assets.digitalocean.com/articles/Rails_Passenger_Nginx/3.png [テストページ]

Railsテストアプリがサーバー上でライブ表示されるはずです。

ステップ8-定期的に更新する

Rubyを更新するには、このチュートリアルのステップ4に示すように、最新バージョンをコンパイルする必要があります。

PassengerをNginxで更新するには、基本的なシステムアップデートを実行する必要があります。

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

ただし、利用可能な新しいシステムRubyバージョンがある場合、Ruby(ソースからインストール)を上書きする可能性があります。 このため、Rubyの既存のバージョンを削除し、Rubyバイナリファイルへの新しいシンボリックリンクを作成するためのコマンドを再実行する必要がある場合があります。 これらは、このチュートリアルのステップ5の最後にリストされています。

更新プロセスの後、Webサーバーを再起動する必要があります。

sudo service nginx restart