はじめに
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上で行う際の手順を説明します。
「Proプラン」の加入者には、光回線のプロバイダ料金が無料になるキャンペーンが実施されています(2010年8月30日現在)。
対象読者
Linuxの基本的なコマンドを使える方、Linuxサーバー上でサーバーソフトウェアのインストールができる方を対象とします。
RoRを利用するために必要なミドルウェア
RoRを利用するためにはRubyおよびRails関連モジュール、データベースサーバーとしてMySQLサーバーなどが必要となります。
また、ApacheからRoRで作成したアプリケーションを利用するためにはApacheモジュールであるPhusion Passenger(mod_rails)、開発を効率よく進めるためにMySQL管理ツールphpMyAdminが必要となります。
ミドルウェア | 使用するバージョン | 概要 |
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が以下のようにインストールされています。
環境 | 概要 |
インストールディレクトリ | /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を再起動すると、以下のようにエラーが出ることがあります。
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」である場合の記述例です。
127.0.0.1 dti-vps-srvXXX
MySQLの設定
MySQLのインストールはyumで行います。また、RubyからMySQLに接続するためのライブラリに必要なパッケージmysql-develもインストールします。
# yum install mysql-server # yum install mysql-devel
初回起動時に以下のコマンドで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で日本語を扱うためのモジュールです。
# yum install php php-mysql php-mbstring
また、phpMyAdminではセッションを利用しますので、以下のコマンドでPHPのセッションを保存するためのディレクトリの権限を書き込み可能にしておきましょう。
# chmod 777 -R /var/lib/php/session/
phpMyAdminの設定
PHPがインストールできたら、続いてphpMyAdminをインストールします。以下のコマンドでアーカイブを取得後、「/opt」以下のディレクトリに展開し、展開後のディレクトリ名を「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」にひな型ファイルがありますので、このファイルをリネームして作成します。
# cd phpMyAdmin # cp libraries/config.default.php config.inc.php
config.inc.phpで変更するのは以下の箇所です。MySQLのユーザー(root)に対して、前項で設定したパスワードを設定します。
$cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = 'パスワード';
以上の設定でphpMyAdminは利用できます。phpMyAdminはセキュリティ上の理由から、ドキュメントルートの外に配置して、エイリアス設定を行います。本記事では「/opt」以下にphpMyAdminを設置して、「/etc/httpd/conf.d/」ディレクトリに設定ファイル「phpMyAdmin.conf」を作成するものとします。
Alias /phpMyAdmin/ "/opt/phpMyAdmin/" <Directory "/opt/phpMyAdmin/"> Options -Indexes FollowSymLinks MultiViews Includes ExecCGI AcceptPathInfo On AllowOverride All Allow from all </Directory>
また、以下のコマンドで基本認証のための.htpasswdを作成します。
# htpasswd -c /etc/httpd/conf/.htpasswd ユーザー名 # New password: # Re-type new password: Adding password for user ユーザー名
「ユーザー名」には任意のユーザー名を指定します。その後にパスワードを2回入力して、基本認証のためのユーザーとパスワードを設定します。その後に、「/opt/phpMyAdmin」ディレクトリに、.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コンパイラ、ライブラリをインストールします。
# 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本体をインストールします。
# 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のインストールが終わった後、以下のようにシンボリックリンクを張ります。
# 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を以下のコマンドでソースを取得した後、インストールします。
# 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
インストール後にインストールされたディレクトリが表示されますので、前項と同様にここからシンボリックリンクを張ります。
# ln -snf /opt/ruby-1.8.7-p299/bin/gem /usr/local/bin/gem
Railsのインストール
Railsはgemコマンドを使ってインストールします。
# 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をインストールします。
# 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をインストールします。
# gem install sqlite3-ruby mysql dbi dbd-mysql
RoRとApacheの連携
RoRで作成したアプリケーションをApache上で動かすために、Phusion Passengerをインストールします。Phusion PassengerはRubyGemを通してインストールします。
# 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
インストール後にコマンドラインに以下のように表示されます。
「/etc/httpd/conf.d/」ディレクトリの配下に、上記を例にRoRアプリケーション用設定ファイルを作成します。
例えば、RoRで「/var/www/html/sample」というディレクトリに作成したアプリケーションを指定したドメイン名で公開する場合はhttpd.conf内の「NameVirtualHost *:80」のコメントを外して「/etc/httpd/conf.d/」以下に「sample.conf」という設定ファイルを作成します。
NameVirtualHost *:80
<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を利用してみてはいかがでしょうか?