Wiki.jsをサービスとして起動させるためのlaunchd.plist案
軽量で、多機能で、将来性に期待を込めたくなるWiki.jsです。公式ページのインストールマニュアルには、ありがたいことにmacOSへのインストールとテスト用としての起動手順もまとめられています。
MySQL、php、Apache2、homebrewなどの環境整備は必要ですが、それさえできれば、Wiki.jsは、このマニュアル通りで起動まで、さくっといけることがわかりました。
さて、ここまでは良いのですが、このマニュアルには、nodoからwiki.jsを実行、システムに常駐するサービスとして起動させる方法については、”Coming soon”となっていて紹介がありません(2023年7月4日)。
マニュアルにはWiki.jsをテスト環境課で起動させるコマンドとして、wiki.jsを配置したディレクトリで、以下の実行をすることが示されています。
node server
ようは、nodeコマンドで、Wiki.jsをインストールしたディレクトリ無いのファイル類を起動させているわけですが、毎回毎回これを手打ちで行うというわけにもいきません。AppleScriptを作成して、スタートアップに追加するという手もありそうですが、サーバーというサービス的位置づけでやるなら、macOS的には、launchdを使用してサービスとしての起動をゴールにすることになると思います。
私自身、launchdは詳しくありません。そこで、見よう見まねで、おなじnodeでサービスを常駐させているhomebridgeがシステムにインストールしていたlaunchd.plistを参考に、以下の内容のlaunchd.plistを作成してみました。結果、どうやらうまくいっているようですので、今後、macOSにWiki.jsをinstallしようという方の参考になればと、以下に紹介をしておきます。
wiki.jsは、hogeというユーザーのSitesフォルダ内に、wikijsという名称で設置したものとします。
nodeは、homebrewを利用して、hogeというユーザー名のホームフォルダ内の.nodebrewにインストールされています(この部分の説明がこれで正しいかは不明)。
launchd.plistファイルは、js.wiki.server.plistとしました。
<?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>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>js.wiki.server</string>
<key>ProgramArguments</key>
<array>
<string>/Users/kanzasmoon/.nodebrew/current/bin/node</string>
<string>/Users/bunseki/Sites/wikijs/server</string>
</array>
<key>WorkingDirectory</key>
<string>/Users/bunseki/Sites/wikijs/</string>
<key>UserName</key>
<string>bunseki</string>
</dict>
</plist>
はじめは、WokingDirectoryの指定をしない内容で書いてみたのですが、これを指定しないと、Wiki.jsのconfig.ymlを/Users/Library/以下に探しに行くようです。
そこで、上記のように、WokingDirectoryに/Users/ユーザー名/Sites/wikijs/を指定することでうまくいくことがわかりました。
hogeの部分を、ご自分のインストール場所、ユーザー名に書き換えての利用の参考にしてみてください。
この内容が記載されたファイルを、js.wiki.server.plistという名前で保存し、/Library/LaunchDaemons/に配置します。配置後、launchdの起動リストに追加させるため、以下のコマンドを実行します。
sudo launchctl load //Library/LaunchDaemons/js.wiki.server.plist
実行後、wiki.jsのURLにアクセスできれば、成功です。