9. Ollamaをsystemdサービスとして安定稼働させるための手順
手動起動の限界とサービス化の必要性
開発やテストの段階では、ターミナルで手動実行するだけで十分ですが、本番環境や継続的な利用を前提とする場合、単なる手動起動では「サーバー再起動時に落ちる」「クラッシュしても自動復旧しない」という運用上の大きなリスクを抱えます。これを解決するのがsystemdによるサービス化です。
systemdによるサービス化の基本概念
systemdは、Linuxシステム上でプロセスを管理するための標準的な仕組みです。サービス化とは、アプリケーションの起動、停止、再起動、そしてクラッシュ時の自動復旧といったライフサイクル管理をOSレベルで保証させることを意味します。Ollamaの場合、これをサービスとして登録することで、OSの起動プロセスに組み込むことができます。
具体的なユニットファイル作成手順
以下の手順で、サービス定義ファイル(ユニットファイル)を作成し、systemdに認識させます。
- 1. 実行ユーザーとパスの特定: Ollamaをどのユーザー(例:`ubuntu`)として、どのパスから実行するかを確定します。これはセキュリティ上最も重要です。
- 2. ユニットファイルの作成: `/etc/systemd/system/ollama.service`などのパスにファイルを作成します。このファイルに、実行コマンド、ユーザー、リスタートポリシーを記述します。
- 3. サービスの再読み込みと起動: `systemctl daemon-reload`でsystemdに新しい設定を認識させ、`systemctl enable ollama.service`で起動時に自動実行を有効化し、`systemctl start ollama.service`で手動起動します。
リスタートポリシーとログの確認
サービスを登録した後、最も確認すべきは「リスタートポリシー」です。`Restart=always`を設定することで、プロセスが予期せず終了した場合に自動で再起動を試みます。また、ログは`journalctl -u ollama.service`で確認し、起動時やクラッシュ時のログが正しく記録されているかを確認することが、運用監視の基本となります。
まとめ:OSレベルでのライフサイクル管理の導入
Ollamaのようなバックグラウンドで常駐し続けるサービスは、単なる`&`や`nohup`での実行では不十分です。systemdを利用することで、OSの起動プロセスに組み込まれ、クラッシュからの自動復旧という「信頼性」という付加価値を得ることができます。

