Whisky & Woman

gorem と goreman でアプリを管理する

goreman はforeman

gorem はリバプロ

インストールはとても簡単。go言語の環境を整えた後で

$ go get github.com/mattn/gorem
$ go get github.com/mattn/goreman

で終わり。まず、Procfile を準備する。

gorem: /home/mattn/dev/gorem/gorem -c /home/mattn/dev/gorem/config.json
my_app1: ruby /home/mattn/dev/my_app1/web.rb
my_app2: ruby /home/mattn/dev/my_app2/web.rb

gorem と、sinatra アプリが2本。この Procfile がある場所で

$ goreman start

するとこの3つが起動する。パスは適便修正。次に gorem の設定。config.json というファイルに

{
    "mattn": {
        "address": "127.0.0.1:11006",
        "entries": [
            { "path": "/app1/", "backend": "http://localhost:10086" },
            { "path": "/app2/", "backend": "http://localhost:10087" },
            { "path": "/",      "backend": "/home/mattn/tmp/blog/_site" }
        ]
    }
}

といった感じに設定する。

これにより http://mattn.tonic-water.com/app1/ へのリクエストが http://localhost:10086/

http://mattn.tonic-water.com/app2/ へのリクエストが http://localhost:10087/ へ転送される。

/ へのリクエストは、jekyll で生成した静的コンテンツを指す。

なお、gorem は http://mattn.tonic-water.com/app1/foo というリクエストを http://localhost:10086/app1/foo ではなく

http://localhost:10086/foo に転送するので、もし http://localhost:10086/app1/foo に転送したい場合は

{
    "mattn": {
        "address": "127.0.0.1:11006",
        "entries": [
            { "path": "/app1/", "backend": "http://localhost:10086", "use_path": true },
            { "path": "/app2/", "backend": "http://localhost:10087" },
            { "path": "/",      "backend": "/home/mattn/tmp/blog/_site" }
        ]
    }
}

の様に use_path を指定する。また CGI が使いたい場合は

{
    "mattn": {
        "address": "127.0.0.1:11006",
        "entries": [
            { "path": "/app1/", "backend": "http://localhost:10086", "use_path": true },
            { "path": "/app2/", "backend": "http://localhost:10087/foo.cgi", "cgi": true },
            { "path": "/",      "backend": "/home/mattn/tmp/blog/_site" }
        ]
    }
}

の様に設定する。設定は複数記述する事ができ

{
    "mattn": {
        "address": "127.0.0.1:11006",
        "entries": [
            { "path": "/app1/", "backend": "http://localhost:10086", "use_path": true },
            { "path": "/app2/", "backend": "http://localhost:10087/foo.cgi", "cgi": true },
            { "path": "/",      "backend": "/home/mattn/tmp/blog/_site" }
        ]
    },
    "thinca": {
        "address": "127.0.0.1:11008",
        "entries": [
            { "path": "/app1/", "backend": "http://localhost:10088", "use_path": true },
            { "path": "/app2/", "backend": "http://localhost:10089/foo.cgi", "cgi": true },
            { "path": "/",      "backend": "/home/thinca/tmp/blog/_site" }
        ]
    }
}

の様にも書ける。動作させたまま設定を読み込みなおす場合は、gorem のプロセスに SIGHUP を送る。

$ kill -HUP 12345

上記の設定で thinca だけ再読み込みしたい場合は

{
    "mattn": {
        "address": "127.0.0.1:11006",
        "entries": [
            { "path": "/app1/", "backend": "http://localhost:10086", "use_path": true },
            { "path": "/app2/", "backend": "http://localhost:10087/foo.cgi", "cgi": true },
            { "path": "/",      "backend": "/home/mattn/tmp/blog/_site" }
        ]
		"flagfile": "/tmp/gorem.mattn"
    },
    "thinca": {
        "address": "127.0.0.1:11008",
        "entries": [
            { "path": "/app1/", "backend": "http://localhost:10088", "use_path": true },
            { "path": "/app2/", "backend": "http://localhost:10089/foo.cgi", "cgi": true },
            { "path": "/",      "backend": "/home/thinca/tmp/blog/_site" }
        ],
		"flagfile": "/tmp/gorem.thinca"
    }
}

の様に設定しておき

$ touch /tmp/gorem.thinca

とすれば thinca だけ再読込される。

なお goreman は foreman 互換なので .env というファイルに

FOO=bar
BAR=baz

と書けば環境変数が設定出来る。


サイトトップへ