0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

サーバーの起動コマンドをsystemdで管理する

Last updated at Posted at 2024-11-24

概要

EC2で稼働するWebサーバーを構築しました。
構築〜起動手順をレビュー依頼をしたところ、エンジニアから以下の指摘を受けました。

「起動処理をsystemdで管理すると良いかも」

確かに...!
systemd サービス定義を自作する経験がなかったため、備忘録も含め本記事を執筆することにしました。

前提知識

前提知識について触れておきます。

systemd とは?

Linuxの起動処理やシステム管理を行う仕組み。

systemdにプログラムを登録しておくことで、Linux起動時に自動で任意のプログラムを実行することができる。

参考

systemd でプログラムを管理するメリット

  • WEBサーバーの起動など、EC2再起動時にも実行しておきたいプログラムなどを登録する
  • OOM Killer(Out-Of-Memory Killer)によるプロセス停止時も再起動される

OOM Killerとは?

Linuxのメモリ管理機構の一部であり、システムが利用可能なメモリを使い果たした際に、システム全体の安定性を維持するために自動的にプロセスを終了させる仕組み。

システムがメモリ不足(Out of Memory, OOM)状態に陥った際、どのプロセスを終了させるかを判断し、選定されたプロセスを強制終了する。

[hands-on] WEBサーバーの起動をsystemdで管理する

WEBサーバーの起動は Ruby スクリプトで実行しています。
以下実行コマンドを systemd で管理していきたいと思います。

  • /usr/bin/ruby deploy_server.rb

1. サービスファイルの作成

サービスファイルは/etc/systemd/system配下に作成します。

sudo vi /etc/systemd/system/deploy_server.service

2. サービスファイルの編集

Unit, Service, Install の定義を行います。

[Unit]
Description=Deploy Server Service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=ec2-user
WorkingDirectory=/home/ec2-user/
ExecStart=/usr/bin/ruby deploy_server.rb
Restart=on-failure

[Install]
WantedBy=multi-user.target

解説

  • After=network-online.target
    • ネットワーク接続確立後にコマンドを実行する
  • WorkingDirectory
    • コマンドディレクトリ
  • ExecStart
    • 実行スクリプト
  • Restart=on-failure
    • プロセスが異常終了した場合、リスタートする

3. systemd のリロード

sudo systemctl daemon-reload

4. サービスの有効化

sudo systemctl enable deploy_server.service

5. サービスの起動

sudo systemctl start deploy_server.service

6. サービスの動作確認

sudo systemctl status deploy_server.service

まとめ

サービスが起動されていることを確認してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?