Mac OSXでApacheを使う場合、OS内蔵のApacheを使っていることが多いと思います。
今回はApache起動時に定義した環境変数を反映する方法を紹介します。
apachectrlによるApacheの管理
Mac OSXでApacheを使う場合、大半の方がapachectrlで起動/停止を行っていると思います。
Apacheの設定を変えずに使うのであれば、それでも問題ないのですが、今回のように起動時に環境変数を反映する場合には少し注意が必要です。
apachectrlの起動時に以下のファイルから環境変数を設定しています。
/System/Library/LaunchDaemons/org.apache.httpd.plist
しかしこのファイル見てわかる通り、rootdでしたか編集できないのです。。。
$ ls -lt /System/Library/LaunchDaemons/org.apache.httpd.plist
-rw-r--r-- 1 root wheel 554 8 23 2015 /System/Library/LaunchDaemons/org.apache.httpd.plist
sudoなど色々な権限を駆使しましたが、結局このファイルの変更は難しそうなので、違う方法を模索することに。
自作のシェルでのApacheの管理
そこで自作のシェルで以下を対応することにしました。
- exportコマンド環境変数を設定
- httpdコマンド実行
これであれば、割と自由に設定が可能です。
#!/bin/sh
export ACCESS_KEY_ID=*****************
export SECRET_KEY=****************************
HTTPD='/usr/sbin/httpd'
$HTTPD "$@"
ここでは「ACCESS_KEY_ID」と「SECRET_KEY」という二つの環境変数を設定しています。
シェルの実行方法は以下のような感じです。
# 起動
$sh myhttpd -k start
# 停止
$sh myhttpd -k stop
シェルの引数はhttpdの引数の仕様に合わせました。
まとめ
自前のインフラ管理の場合はapachectrlよりもシェルを実装した方が柔軟に対応できそうです。