December 18, 2005
Mac miniにApacheとPHP5を入れてみたら、やっぱりこの手のものはエディタが優れてるWindowsから操作したくなって、sshdとSambaを入れてみて気がついたメモ。(google検索キーワード用に使ってください。)
・init.dがない!代わりに起動に使うもの
・/etc/passwdも使わない!代わりに使うNetInfo
・OS X上の共有サービスとApache,Samba,sshdとの関係
・おまけ:参考リソース
■init.dがない!代わりに起動に使うもの
OS XではUnix伝統(らしい)のinit.dなる起動プロセスを使わないで独自のOS起動処理になっているようです。とっかかりとなるべきキーとなる情報だけ示しておきます。
/etc/hostconfig
OS起動時に、あるサービスが起動設定する変数だけのファイル。以下に示す起動スクリプトではこのキーを見て起動するかどうかを決めているようです。組み込みのApacheはここにキーが書いてありますし、MySQLなどを追加インストールした場合は、ここに起動キーを書いてあげるとわかりやすいです。(別に書かなくてもいいような気がするけど、決まりごとなのかな。)
/System/Library/StartupItems
OS Xの最初からインストールされているスタートアップ項目を格納したディレクトリ
各サービス毎にinfo.plist形式のメタファイルと起動スクリプトが格納されているので、ここから起動するプログラムのありかを知ることができる。組み込みのApacheの起動はここから行われます。
/Library/StartupItems
↑と同じものですが、自分でインストールしたサービスはこちらに記述するようです。
MySQLと自前で入れたApacheはここに入れておきました。PHPはApacheの後ろだから関係ないですね。Tomcatはここなんでしょうが、2ちゃんねるで書いてあった起動順制御が見当たらないのが気になるかも。
/System/Library/LaunchDaemons
リクエストがあったときにオンデマンドで起動することで省エネ稼動可能なネットワークサービスを定義するんだそうな。sshやftp,sambaはここから起動されます。launchctl というコマンドで起動制御します。通常起動されないサービスは、info.plist形式で、Disabledというkeyが定義されていますので、これを切り替えることで動くようになるみたいです。
※起動処理は他にもあるようです。上記キーワードでぐぐるといろいろ出てくることでしょう。
■/etc/passwdも使わない!代わりに使うNetInfo
OS Xのユーザ認証はNetInfoというディレクトリサービスに任せられてるようなので、通常起動では/etc/passwdは使いません。
僕が困ったのは、Sambaのユーザ登録でした。sambpasswdも成功しない上にログインもできませんでした。結局、OS XのGUI側の「システム環境設定」ー「共有」の設定で、「Windows共有」を有効にして、ユーザを設定することでログインできるようになりました。NetInfoにSambaの設定も含まれているのでしょうか。
sambaの設定は、Sambaのサイトを参考にして、/etc/smb.confに書いておけばOKです。
また、Launchdから起動されているので、設定ファイルを書き換えても、次に呼び出されるときにその設定が反映されてるみたいで、明示的にsambaを再起動とかしなくても良いみたいです。便利です。
■OS X上の共有パネルとApache,Samba,sshdとの関係
sshやSambaは、組み込みのものをそのまま使うので良いんですが、Apacheだけは新しいバージョンに入れ替えたいというケースがままあると思います。
僕も新しそうバージョンのApacheを拾ってきて、自分が使い慣れたディレクトリにインストールしてから気がついたのですが、「システム環境設定」ー「共有」のパネルで、パーソナルWeb共有というのを有効にすると組み込みのApacheが起動されてしまいます。そうすると自分が起動したApacheより、そっちのApacheが有効になってしまいました。
これはトラブルの元です。と、同時に思ったよりMac OSとBSDの部分はちゃんと連携をしてることにうれしくもあり、悲しくもあり。
つまりApacheなどのMacの部分と連携しているサービスを入れる場合は、その依存関係を把握して、システム環境設定からの互換性を維持した上で完全にApache側だけを入れ替えるか、それらを理解したうえで排他的に動かすかのいずれかが求められます。
僕はヘタレなので、とりあえず排他で動かすことにしました。多分、自前でWEBDAVの設定をすれば、パネルで設定したものと同じものになるとは思うので、ネットワークドライブで直接ファイル編集すれば、まぁいいか、とは思っていますが、あまり気持ち良いものではありません。
(と書いてて思いましたが、組み込みのApacheは自動アップデートでアップデートされたりするんでしたっけ?できれば組み込みのApacheを使ったほうが無難なんでしょうね。)
■おまけ:参考リソース
検索していてメモっておこうと思ったURL
OSが壊れた、起動しなくなったなど緊急時に役に立ちそうな情報
Panther -> Tiger の upgrade でハマる (2)
2ちゃんで拾ったlaunchdに関する情報リソースURL
SystemStartupの仕組み
アップルのコマンドリファレンス