2019年4月12日金曜日

ローカル環境にgoogle謹製SDKをインストールせずにGoogle App Engineにプロジェクトをdeployしてみる

たった数年前なのに、Google App Engine(以下GAE)というサービスがいろいろなものと統合されちゃって最近ではGoogle Cloud Platform(以下GCP)とかいうことにしたんですって奥様。

で、今も稼働中の、とあるサーバ機能を持つアプリはeclipseでdeployしてた覚えがあるんですが、もう既に安定稼働につきメンテナンス不要モードに入って何年もたっていて、GAEにアプリをdeployする方法も忘れちゃいました。

そこで、GAEの知識を更新したくなったので、一つなんかやってみるべえ、と思い立ちました。

今ではプロジェクトに選択できる言語が増えていますね。
無償枠で使える言語中から選ぶとすると、javaでのプロジェクトはdeployも運用もすでに経験済みというか運用中だからパスするとして、pythonはインデント縛りのおかげで私にとってメンテがだるい言語だし(インデントを忘れているのか意図しているのかわかりづらいケースがイヤ)、goは開発環境を整えるところから始めなくちゃいけないし、ということで、結局、残っている言語はphpとなりました。

そこで、phpで、アクセスされたら問答無用で四字熟語を送信するサーバを作って、それをGAEにdeployして運用してみようと思います。

余談ですが、以前と大きく変わった点としては、「組織」ってのが必須になっていることです。
これは私のアカウントがG Suiteのせいかもしれません(東日本大震災時に計画停電のせいで自宅サーバがぶっ飛んだ時にgoogle様に独自ドメイン用MXをお願いしたらなぜか今ではG Suiteというサービスになってしまったんですよねぇ)。
そして、めったやたらに権限が細かい。
何をするためにどんな権限が必要なのかがとってもわかりづらくて、プロジェクトを追加する権限は一体どれなんだ、と片っ端から権限を与えてはプロジェクト作成を試すという頭の悪いことをしてしまいましたが、結局どれが「組織なし」へプロジェクトの新規作成ができる権限なのかさっぱりわかりませんでした。
まあ、この辺りは本題から外れますのでいい加減にするとして、本題に戻ります。

ともかくGCP上でプロジェクトを作成してしまいましょう。
さすがにこの手順の解説は端折ります。
ブラウザ画面左上にプロジェクト名が表示が表示されていますから、そこからちゃちゃっと追加してください。

プロジェクトが無事生成出来たら、今度は画面右上の
というアイコンボタンをクリックしますと、bash(Cloud-shell)が立ち上がっちゃいます。

こうなったら、とりあえず自分のプログラムをこのコンソールが立ち上がっているところにダウンロードします。
とりあえず、まずはgitでhttps経由でcloneしてみます。
gitコマンドの使い方は、あまりに文献が豊富なのでここでは説明しませんが、オレオレサーバからhttps経由でcloneしてみます。
無論、別にhttpsでgitじゃなくてもいいんですけど、私が構築してあるgitのbareなリポジトリはgitbucketを利用させていただいている関係でhttpd経由でアクセスするお約束なんですが、そのhttpdがhttps経由でしかgitbucketにアクセスさせない定義になっているというだけの理由です。
あとで触れますがgitである必要性は全くありませんがともあれ説明手順が楽なので一通りこの前提で説明します。

1) オレオレサーバなのでhttps経由の場合は証明書が証明になってねぇよと怒られるので、gitさんに検証をしないで黙って持って来いとお願いする設定にします。
$ git config --global http.sslVerify false
2) オレオレサーバからデプロイしたいプロジェクトをcloneします。
3) cloneしたディレクトリにおります。
4) deployします。
$ gcloud app deploy

以上で終了です。
たったこんだけ。
app.yamlを書き忘れていても3)の段階で書いちゃえばOK。Cloud-shellからはemacsもvimも使えますので宗教論争も無縁です。え?edですか? それはないみたいですね。

んー。gitって何それ?という方に朗報です。
実はscpもsftpもwgetもcurlもCloud-shellから使えるんです。
ですので、開発したプロジェクト一式をzipかなんかで圧縮して、それをCloud-shell上でダウンロードして、展開するだけでいいわけです。
書庫の展開にはunzipもtarも、その他めぼしいところはそろっています。

方法はどうあれ、ソースをgetして展開してdeployしておしまい。
ちょっと前までが信じられないほど極めてシンプルです。

自分の管理下にあるサーバにSDKだのなんだの、得体のしれないものを一切インストールする必要がありません。Cloud-shell上に一式そろっています。

わしの環境じゃあSDKの実行にゃあpython2.7以上が必要じゃけえのう、OSのパッケージ管理システムから外してmake installせんならんけえのう、とか細かいことは何も考えずにデプロイできます。

一度デプロイしちゃえばこっちのものなので、あとはgit cloneしたり tar zxvfしたディレクトリをrm -frしちゃってください。まあ、記念に残しといてもいいですけど。

いやあ、httpsをしゃべれてプログラムも実行できるんですからインスタンス時間が28時間まで無料なGAEってホントにまいっちゃいますね。

で、何をdeployしたのかというと、アクセスすると約7千件あるデータベースの中から四字熟語を1つだけあなたに提案する「提案型四字熟語供給システム」です。大げさでいいでしょ。
インタフェイスはJSONです。供給されるのは四字熟語と、その読み。
どこからでも使えるようにオリジン間リソース共有に対応しています。
一日一語で覚えてゆきましょう。

以上です。
こんな記事をお読みいただいてありがとうございました。

0 件のコメント:

コメントを投稿