« JiftyでWebアプリをつくる - JiftyからMVCを考える | メイン | Adobe AIRでAjax!(その2) AIR APIを利用してWebとLocalを繋ぐマッシュアップ サンプル »

失敗しない Rails が動かせるホスティングサービス選びと環境構築はてなブックマークに追加 livedoorクリップに追加 Yahoo!ブックマークに追加 del.icio.usに追加 イザ!ブックマーク ニフティクリップに追加

Ruby(とRails)を担当している石原です。

ソーシャル「OSを入れた後にインストールする10のアプリケーション」(仮) を作る過程をレポートしてきましたが、10回目の今回をもって終わりとさせていただきます。

最後は、いよいよリリースしようという段階で必要な、ホスティングサービス選びと環境構築について書きたいと思います。

参考までにこれまでのエントリーはこちらです ↓

  1. つくるぶガイドブログ: Ruby on Rails を使ってひとりでサービスを作ってみよう
  2. つくるぶガイドブログ: ひとりサービスの雛型をつくる(リキッドレイアウト、GetText、Acts as Authenticated)
  3. つくるぶガイドブログ: Rails で楽々ソーシャルブックマークの仕組みを作る
  4. つくるぶガイドブログ: Rails プラグイン acts_as_taggable_redux でタグクラウドを作ろう
  5. つくるぶガイドブログ: ドラッグアンドドロップで並べ替え(Rails + Ajax)
  6. つくるぶガイドブログ: Rails + rcov でテストカバレッジを調べる
  7. つくるぶガイドブログ: capistrano で本番環境にデプロイ
  8. つくるぶガイドブログ: Rails で Yahoo 検索 API + Widgets Tabnav でタブナビゲーション
  9. つくるぶガイドブログ: ひとりサービスをリリースするまでやっておくこと10個

いろいろあるホスティングの形態

ホスティングサービスと一口に言っても様々な形態があります。

自分のブログやホームページを持ちたいという人向けに提供される、一台のマシンを複数ユーザーで使用するいわゆる「レンタルサーバー」が最も安価で手軽なのですが、Ruby on Rails を利用できるところはまだまだ少ないのが現状です。

Ruby や Rails をシステムにインストールできる root 権限を持っていることが必要で望ましく、こうなると専用サーバーか、あるいは共用サーバー(一台を複数の利用者で使うのですが、仮想的に分割されていて、あたかも専用サーバーのように使えるサーバー)か、ということになります。

2008/03/20 追記
» Re: 失敗しない Rails が動かせるホスティングサービス選びと環境構築 - RX-7乗りの適当な日々

で指摘いただいたため訂正しました。

Ruby on Rails を使用するためには、厳密には root 権限は必要ありません。root 権限なしでレンタルサーバー上で動かす方法はいくつかありますが、その場合、様々な制限が伴うことを覚悟しなくてはなりません。PHP や Perl などと比べると、Ruby on Rails をレンタルサーバー上で動かすことは難易度が高いと筆者は考えており、やはり root 権限を持てる環境にホスティングすることを推奨します。


とりあえず Ruby on Rails でサービスを構築してみたい、という方には共用サーバーをおすすめします。

レンタルサーバーよりは高いですが、専用サーバーほど高価ではありません。安いところだと、月額2000円台といったところです。

占有しているように見えるとはいえ、複数利用者で使っていることに変わりはないので、専用サーバーに比べてスペックは落ちますが、サービスがはやって利用者が増えたときに専用サーバーに乗り換えればいいと考えればいいかと思います。

英語に問題なければ、海外のホスティングサービスという選択肢もあります。

同スペックならば、海外のサービスの方が安価です。またドキュメントやコミュニティが日本のサービスよりも充実している印象を受けます。

ホスティングサービス、どこを選ぶか?

具体的にどこがおすすめかという質問を受けた場合、共用サーバーならば海外の Slicehost、専用サーバーならさくらインターネット、と筆者は答えます。

理由は簡単で、どちらも筆者が実際に使ってきた中で気にいっているサービスだからです。ほかのあまたあるサービスについては、ネットにたくさんの情報をみつけることができますが、実際に使ってみないと何とも言えません。

ホスティングサービスを選ぶ際に最もおすすめする方法は、誰かすでにホスティングサービスを使っている知り合いに聞いてみて、その人がそのサービスを今後も使い続ける予定ならば、同じサービスにすることです。

値段がちょっとぐらい安いからと言って、まわりでは誰も使っていないようなサービスに契約するのはそれ相応のリスクがあります。

その知人のサポートというのがかなり大きなウェイトをもって、サービス選択の際に上乗せすべき要素になると思います。

OSはできるだけ新しいバージョンのものを

「知人に聞け」と書きましたが、Ruby on Rails を動かすならではの選択ポイントとうのがありますし、せっかくですから筆者の経験から参考になりそうなことを述べさせていただきます。

できるだけ新しいバージョンのOSをサポートしているホスティングサービスを選ぶのが肝要です。少し古いバージョンのOSしかサポートしていないホスティングサービスの場合は、環境構築で苦労するかもしれないことを覚悟しておく必要があります。

CentOS なら yum、ubuntu なら apt-get といったコマンド一発でパッケージをインストールできるパッケージ管理ツールがあります。古い OS だとそれでインストールできるパッケージが古いバージョンであることが多く、新しいバージョンが必要だと、ソースをダウンロード&コンパイルしてインストールしなければならなくなります。

具体例を挙げます。Ruby on Rails でサービスを運用するとき、つくるぶガイドブログ: capistrano で本番環境にデプロイでも触れましたが、Apache + Mongrel Cluster が定番の一つです。このとき使う Apache の mod_proxy_balancer は Apache 2.2 から使える機能なので、2.2 以上が yum や apt-get その他で簡単にインストールできる(あるいははじめから用意されている)バージョンのOSを選んでおくと楽だと思います。

環境構築は最初はオールクリアするぐらいのつもりで

筆者が使っている Slicehost には、OS を一度まっさらに戻し、OSの種類やバージョンを用意されているものの中から簡単に選択し直すことができる機能が管理メニューに付いています。

環境構築を始めてみたはいいが、途中でぐちゃぐちゃになりわけがわからなくなってしまったり、パッケージの依存関係などの問題で別の OS あるいはバージョンに切り替えたくなることがあります。

そういうときに上記のようなオールクリアできる機能があると便利です。それもメニューから自分で操作でき、気軽に何度もできるようになっていたほうがいいでしょう。

一回で完璧にやるのではなく、最初は「間違えてもいいや」と、練習のつもりで環境構築をするのがいいと思います。一回流れをつかみ、気をつけるべきポイントを自分なりにまとめておけば、次からはもっとうまく構築できると思います。

環境構築の情報源

具体的にどう環境構築するかというノウハウは OS やバージョン、やりたいことなどによって千差万別ですから他の情報源をあたってください。

OSの名前、バージョンと「インストール」というキーワードで検索すれば様々な情報を見つけることができます。ただ、こうして寄せ集めてきた情報には、パッケージの依存性や一貫性、構築のポリシーがないので適宜読み替えたり自分で補足する必要があります。

「Apache を Ubuntu にインストールする方法」という記事よりも、「Ruby + Rails + MySQL + Apache 2.2 + Mongrel を Ubuntu Gutsy にインストールする方法」という記事の方が参考になることが多いです。

ホスティングサービス自体がこうしたドキュメントを用意している場合は大いに参考になります。例えば Slicehost の場合は、

» Slicehost Article Repository - VPS setup, servers, Ruby on Rails, Django, PHP, DNS, Slicemanager and more

に各 OS ごとの Ruby on Rails、Django、PHP などの構築方法を説明したドキュメントが用意されています。

こうしたドキュメントを参考にしながらも、自分なりの方法というのが出てくるかと思います。オールクリアするつもりで、と書きましたが、その場合も含めもう一度環境構築するときに備えて手順を Wiki などに残しておくことをおすすめします。ブログに公開する、というのもいいでしょう。

セキュリティ対策

自分のサーバーを持った場合、誰かに侵入されないかという心配がついてきます。最低限のセキュリティ対策をまずおこなっておきましょう。

iptables をファイアウォールとして使い、使用するサービスのポートだけにアクセスできるようにしておきます。ssh 接続に関しては、ポート番号を 22 から変更し、使用するユーザーだけアクセスできるようにしておいた方がいいようです。

参考:Slicehost Articles: Ubuntu LTS setup - page 1

いつも同じアカウント名を

環境構築で真っ先におこなうことは、一般ユーザーの作成だと思います。このとき、いつも同じユーザー名で作成しておくと便利です。たとえば ssh 接続するときに


ssh username@example.com

の代わりに


ssh example.com

で済みます。

筆者の場合、ローカルのマシンや個人的に使っているサーバーはもしかしたら家族で使うかもしれないと思って名前をユーザー名にし、仕事で使うものは名字をユーザー名にしてしまったのが失敗です。

まとめ

Rails が動かせるホスティングサービス選びと環境構築について、筆者の経験で参考になりそうな Tips を紹介しました。

ソーシャル「OSを入れた後にインストールする10のアプリケーション」(仮) の開発レポートは今回をもって終了です。

今現在サービスを作っている方、あるいはこれからサービスを作ろうと思っている方の参考に少しでもなれたならばうれしいです。

ソースコードを以下に置いておきます。

» 10best - Google Code


svn checkout http://10best.googlecode.com/svn/trunk/ 10best

でチェックアウトするか、ブラウザでもリポジトリを閲覧することができます。

トラックバック

このエントリーのトラックバックURL:
http://fukapyon.tkrb.jp/mt/mt-tb.cgi/65

必ず利用規約をお読み頂き、同意の上、送信してください。
また、トラックバック元・リンク先の内容にはリクルートは一切責任を負いません。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

お名前

※本名など個人が特定できる情報を入力しないでください

コメント

※必ずプライバシポリシーおよび利用規約をお読みいただき、同意の上、投稿してください。