The Revel Web Framework for Go
Go 言語のランタイムは入っているものとして、まずは Revel のインストールから行います。
go get github.com/revel/revel go get github.com/revel/cmd/revel
GOPATH が設定されていれば成功するはずです。
Kudu の Debug Console から作業を行いましたが、先に go.exe へパスを通しておきました。
これからは revel コマンドを使って進めていきますが、revel.exe は GOPATH の bin にインストールされるので、前もってパスを通しておきます。
パスが通っていれば revel と打ち込めば実行出来るようになっています。
とりあえずは新しいアプリケーションを作りたいので、revel new コマンドを使ってテンプレートを作成します。アプリ名は何でもいいですが、公式のマニュアルの通りに myapp としておきました。
これで GOPATH\src\myapp にテンプレートが作成されました。
後は revel run myapp と打ち込めばサーバーが起動するとマニュアルにはありますが、httpPlatformHandler を使うためにポート番号を指定する必要があります。調べたところ run の 3 つめの引数でポート番号を指定できるらしいので、以下のように呼び出せば問題なさそうです。
revel run myapp dev %HTTP_PLATFORM_PORT%
これで Web.config を書けば動くと思ったのですが、go.exe へのパスが通っていないとエラーになってしまったので、バッチファイルを経由して revel run を実行するようにしました。
@echo off set PATH=%PATH%;%GOROOT%\bin %GOPATH%\bin\revel.exe %~1 %~2 %~3 %~4 %~5
この内容で適当な場所に revel.cmd と名前を付けて保存して、以下のような Web.config を wwwroot 直下に置けばサーバーが起動します。
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> <add name="httpPlatformHandlerMain" modules="httpPlatformHandler" path="*" verb="*" resourceType="Unspecified" /> </handlers> <httpPlatform processPath="%GOPATH%\bin\revel.cmd" arguments="run myapp dev %HTTP_PLATFORM_PORT%" startupTimeLimit="60" startupRetryCount="5" /> </system.webServer> </configuration>
今回は revel.cmd を GOPATH\bin 以下に作成したので、環境変数を使って綺麗に書けました。
ページへアクセスしてみると、テンプレートとして作成されたページが無事に表示されました。
ちなみに Process Explorer での表示はこんな感じになってます。
バッチファイルを経由しているので cmd.exe の下に revel.exe が紐づく形になっています。
Revel はファイルの変更があった場合には、自動的に再コンパイルをしてくれるようになっているので、Visual Studio Online "Monaco" を使ってコードを書きながら、その場で確認するといったことがやりやすくなっています。実用的ですね。