Edited at

lighttpdを起動するときに渡した環境変数をCGIから利用する

シェルスクリプトで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


まとめ