CodeZine(コードジン)

特集ページ一覧

格安VPSサーバで実用的なRuby on Railsアプリ運用環境を構築する

ServersMan@VPSにおけるRoRアプリ運用環境 最短構築手順

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/09/01 14:01

 本記事では、通常のレンタルサーバー上ではリソースの面で設定が制限されているApacheモジュールのインストールを行い、Ruby on Rails(以下RoR)を実用的な速度で利用するためのWebサーバーの環境設定を、ServersMan@VPS上で行う際の手順を説明します。

はじめに

 Virtual Private Server(VPS)とは、一台のサーバー上で仮想サーバーを何台も起動させることで、個々のユーザーに対して管理者権限を付与し、専用サーバーのような環境を提供するサービスのことをいいます。VPSのユーザーはサーバーのリソースを自由に使用でき、CGI実行環境のカスタマイズや大規模データベースの利用などが可能です。

 ServersMan@VPSは、そのVPSを格安で提供するサービスの一つ。例えば、ServersMan@VPSの「Entryプラン」では、HDD容量10GB、メモリー容量256MBのVPSが、初期費用無料、月額490円で利用できます。

 また、料金の安さだけではありません。申し込んでからすぐ利用できる、VPS環境を簡単にリセットできる、マニュアルや管理ツールが充実しているというメリットもありますので、試験的な開発や個人的な開発でサーバーのチューニングを行いたい場合などに適しています。

 さらにハイスペックなVPSが必要な場合には、月額980円の「Standardプラン」(HDD容量30GB、メモリー容量512MB)、月額1980円の「Proプラン」(HDD容量50GB、メモリー容量1GB、※注1)といったプランもあります。こちらのプランではIPアドレスの無料追加サービスもあり、Standardプランで1つ、Proプランで3つまで追加可能となっています。

 本記事では、通常のレンタルサーバー上ではリソースの面で設定が制限されているApacheモジュールのインストールを行い、Ruby on Rails(以下RoR)を実用的な速度で利用するためのWebサーバーの環境設定を、ServersMan@VPS上で行う際の手順を説明します。

※注1

 「Proプラン」の加入者には、光回線のプロバイダ料金が無料になるキャンペーンが実施されています(2010年8月30日現在)。

対象読者

 Linuxの基本的なコマンドを使える方、Linuxサーバー上でサーバーソフトウェアのインストールができる方を対象とします。

RoRを利用するために必要なミドルウェア

 RoRを利用するためにはRubyおよびRails関連モジュール、データベースサーバーとしてMySQLサーバーなどが必要となります。

 また、ApacheからRoRで作成したアプリケーションを利用するためにはApacheモジュールであるPhusion Passenger(mod_rails)、開発を効率よく進めるためにMySQL管理ツールphpMyAdminが必要となります。

RoRを利用するために必要なミドルウェア
ミドルウェア 使用するバージョン 概要
Apache 2.2.3 Webサーバー
Ruby 1.8.7-p299 Ruby本体
RubyGems 1.3.7 Rubyライブラリ管理ツール
Rails 2.3.8 RoR フレームワーク
Phusion Passenger 2.2.15 RoRをApacheを通して動かすためのモジュール
MySQL 5.0.77 データベースサーバー
phpMyAdmin 2.11.10 MySQL管理ツール
PHP 5.1.6 phpMyAdminを動かすために必要なスクリプト言語

ServersMan@VPSに接続する

ServersMan@VPSではSSHが解放されており、SSHクライアントを使って接続します。具体的な手順はServersMan@VPSのマニュアルを参照してください。

 本記事の環境設定はSSHでログインした前提で話を進めます。

Apacheの設定

 まずは、ServersMan@VPSにおけるApacheの設定から説明します。

Apacheのインストール環境

 ServersMan@VPSではデフォルトでApacheが以下のようにインストールされています。

デフォルトでのApacheの設定
環境 概要
インストールディレクトリ /etc/httpd
設定ファイル /etc/httpd/conf/httpd.conf
httpdパス /usr/sbin/httpd
apachectlパス /usr/sbin/apachectl
ドキュメントルート /var/www/html

 設定ファイルを参照すると「Include conf.d/*.conf」という記述があります。これは「/etc/httpd/conf.d/」ディレクトリ内にconfファイルを作成しておくとApacheの起動時に読み込まれるという意味になります。

 次項以降でApacheの設定する場合には、「/etc/httpd/conf.d/」ディレクトリに設定ファイルを作成する前提で進めます。

Apache再起動時のエラー解消

 デフォルトの設定のままApacheを再起動すると、以下のようにエラーが出ることがあります。

リスト1 Apache再起動時のエラー
httpd: apr_sockaddr_info_get() failed for dti-vps-srvXXX
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

 これはホスト名がhostsファイルに設定されていないためで、hostnameコマンドで表示されたホスト名を「/etc/hosts」ファイルに記述することで解決できます。以下は、ホスト名が「dti-vps-srvXXX」である場合の記述例です。

リスト2 /etc/hosts(抜粋)
127.0.0.1       dti-vps-srvXXX

MySQLの設定

 MySQLのインストールはyumで行います。また、RubyからMySQLに接続するためのライブラリに必要なパッケージmysql-develもインストールします。

リスト3 mysqlインストール
# yum install mysql-server
# yum install mysql-devel

 初回起動時に以下のコマンドでMySQLのrootパスワードを設定します。

リスト4 mysqlの起動と rootパスワード設定
# /etc/init.d/mysqld start
# mysqladmin -u root password 'パスワード'

PHPの設定

 phpMyAdminを動かすために、PHPをphp、php-mysql、php-mbstringの最小構成でインストールします。php-mysqlはPHPからMySQLに接続するための、php-mbstringはPHPで日本語を扱うためのモジュールです。

リスト5 PHPのインストール
# yum install php php-mysql php-mbstring

 また、phpMyAdminではセッションを利用しますので、以下のコマンドでPHPのセッションを保存するためのディレクトリの権限を書き込み可能にしておきましょう。

リスト6 PHPのセッションを保存するためのディレクトリの権限変更
# chmod 777 -R /var/lib/php/session/

phpMyAdminの設定

 PHPがインストールできたら、続いてphpMyAdminをインストールします。以下のコマンドでアーカイブを取得後、「/opt」以下のディレクトリに展開し、展開後のディレクトリ名を「phpMyAdmin」とリネームします。

リスト7 phpMyAdminのインストール
# cd /opt
# wget http://sourceforge.net/projects/phpmyadmin/files/FphpMyAdmin/F2.11.10/FphpMyAdmin-2.11.10-all-languages.tar.gz/download
# tar xvzf phpMyAdmin-2.11.10-all-languages.tar.gz
# mv phpMyAdmin-2.11.10-all-languages phpMyAdmin

 MySQLを接続するための設定はconfig.inc.php内に記述します。config.inc.phpは「libraries/config.default.php」にひな型ファイルがありますので、このファイルをリネームして作成します。

リスト8 config.inc.phpファイル作成
# cd phpMyAdmin
# cp libraries/config.default.php config.inc.php

 config.inc.phpで変更するのは以下の箇所です。MySQLのユーザー(root)に対して、前項で設定したパスワードを設定します。

リスト9 config.inc.php(抜粋)
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'パスワード';

 以上の設定でphpMyAdminは利用できます。phpMyAdminはセキュリティ上の理由から、ドキュメントルートの外に配置して、エイリアス設定を行います。本記事では「/opt」以下にphpMyAdminを設置して、「/etc/httpd/conf.d/」ディレクトリに設定ファイル「phpMyAdmin.conf」を作成するものとします。

リスト10 phpMyAdmin.conf
Alias /phpMyAdmin/ "/opt/phpMyAdmin/"
<Directory "/opt/phpMyAdmin/">
    Options -Indexes FollowSymLinks MultiViews Includes ExecCGI
    AcceptPathInfo On
    AllowOverride All
    Allow from all
</Directory>

 また、以下のコマンドで基本認証のための.htpasswdを作成します。

リスト11 .htpasswdファイル作成
# htpasswd -c /etc/httpd/conf/.htpasswd ユーザー名
# New password: 
# Re-type new password: 
Adding password for user ユーザー名

 「ユーザー名」には任意のユーザー名を指定します。その後にパスワードを2回入力して、基本認証のためのユーザーとパスワードを設定します。その後に、「/opt/phpMyAdmin」ディレクトリに、.htaccessを作成してください。

リスト12 .htaccess
AuthType Basic
AuthUserFile /etc/httpd/conf/.htpasswd
AuthGroupFile /dev/null
AuthName "Enter password"
Require valid-user

 Apacheを再起動後、VPSのドキュメントルートに関わらず、「http://[ドメイン]/phpMyAdmin/」のアドレスで、基本認証が課せられたphpMyAdminにアクセスできます。

Rubyの設定

 RoRのインストールには、まずRuby本体、Rubyライブラリ管理ツールRubyGemsをインストールした上で、Railsライブラリのインストール、Rails内で使用するライブラリのインストールを行います。

インストール環境設定

 ServersMan@VPSの初期状態ではCコンパイル環境がありませんのでCコンパイラ、ライブラリをインストールします。

リスト13 Cコンパイラ、ライブラリのインストール
# yum install gcc glibc gcc-c++

 次項よりRubyとRuby関連モジュールをソースからコンパイルしてインストールします。コンパイル中はメモリを大量に消費し、終了まで時間もかかりますのでServersManの機能を一時停止して行うという方法もあります。ServersManの停止はServersMan@VPSのマニュアルで確認できます。

Ruby本体のインストール

 Rubyの最新のバージョンは「ruby 1.9.1-p429」です。ただし、最新のバージョンに対応していないライブラリもありますので、本稿では1つ前の安定版「ruby 1.8.7-p299」をインストールします。今後のバージョン管理のために「/opt」以下にインストールしてコマンドにシンボリックリンクを張る形式でRuby本体をインストールします。

リスト14 Rubyのインストール
# yum install readline-devel openssl-devel zlib-devel 
# wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p299.tar.gz
# tar xvzf ruby-1.8.7-p299.tar.gz
# cd ruby-1.8.7-p299
# ./configure --prefix=/opt/ruby-1.8.7-p299
# make
# make install

 Ruby内部で必要なライブラリreadline-devel、 openssl-devel、 zlib-develをインストールしてからRubyをインストールします。インストールするディレクトリ「/opt/ruby-1.8.7-p299」はconfigureの際にprefixで指定します。Rubyのインストールが終わった後、以下のようにシンボリックリンクを張ります。

リスト15 シンボリックリンクの設定
# ln -snf /opt/ruby-1.8.7-p299/bin/ruby /usr/local/bin/ruby
# ln -snf /opt/ruby-1.8.7-p299/bin/rake /usr/local/bin/rake
# ln -snf /opt/ruby-1.8.7-p299/bin/irb /usr/local/bin/irb

 これによって、コンソールで「ruby」コマンドが使えるようになります。

RubyGemsのインストール

 Rubyのライブラリ管理ツールRubyGemsを以下のコマンドでソースを取得した後、インストールします。

リスト16 RubyGemsのインストール
# wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz
# tar xvzf rubygems-1.3.7.tgz 
# cd rubygems-1.3.7
# ruby setup.rb
(略)
RubyGems installed the following executables:
        /opt/ruby-1.9.1-p429/bin/gem

 インストール後にインストールされたディレクトリが表示されますので、前項と同様にここからシンボリックリンクを張ります。

リスト17 シンボリックリンクの設定
# ln -snf /opt/ruby-1.8.7-p299/bin/gem /usr/local/bin/gem

Railsのインストール

 Railsはgemコマンドを使ってインストールします。

リスト18 Railsのインストール
# gem install rails
# ln -snf /opt/ruby-1.8.7-p299/bin/rails /usr/local/bin/rails

 RoRではデフォルトのRDBMSシステムとしてsqlite3が必要です。今回インストールしたRoR 2.3.8ではバージョン3.6.16以上のsqliteが必要なので、sqlite-3.6.7をインストールします。

リスト19 sqliteインストール
# wget http://www.sqlite.org/sqlite-3.6.7.tar.gz
# tar xvzf sqlite-3.6.7.tar.gz 
# cd sqlite-3.6.7
# ./configure
# make
# make install

 次にRubyからsqlite3に接続するためのライブラリsqlite3-ruby、RubyからMySQLに接続するためのライブラリmysql、dbi、dbd-mysqlをインストールします。

リスト20 sqlite3-ruby、mysql、dbi、dbd-mysqlインストール
# gem install sqlite3-ruby mysql dbi dbd-mysql

RoRとApacheの連携

 RoRで作成したアプリケーションをApache上で動かすために、Phusion Passengerをインストールします。Phusion PassengerはRubyGemを通してインストールします。

リスト21 Phusion Passengerインストール
# yum install httpd-devel
# gem install passenger
# /opt/ruby-1.8.7-p299/lib/ruby/gems/1.8/gems/passenger-2.2.15/bin/passenger-install-apache2-module 

 インストール後にコマンドラインに以下のように表示されます。

passengerインストール後
passengerインストール後

 「/etc/httpd/conf.d/」ディレクトリの配下に、上記を例にRoRアプリケーション用設定ファイルを作成します。

 例えば、RoRで「/var/www/html/sample」というディレクトリに作成したアプリケーションを指定したドメイン名で公開する場合はhttpd.conf内の「NameVirtualHost *:80」のコメントを外して「/etc/httpd/conf.d/」以下に「sample.conf」という設定ファイルを作成します。

リスト22 httpd.confのコメントを外す部分
NameVirtualHost *:80
リスト23 sample.conf
<VirtualHost *:80>
  ServerName [ドメイン名]
  DocumentRoot /var/www/html/sample/public
  <Directory /var/www/html/sample/public>
     AllowOverride all
     Options -MultiViews
  </Directory>
</VirtualHost>

 RoRで作成したアプリケーションの「public」ディレクトリをDocumentRootにします。

 他にもRoRで作成したアプリケーションを公開する場合は、上記sample.confと同様の設定ファイルを作成して「/etc/httpd/conf.d/」以下に配置します。

 ServersMan@VPSではグローバルIPアドレスが付与されていますので上記の例のようにApacheのVirtualHost設定を有効にして、複数のドメインのサイトを契約した1つのVPSで運営することも可能です。

まとめ

 Webアプリケーション開発のために新しいサーバーを準備するのは非常に手間がかかる作業です。

 しかし、ServersMan@VPSでは利用料金の安さと利用開始まで待つ必要がないこと、マニュアルや管理ツールが充実していること、何かあった際にはVPS環境をすぐにリセットできることといったメリットがあり、手軽にサーバーのカスタマイズを試すことができます。まだVPSを利用されていない方も、次の機会に格安のServersMan@VPSを利用してみてはいかがでしょうか?

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト 片渕 彼富(カタフチ カノトミ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5