目次
Ubuntu環境でFastAPIを効率的に運用するためには、アプリケーションをデーモン化することが重要です。
デーモン化することで、システム起動時に自動的にFastAPIが始動し、常時稼働させることが可能になります。
この記事では、systemdを利用してFastAPIをデーモン化する手順について説明します。
systemdを利用したサービス登録
Ubuntuでは、systemdが標準のイニシャルシステムとして採用されています。systemdを使ってFastAPIをサービスとして登録することで、アプリケーションのデーモン化を実現できます。
serviceファイルの作成
まずは、FastAPIアプリケーション用のserviceファイルを作成します。ここでは、サービス名をfastapi
として進めます。
sudo touch /etc/systemd/system/fastapi.service
serviceファイルの編集
作成したserviceファイルを編集します。編集には任意のテキストエディタを使用してください。
sudo vim /etc/systemd/system/fastapi.service
FastAPIのプロジェクトが/home/ubuntu/fastapi
内にある場合、serviceファイルの内容は以下のようになります。
[Unit]
Description=FastAPI
After=syslog.target network.target
[Service]
Type=simple
WorkingDirectory=/home/ubuntu/fastapi
ExecStart=/home/ubuntu/fastapi/.venv/bin/uvicorn main:app --host=0.0.0.0 --port=8000
KillMode=process
Restart=always
User=ubuntu
Group=root
[Install]
WantedBy=multi-user.target
serviceファイルの説明
serviceファイルの各セクションについて簡単に説明します。
[Unit]
セクションでは、サービスの説明や依存する他のサービスを指定します。[Service]
セクションでは、サービスの実行方法や振る舞いに関する設定を行います。[Install]
セクションでは、どのランレベルでサービスを有効化するかを指定します。
serviceの登録と起動
systemdに新しく追加したserviceファイルを認識させるために、以下のコマンドを実行します。
sudo systemctl daemon-reload
次に、FastAPIサービスを有効化します。
sudo systemctl enable fastapi.service
サービスを開始します。
sudo systemctl start fastapi.service
最後に、サービスが正常に起動しているかを確認します。
sudo systemctl status fastapi.service
Active
がfail
になっていないこと、およびLoaded
にenabled
と表示されていれば、サービスの起動と有効化が成功しています。