Ubuntu14.04でPassengerとApacheを使用してRailsアプリをデプロイする方法
序章
このチュートリアルでは、 Pusion Passenger をRails対応のWebサーバーとしてインストールする方法を示します。これは、インストール、構成、および保守が簡単です。 Ubuntu14.04のApacheに統合します。 このチュートリアルの終わりまでに、DropletにテストRailsアプリケーションをデプロイします。
ApacheよりもNginxを好む場合は、リンクをたどって、Ubuntu14.04にPassengerとNginxを使用してRailsアプリをデプロイする方法をご覧ください。
前提条件
最初のステップは、新しいドロップレットを作成することです。 小規模なサイトの場合は、512MBのプランを使用するだけで十分です。
メモリ消費量が少ないため、32ビットUbuntuイメージを選択することをお勧めします(64ビットプログラムは、32ビットプログラムよりも約50%多くのメモリを使用します)。 ただし、より大きなマシンが必要な場合、または4 GBを超えるRAMにアップグレードする可能性がある場合は、64ビットバージョンを検討する必要があります。
必ずUbuntu14.04を使用してください。 この記事の執筆時点では、Ubuntu14.10にはまだPassangerAPTリポジトリがありません。 さらに、Ubuntu14.04には追加の利点があります。それは「長期サポート」を表すLTSバージョンです。 LTSリリースは、私たちが長期間使用できる安定したプラットフォームになるように設計されています。 Ubuntuは、LTSリリースが5年間セキュリティアップデートやその他のバグ修正を受け取ることを保証します。
- Ubuntu14.0432ビットドロップレット
ステップ1—Sudoユーザーを追加する
ドロップレットを作成したら、システムユーザーを作成し、サーバーを保護する必要があります。 これを行うには、サーバーの初期設定の記事に従います。
このチュートリアルに従う場合は、sudo権限を持つ基本ユーザーが必要です。 この例では、railsユーザーを使用します。 ユーザーに別の名前がある場合は、次の手順で正しいパスを使用していることを確認してください。
ステップ2(オプション)—ドメインを設定する
サイトが確実に表示されるようにするには、ドメイン名が新しいサーバーを指すようにDNSレコードを設定する必要があります。 リンクをたどると、ホスト名の設定の詳細を確認できます。
ただし、IPアドレスを介してサイトにアクセスできるため、この手順はオプションです。
ステップ3—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 libsqlite3-dev sqlite3
Rubyソースファイル用の一時フォルダを作成します。
mkdir ~/ruby
新しいフォルダに移動します。
cd ~/ruby
最新の安定したRubyソースコードをダウンロードします。 この記事の執筆時点では、これはバージョン2.1.4です。 現在の最新バージョンは、RubyのWebサイトから入手できます。 新しいバージョンが利用可能な場合は、次のコマンドでリンクを置き換える必要があります。
wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.4.tar.gz
ダウンロードしたファイルを解凍します。
tar -xzf ruby-2.1.4.tar.gz
抽出したディレクトリを選択します。
cd ruby-2.1.4
configureスクリプトを実行します。 これは、依存関係をチェックし、新しい Makefile を作成するため、しばらく時間がかかります。これには、コードをコンパイルするために実行する必要のある手順が含まれます。
./configure
make ユーティリティを実行します。このユーティリティは、Makefileを使用して実行可能プログラムをビルドします。 この手順には少し時間がかかる場合があります。
make
ここで、installパラメーターを使用して同じコマンドを実行します。 コンパイルされたバイナリを/usr / local /binフォルダにコピーしようとします。 この手順では、このディレクトリに書き込むためにルートアクセスが必要です。
sudo make install
これで、Rubyがシステムにインストールされます。 次のコマンドで確認できます。これにより、Rubyバージョンが出力されます。
ruby -v
Rubyのインストールが成功すると、次のような出力が表示されます。
ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-linux]
最後に、一時フォルダを削除できます。
rm -rf ~/ruby
ステップ4—Apacheをインストールします
Apacheをインストールするには、次のコマンドを入力します。
sudo apt-get install apache2
はい、それだけです!
ステップ5—Passengerをインストールします
まず、リポジトリサーバーのPGPキーをインストールします。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
APTソースファイルを作成します。
sudo nano /etc/apt/sources.list.d/passenger.list
次の行を挿入して、Passengerリポジトリをファイルに追加します。
deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main
CTRL + X を押して終了し、 Y と入力してファイルを保存し、Enterキーを押してファイルの場所を確認します。
このファイルの所有者と権限を変更して、rootへのアクセスを制限します。
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
最後に、Passengerをインストールします。
sudo apt-get install libapache2-mod-passenger
PassengerApacheモジュールを確認してください。 すでに有効になっている可能性があります。
sudo a2enmod passenger
Apacheを再起動します。
sudo service apache2 restart
この手順により、Rubyバージョンが古いバージョンに上書きされます。 これを解決するには、誤ったRubyの場所を削除し、正しいRubyバイナリファイルへの新しいシンボリックリンクを作成します。
sudo rm /usr/bin/ruby
sudo ln -s /usr/local/bin/ruby /usr/bin/ruby
ステップ6—デプロイ
この時点で、Railsアプリケーションの準備ができていれば、独自のRailsアプリケーションをデプロイできます。 既存のアプリをデプロイする場合は、プロジェクトをサーバーにアップロードして、/etc/apache2/sites-available/default
の手順にスキップできます。
このチュートリアルでは、Droplet上に直接新しいRailsアプリを作成します。 新しいアプリを作成するには、railsgemが必要になります。
ユーザーのホームディレクトリに移動します。
cd ~
rails gemを追加のドキュメントなしでインストールすると、インストールが高速になります。 これにはまだ数分かかります。
sudo gem install --no-rdoc --no-ri rails
これで、新しいアプリを作成できます。 この例では、testappという名前を使用します。 別の名前を使用する場合は、このセクションの他のコマンドとファイルのパスを更新してください。
後で手動で実行するため、Bundlerのインストールはスキップします。
rails new testapp --skip-bundle
ディレクトリを入力します。
cd testapp
次に、JavaScript実行環境をインストールする必要があります。 therubyracerジェムとしてインストールできます。 インストールするには、まずGemfileを開きます。
nano Gemfile
次の行を見つけます。
# gem 'therubyracer', platforms: :ruby
コメントを外します:
gem 'therubyracer', platforms: :ruby
ファイルを保存し、Bundlerを実行します。
bundle install
次に、プロジェクトの仮想ホストファイルを作成する必要があります。 これを行うには、デフォルトのApache仮想ホストをコピーします。
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/testapp.conf
構成ファイルを開きます。
sudo nano /etc/apache2/sites-available/testapp.conf
それを編集するか、既存のコンテンツを置き換えて、最終結果が以下に示すファイルと一致するようにします。 行う必要のある変更は、赤で強調表示されています。 独自のドメイン名と、Railsアプリへの正しいパスを使用することを忘れないでください。
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /home/rails/testapp/public
RailsEnv development
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory "/home/rails/testapp/public">
Options FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
基本的に、このファイルはポート80でドメイン名をリッスンできるようにし、 www サブドメインのエイリアスを設定し、サーバー管理者のメールアドレスを設定し、新しいプロジェクトのパブリックディレクトリのルートディレクトリを設定します。そして私たちのサイトへのアクセスを許可します。 リンクをたどると、Apache仮想ホストの詳細を知ることができます。
セットアップをテストするために、Rails Welcomeaboardページを表示します。 ただし、これは、アプリケーションが開発環境で開始された場合にのみ機能します。 Passengerはデフォルトで本番環境でアプリケーションを起動するため、RailsEnvオプションを使用してこれを変更する必要があります。 アプリを本番環境で使用する準備ができている場合は、この設定を省略してください。
ドメインをこのアプリに割り当てたくない場合は、ServerName
とServerAlias
の行をスキップするか、IPアドレスを使用できます。
ファイルを保存します(CTRL + X、Y、ENTER)。
デフォルトサイトを無効にし、新しいサイトを有効にして、Apacheを再起動します。
sudo a2dissite 000-default
sudo a2ensite testapp
sudo service apache2 restart
これで、アプリのWebサイトにアクセスできるようになります。 ドロップレットのドメインまたはIPアドレスに移動します。
http://droplet_ip_address
アプリがデプロイされていることを確認します。 カスタムアプリケーション、または WelcomeaboardのデフォルトのRailsページが表示されます。
これで、Railsアプリがサーバー上で稼働します。
ステップ7—定期的に更新する
Rubyを更新するには、このチュートリアルのステップ4に示すように、最新バージョンをコンパイルする必要があります。
PassengerとApacheを更新するには、基本的なシステム更新を実行する必要があります。
sudo apt-get update && sudo apt-get upgrade
ただし、新しいシステムRubyバージョンが利用可能な場合は、Ruby(ソースからインストール)が上書きされる可能性があります。 このため、Rubyバイナリファイルへの既存のシンボリックリンクを削除して新しい(正しい)シンボリックリンクを作成するために、コマンドを再実行する必要がある場合があります。 これらは、このチュートリアルのステップ6の最後にリストされています。
更新プロセスの後、Webサーバーを再起動する必要があります。
sudo service apache2 restart