DRYな備忘録

Don't Repeat Yourself.

Google Compute Engine で apacheウェブサーバを無料でつくってみた【GoogleComputeEngine】

最近流行ってますよね、ええ、AWS(Amazon Web Service)です、EC2(Elastic Compute Cloud)。IaaS(Infra as a Service)です。仮想化、自動化、オーススケールですよ、ええ。

で、これはAWS EC2の話じゃありません。やはり仮想サーバを無料で提供する "Google Compute Engine" の話です。

結論から言うと、1時間かからず、もちろん無料で1台つくれちゃいましたよ、って話。

いきなりまとめ

  1. Google Compute Engine に登録する際、クレジットカードの番号入れなアカン
  2. "Compute Engine" の欄から指示通りにぽちぽち選んでたらサーバできたウケル
  3. GCEを操作するための便利コマンドgcutilをローカルPCにインストール
  4. gcutil経由でsshして、ふつうにapt-get install apache2した
  5. gcutilでfirewallを導入しないとtcpが開かないようだ

これでイケた。お手軽すぎるってばよ...

背景

艦これウィジェット開発にサーバサイドが必要になった。自前のサーバでもいいんだけど、いかんせん負荷見積もりが全くできない。じゃ流行に乗ってお手軽サーバインスタンスIaaSを利用してみようじゃないか。IaaSといえばAWSだよねー、と思ったんだけどなんかウェブ上のコンソール見にくすぎて萎えていた。

そんなPyCon第一日目、隣の外人のおっさんが「今日はどのセッションに行くんですか?」って話しかけてきたので、「簡単なサーバが欲しくて、AWS使おうと思っているので、この "Programming AWS with Python" が狙いめなんです」って答えた。そしたらおっさんが「GoogleComputeEngineのセッションもありますよ。わたしスピーカーです!」って言うから驚くよりも前に「GoogleComputeEngineって何?」て聞いたらなかなか良さそうなモノであることが伝わってきた。それもそのはず「わたし、Googleの中の人です」とのこと。いやーカンファレンスって初めて行ったけど面白いことが起きるんですね。

作業記録

登録

ここにアクセス https://cloud.google.com/ クラウドサービス。今回はCloudStroage(awsで言うところのs3かな?)ではなくCompute Engineこっちなんだけど、「Try it now」ボタンはひとつしかないのでとりあえずそれ押すと、さっそく入力フォームが現れるのでぽちぽちとプロジェクト名とかを決めていく。

途中クレジットカード番号が必要になるので注意。awsと同じように従量課金。

""" 追記

PyCon二日目で、「お金はインスタンスがつくられて削除するまでの時間で発生するよ」とおっさんに言われ、自分の英語力の無さに愕然とするとともに、慌ててdelete instanceしました。あやうくクラウド破産するところだった。 しかし削除するのもワンクリックで超お手軽。

"""

インスタンスつくる

登録できたら今度は、プロジェクト一覧 https://cloud.google.com/console?getstarted=https://cloud.google.com/#/project から、該当プロジェクトを選んで、左のメニューから「Compute Engine」を選択。

ここもあとは出てくるフォームを埋めて行けばおk。サーバの物理位置とか、スペックとか聞かれる。

便利なコマンドラインツールgcutilをインストール

GCEもたぶんawsと同じようにAPIエンドポイント用意してるんだろうけど(調べてないし知らんけど)、インスタンスの追加やインスタンス情報の取得・変更など様々な操作を可能にするコマンドラインツールgcutilってのがあるっぽいのでインストール。インストール手順はここ https://developers.google.com/compute/docs/gcutil/ にそれはもう事細かに書いてあって親切。やばい。

sshしてapacheをインストール

たぶんこれも自動化できるんだろうけど、とりあえず手元で。 インスタンス個別のメニューから、MetadataにsshKeysを追加。で、gutil経由でsshする。

f:id:otiai10:20130914232513p:plain

このあたりは詳しくはここ https://developers.google.com/compute/docs/console#sshkeys で書かれてる。

で、普通に

otiai10@myfirstgceserver01:~$ sudo apt-get install apache2
otiai10@myfirstgceserver01:~$ sudo /etc/init.d/apache2 start
[ ok ] Starting web server: apache2.

え?まじで?てくらいあっさりと...

Debianでapache2なので、/var/www/index.htmlをちょっとだけいじっとく

firewallを導入

で、インスタンスのメニューから設定したはずのExternal IPにブラウザでアクセスすると「接続できませんでした」。

今更ながらここ Quickstart: Launching Apache on an Instance https://developers.google.com/compute/docs/quickstart を見て、今までの作業との差分を考えると、どうやらfirewallを追加しないとtcpが開かないみたい。なので、

(local) % gcutil addfirewall http2 --description="Incoming http allowed." --allowed="tcp:http" --project="myfirstproject"

という感じで追加して、再びブラウザでアクセスすると、

f:id:otiai10:20130914233734p:plain

できました。

雑感

AWSのコンソールごみごみしてて分からんけど、UI的にこっちの方が好きかも。AWSちゃんと使ってないからアレですけど。

とりあえず、簡単でした。ちなみにおっさんとはBrianDorseyさんでした

あとPyCon楽しかった。明日もきっと楽しいと思う。





DRYな備忘録として