この記事は、4月21日(木)福岡県Ruby・コンテンツ産業振興センターにて行われた「ユーザーが語る ニフティクラウドセミナーin福岡」での発表、および2011年5月11日(水)から13日(金)で行われた「第2回 クラウド コンピューティングEXPO春」の13日最終のセミナー「CakePHP vs Ruby on Rails開発環境構築スピード対決!~本当に15分で環境構築ができるのか?~」で利用した内容の解説になります。
上記2セミナーでは、実際にその場でニフティクラウド上にSmallのインスタンスを作成するところから初めて、Ruby on Rails3のサーバが稼働するところまでお披露目しております。つまり、完全に0からのスタートになります。では、早速その詳細について解説をしていきたいと思います。
手順と流れの説明
まず、おおまかな手順を書いておくと
1、ニフティクラウド上にSmallのインスタンスを立上げる(約5分) 2、立ち上がったらSSHで接続する 3、セットアップのためのコマンドを実行する 4,動作を確認する(2?4で約10分)
以上、合計15分になっております。それでは、個別に見ていきます。
1,Smallインスタンスの立上げ
ここについての詳細は省きます。単純に、ニフティクラウドのSmallを立上げるだけです。 IPアドレスは動的でも、固定でもどちらでも構いません。 立ち上がったら、アサインされたグローバルIPをコピーしてメモ帳などに書いて置いて下さい。
ここで後の作業をスムーズにするために、メモ帳には
root@グローバルIP http://グローバルIP:3000/books/
と書いておいてください。上はSSHでの接続時に使い、下は最後の動作確認で使います。
2,SSHでの接続
ここも詳細は省きます。いつも通りのSSHによる接続を行って下さい。 このとき、1でメモ帳に書いておいた「root@」を使うとちょっと便利なはず。 接続ができたら、次に進みます。
3,セットアップのためのコマンドを実行
さて、ここがこの作業の中での一番のポイントです。 以下のように打ちます。
curl https://raw.github.com/gist/964211/984e20c01e8fd9ae636189434568312dedfeff92/rails_on_nifcla.sh
| sh
以上のコマンドをコピペで、そのままお使い下さい。
あとは、画面がドバーっと流れるのをただ見ているだけです。 最後に画面が止まったらセットアップ完了です。
4,動作確認
では、ブラウザを開いて1でメモ帳に書いておいた「http://」のアドレスにアクセスしてみましょう。 簡単ですが、本を登録するアプリが動いているはずです。
内容の詳細解説
詳しく見ていきます。
まず、インスタンス作成とSSHについては、問題ないと思います。
もし、この部分の詳細を知りたい場合は、私が書いた「契約後からサーバを立ち上げるまで」をご覧下さい。こちらでどういった流れかをご覧頂けます。
次がセットアップのコマンドです。
こちらについては、実際のスクリプトを見ながら解説をしていきます。
まず冒頭yumを使い、RubyとSqlite3のコンパイルに必要なライブラリのインストールを行っております。なお、yumを使うと最初自動的にシステムのアップデートが行われます。
次がsnmpdの設定を行っています。
これは、ニフティクラウドのサーバ管理を行う「ダッシュボード」にある、基本監視を使えるようにするための設定です。これにより、パフォーマンスチャートでCPU使用状況やネットワークの状況などを確認することができ、基本監視によるアラートを受け取ることが可能になります。
スクリプトでは以下の内容を受け取り、snmpd.confに追記しsnmpdを再起動しています。
この内容は、基本監視の設定が公開されているのでそちらを参考にしました。
次にiptablesの設定です。
このセットアップスクリプトでは一度Smallのインスタンスを立上げ、その時のiptablesの内容をダンプし、そこへ必要事項を追記したものをgistに上げて使っています。
稼働中のサーバのiptablesのダンプは、
iptables-save > iptables.bak
などと実行すると保存できます。保存された内容に
1,ポート3000の開放(Railsのテスト実行のため) 2,基本監視で要求された設定
を追記しております。なお、2についてはsnmpdのところで説明したリンク先をご覧下さい。
私はiptablesの設定反映については、上記で作成した追記後のファイルをgistにアップしておき、ファイルの内容をサーバで受け、「iptables-restore」で設定を上書きして「iptables save」で保存を行いました。
このため、ニフティクラウド側で作成されているSmallのイメージが将来変更になった場合は、設定用のファイルを修正を行う必要があります。
ちょっとこの部分は、イマイチだと思っています。
そして、Ruby1.9.2とRails,Sqlite3のインストールを行います。
これらについては、オフィシャルのサイト等で紹介されている普通のインストールコマンドをそのまま実施しているだけです。これといって解説することは、実はありません。
最後にRailsのScaffoldを実行しています。
Ruby on Railsの便利なところで、これらのコマンドによりアプリケーションの基本的なファイルの生成はコマンドの実行だけで終わってしまいます。
スクリプトの最後では、自動生成したアプリケーションのテスト用サーバを立上げています。
ブラウザでポート3000にアクセスすると稼働状況が見られ、「グローバルIP:3000/books」にアクセスすると非常に簡易ですが本のタイトルと価格を登録し一覧で見るアプリケーションを確認することができます。
夢の広がる、1ラインセットアップ!
ということで、詳細にスクリプトについて解説を行ってみました。
見て頂けると解る通り、非常に基本的なコマンドの組み合わせを使うだけで定型の作業を自動化することが可能になります。今回は利用していませんがRESTfulAPIを使うことで、完全に1回のコマンドだけでセットアップを完了されるなども可能になると思います。
今回ご披露したスクリプトは非常に基本的な動きのみにしておきました。 yumによるライブラリのインストールとシステムのアップデート、snmpdの設定とiptablesの設定の部分。これらを基本として、色々なオープンソースのフレームワークやアプリケーションのセットアップを自動的に行うスクリプトが書けると思います。
ニフティクラウドでは、現在のところ他の人や企業が作成したイメージを自分の企業IDの配下へコピーしてくることはできません。他のIaaSではこういったことが可能ではありますが、私個人としてはどこの誰が作ったか解らないし設定もどうなっているか解らないVMをいきなり使うことには非常に抵抗があります。セットアップの手間を省ける点では非常に効果が期待できますが、セキュアであることを保証されるものではないので、私にとってはちょっとリスキーに感じます。また、意外と他人が設定したLinuxというものは設定を把握するまで時間がかかるものだと思います。
今回のようなスクリプトで自動的に構築していく方法であれば、事前にどんなことが行われるかを確認できますので安心して使えます。そして、ファイルを修正し独自のスクリプトで構築を行うことも非常に容易です。是非、皆さんのノウハウを生かし工夫をして効率的なサーバ構築を行ってみて下さい。