Mac miniを常駐マシンに (3) - サービス管理
今更ながら、この手の記事は探すとかなりの数が見つかりますね。本まで出ています。「Mac mini 自宅サーバ」で検索すると多数ヒットします。
ここで紹介しているのは、そういった手順を参考にせず進めていくので、いきあたりばったりで行った場合の例として、そして失敗例として、捉えていただくとよろしいかと思います。
さて、これ以降は、サービス(デーモン)をいくつか起動させますので、いくつかのポートを開ける危険があることにご留意ください。
- 環境
- 本体:Mac mini (MC238J/A)
- OS:Mac OS X Snow Leopard (10.6.2)
- 目次
サービス管理(launchd,lingon)
MacOSX 10.6 (Snow Leopard)の時点では、サービス管理サーバ?*1はinetdではなく、launchdというものを採用しているようです。
Mac OS Xは(Mac OS X v10.2 以降)xinetd を使っていた。Mac OS X v10.4 では、inetd の機能は launchd に統合されている。
inetd - Wikipedia
launchdは設定ファイルを準備するのが面倒そうなので、GUIで管理できるlingonというオープンソースのソフトを使うことにしました。
launchdは、plistという形式の設定ファイル(XML)を使用しており、lingonではこのファイルを簡易XMLエディタで編集でき、これがダイアログの入力とリンクするようになっているようです。
各種デーモン(telnetd,ftpd,httpd)
まずは、httpdを起動してみることにしました。"system daemons"というタブを選択すると、警告が表示され、その後でパスワード入力が要求されます。
この中に、Apache-Httpdが既に設定されていますが、無効になっているので、有効にしてロードしてあげます。他のPCからブラウザでアクセスすると、無事、"It works!"と表示されました。"/Library/WebServer/Documents"がDocumentRootになっています。
telnetdも同様に有効にして、ここからはメイン機で遠隔操作ができるようになりました。ftpdも同様に試しましたが、今の時点では閉じておきます。
"user daemons"を見ると、PostgreSQLが登録されていました。手動で起動したので、これを停止してからlingonにて起動し直しました。
SCMサーバ(cvs-pserver,svn-webdav)
現在運用しているSCMリポジトリは、CVSメイン、CVS作業用、SVNメイン、SVN作業用があります。これらをこのMacに載せようと思います。CVSもSVNもインストール済みなので、サービス設定から。
ではCVSから。これが端っから嵌ります。最初に試したときは上手く行ったのに、許可ディレクトリを追加しようとすると追加できません。
あとで冷静になって調べてみたら、やっと解決。それまでの手順は、
- ポート2401は既に誰か(おそらくXcode)がcvspserverを起動している。
- ポートを変えてやってみるがダメ。
- コマンドが間違っているのかと思って変えてみたがダメ。
- ようやくsyslodを見るべきことに気づく。どうやらreloadがされていないっぽい。
- コマンドラインから直接launchctlでreload。成功。
lingonにも"Unload"はあるのですが、メニューが無効になっていたので、"Save&Load"だけでやっていたのでした。これが解決するまでは、lingonは編集のみで、リロードはコマンドでやることにします。リモートでできますし。
- cvspserverの設定
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>Label</key> <string>local.cvspserver</string> <key>OnDemand</key> <true/> <key>Program</key> <string>/usr/bin/cvs</string> <key>ProgramArguments</key> <array> <string>cvs</string> <string>--allow-root=/opt/local/var/cvs/work</string> <string>pserver</string> </array> <key>RunAtLoad</key> <false/> <key>Sockets</key> <dict> <key>Listeners</key> <dict> <key>SockPassive</key> <true/> <key>SockServiceName</key> <string>52401</string> <key>SockType</key> <string>stream</string> </dict> </dict> <key>UserName</key> <string>root</string> <key>inetdCompatibility</key> <dict> <key>Wait</key> <false/> </dict> </dict> </plist>
SVNは、Apache-Httpdのmod_dav_svn(WebDAVのモジュール)でやってみました。こちらは割とすんなり行きました。以下に挙げた点などを注意すれば大丈夫そうです。
更にHTTPSで接続できるようにしようかと思います。これは今後Apache-Httpdの詳細設定でまとめて行う予定ですので、今回はここまで。
プロジェクト管理システム(Trac,Hudson)
MacPortsにより"trac @0.11.6_0"をインストールします。これはちょうど30分かかりました。
$ trac-admin /var/trac/projects/test initenv $ tracd --port 8000 /var/trac/projects/test
これで設定完了。表示できました。ですが、各所で使用しているのが日本語版なので、英語版は違和感がありますね...。いろいろ面倒なので、日本語版(Trac_ja 11.5)をインストールし直します。
先ほどインストールしたtrac本体と初期化したディレクトリは、いったんアンインストール/削除しておきます。
Zipファイルを"/var/trac"にディレクトリなしで展開し、"setup.py"を実行します。ディレクトリの所有者は、いまのところはログインユーザにしておきます。
$ sudo python setup.py install $ trac-admin /var/trac/projects/test initenv
tracdは、今度はlaunchdに登録しています。
これで、日本語版が表示できました。ただし、この状態だと認証設定がないのでログインできません。認証設定は、Apache-Httpdに統合してから行う予定です。
最後に、Hudson。これはMacPortsは使えないので、サイトから直接ダウンロード。バージョンは、安定版の最新1.312です。
起動は以下のコマンド。ポートは80,8080,8000が使用済みなので、8888としています。これをlaunchdに設定します。
java -jar /(install-path)/hudson.war --httpPort=8888
起動しました。作業ディレクトリなど、諸々の詳細設定は、これまでと同様に統合の際にまとめて行います。
次回
まだ続く予定です。残りのサービスの設定などをやっていきます。