シェルスクリプトでWebアプリケーションいけますよっていっても、実際にこんな感じで開発するといいみたいなプラクティスが古いまま(ローカルにApacheいれたりとか、まあ別にそれでもいいんだけど)なので、試してみたことを書き残しておこうと思います。
タイトルなんのこっちゃって感じですが、
HOGE=aaaa lighttpd -D -f lighttpd.conf
みたいな感じで渡した環境変数HOGE
を、CGIスクリプト内で使用するためのlighttpdの設定についてです。
API_KEY=xxxxxxxx rails s
みたいな感じの、現代的なWeb開発環境だとだいたいあるアレです。(語彙)
サンプルコードはこちら: https://github.com/miminashi/lighttpd_env_example
lighttpd.conf の設定
-
mod_setenv
を有効化する -
setenv.add-environment
に、CGIに渡したい環境変数を追加する
lighttpd.conf
server.modules += ( "mod_setenv" )
setenv.add-environment = ( "HOGE" => env.HOGE )
CGIのスクリプトの例
- 普通に環境変数
HOGE
を使用できるようになっています
#!/bin/sh
printf 'Content-Type: text/plain; charset=UTF-8\r\n\r\n'
printf 'HOGE: %s\r\n' ${HOGE}
実行
$ brew install lighttpd
$ HOGE=helloworld lighttpd -D -f lighttpd.conf
動作確認
- 当然ですが別のTerminalを開きます
- 当然ですがブラウザから確認してもOK
$ curl http://localhost:3000/cgi-bin/hello.cgi
HOGE: helloworld
まとめ
- lighttpdで環境変数ひとつずつ指定するしかないのか・・・?
- 参考: https://stackoverflow.com/questions/28818130/lighttpd-not-making-global-environment-variables-availble-to-executables