■
毎月のデータ通信費が5000円と高価だったので、最近流行りの格安simを物色中。
◆データ通信でやりたい事、どういう時に使うのかを決める
値段が安ければ品質が悪くても問題無いと思っていたが、通信速度が10kbpsを下回った時に「あ、これは流石に耐えられない」と感じました。
安かろう悪かろうということで、値段だけで決めるのは危険だと思いましす。
値段以外を重視する場合、自分にとって何が大切かを最初に考えておくと、契約後の後悔も少ないかと思います。
参考にはならないと思いますが、私が重視するのは下のような感じです。
必須項目の中に高速通信が必要な「ゲームで遊ぶ」が入っているため、高速通信が必要になりました
●必須
gce インスタンスの起動、停止ができる
ssh で gce のインスタンスに接続して操作ができる
月に300MB位ダウンロードが発生する特定のゲームを遊ぶ
ブラウザで資料の検索、閲覧
はてなダイアリーの記載
メールの送受信
Lineの送受信
Twitterに書き込み
主に使うのは、通勤中
テザリング
●できればやりたい
インターネットラジオの聴き放題
●我慢する
作成からdeployまで
シンプルな Google App Engine アプリケーションの作成からサーバ転送まで駆け足で紹介。
app.yaml の準備
以下は go を使う時のシンプルなapp.yaml
application: プロジェクト名
version: 1
runtime: go
api_version: go1
handlers:
- url: /.*
script: _go_app
goファイルの用意
とりあえずチュートリアルにあったもの
hello.go
package goplus import ( "fmt" "net/http" ) // init is called before the application starts. func init() { // Register a handler for /hello URLs. http.HandleFunc("/", hello) } // hello is an HTTP handler that prints "Hello Gopher!" func hello(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Hello, Gopher!") }
動作確認
サーバに転送する前に動作確認したい場合は
dev_appserver.py app.yaml
を使ってローカルにサーバを起動して、 http://localhost:8080/ にアクセスする事でサーバに転送せずに動作確認ができます。
ssh でgceなどの別サーバにログインして作業している時は gui のブラウザは多分使えないので、ローカルサーバをバックグラウンドで実行して curl などで確認する感じになります。
dev_appserver.py app.yaml&
curl localhost:8080
ちなみに、go を使っている場合は、同様のことが
goapp serve app.yaml
で実現可能です。
サーバに転送(初回deploy時は要認証)
app engine のサーバに転送することで、他の人も実行できるようになる。
サーバに初めて転送する場合、ブラウザが起動してgoogleアカウントでログインする必要がある。
私はここでちょっとはまった。
通常は
appcfg.py update app.yaml
と入力したあと、ブラウザが勝手に起動してgoogle アカウントで認証、App Engine とのヒモ付けをするのだけど、GCE に ssh でログインしていると、起動するブラウザがテキストベースで画面が乱れてうまく認証するまで進めなかった。
こういう時は
appcfg.py --noauth_local_webserver update app.yaml
と実行すると表示されんurlを別のブラウザで表示&認証。その後表示される文字列を入力する事で認証ができる。
サーバに転送(別コマンド)
go を使う場合、appcfg.py ではなく goapp を使って転送することも可能。
goapp deploy app.yaml
GoogleCloudShellベータが2015年中は無料
https://cloud.google.com/cloud-shell/
web ブラウザ上で動くターミナルを使って接続できる仮想linux環境。
制限がそれなりにあるようですが、ちょっとしたコードをささっと確認するには手軽に感じました。
ただ、iPadから使うとキーボードが標準のものになるため、Coda や Textastic のキーボード拡張に慣れているとしんどいかもしれません。
上にGoogleAppEngine環境を作る
AppEngine のスタートページを開く。 Google Cloud Platform
言語を選択。
せっかくなのでgoを選んでみる。
ダウンロードページからダウンロード用のurlをコピー。
linux上でダウンロード。
wget https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.26.zip
unzipが必要だったのでインストール
sudo yum install unzip
~/.bashrc に展開したパスを PATH に追加する記載を追加。
python 2.7.5 をインストール
日本語の表示ずれをどうにかする
現在、格闘中で解決には至っていません。
mac のターミナルからsshでつないだ時はカーソルはずれなかったので、クライアントが対応していないんじゃないかな?と思ってきました。。
ターゲットos : CentOS Linux release 7.1.1503 (Core) sshクライアント : Coda for iPad
LANG を ja_JP に変更
http://zero-config.com/centos/changelocale-002.html
を参考に、
sudo localectl set-locale LANG=ja_JP.UTF-8 source /etc/locale.conf
実行してみたけど変わらず。
export | grep LANG 実行してみると en のままだった。
.bash_profile に
LANG=ja_JP?UTF-8 export LANG
と書き、再ログインする事で、export | grep LANG 実行してみたら、 ja に書き換わった。ただあいかわらず vi で日本語を書くとカーソルの位置がずれる。
Terminal Type??
ssh クライアントの設定を確認すると、Terminal Type が xterm-256color と書かれている。
これを vt100 に変更。
これでも状況変わらず。
IPアドレス固定にした時の注意点
iPad から ssh で Google Compute Engine に繋ぎに行く時の一番のネックは、インスタンスの起動ごとに変わってしまう IPアドレスでした。(管理ページではエフェメラルと呼ばれています)
これを解消するために dns を使ったりしましたがどれも上手くいかず。
ここでふと、エフェメラルではなく静的ipアドレスを指定すれば良いのでは?と思い立ち試してみました。
結果は期待した通り。静的ipアドレスの発行自体は無料なので万々歳。全て解決!
とはいきませんでした。
問題点
静的ipアドレスはインスタンスが起動していないと維持費がかかる!!
つまりipアドレスを固定にしてサーバー設置すると、サーバー起動時は無料ですが、インスタンスを停止すると静的ipアドレスの維持費がかかってしまうんです。
価格は?
Google Cloud 料金計算ツールで確認可能です。
https://cloud.google.com/products/calculator/
Unused static IPs に 1 と入力して Estimate をクリックすると、右上に見積もりがでます。
結構高くてびっくりします。