Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Amazon Linux 2でdaemontoolsを使う

More than 3 years have passed since last update.

Amazon Linux 2でdaemontoolsを使う

はじめに

12月13日(米国時間)⁠に、AWS EC2 上で稼働する Amazon Linux 2 のリリース候補(RC)が発表されました。
特徴などは、AWS上のサイトに掲載されています。

いくつかある特徴のなかで、気になったのは Systemd のサポートです。
業務で使用するインスタンスは Amazon Linux AMI 2017.09以前で構築され、サービスの管理は daemontools を使用しています。今後新規に作成するインスタンスの AMI に Amazon Linux 2 を選択した場合、既存の運用環境が移行できるのか、引き続き daemontools が利用できるのか。
"Amazon Linux 2 では daemontools が動かなかった" といったtweetを見かけたため、試してみました。
daemontools 経由で nginx を動かしてみます。

前提条件

  • リージョン : 東京
  • AMI ID : amzn2-ami-hvm-2017.12.0.20171212.2-x86_64-gp2 (ami-2a34b64c)
  • インスタンス タイプ : t2.micro

参考情報

インスタンスの作成

AMIは、この画面で選択可能です。
Amazon Linux 2 LTS RC

Development Tools グループをインストール

daemontoolsのインストールに必要となる開発ツールを含む、Development Tools グループをインストールします。

$ sudo yum group install "Development Tools"

daemontoolsのインストール

公式サイトの手順に従い、パッケージのダウンロードやインストールを行うディレクトリを作成します。

$ sudo mkdir -p /package
$ chmod 1755 /package
$ cd /package

daemontools のダウンロード、パッチ適用、インストールを行います。
パッチを適用しないと install 実行時にエラーとなります。

$ sudo wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
$ sudo tar xvfz daemontools-0.76.tar.gz
$ cd admin/daemontools-0.76/
$ sudo wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
$ sudo patch -s -p1 <./daemontools-0.76.errno.patch
$ sudo ./package/install

Systemd用の設定ファイルを新規作成します。

$ sudo mkdir -p /etc/systemd/system
$ sudo vi /etc/systemd/system/daemontools.service
daemontools.service
[Unit]
Description=daemontools Start supervise
After=getty.target
[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/command/svscanboot /dev/ttyS0
TimeoutSec=0
[Install]
WantedBy=multi-user.target

システム起動時に daemontoolsが 起動するようにします。

$ sudo systemctl enable daemontools
Created symlink from /etc/systemd/system/multi-user.target.wants/daemontools.service to /etc/systemd/system/daemontools.service.

daemontools を起動します。

$ sudo systemctl start daemontools

Systemdでは start を実行しても結果が標準出力されないため、status を実行して状態を確認します。

$ sudo systemctl status daemontools.service
● daemontools.service - daemontools Start supervise
   Loaded: loaded (/etc/systemd/system/daemontools.service; enabled; vendor preset: disabled)
   Active: active (running) since 土 2017-12-23 13:15:50 UTC; 29s ago
 Main PID: 4566 (svscanboot)
   CGroup: /system.slice/daemontools.service
           ├─4566 /bin/sh /command/svscanboot /dev/ttyS0
           ├─4568 svscan /service
           └─4569 readproctitle service errors: ....................................................

nginxのインストール

Amazon Linux 2では、Extras リポジトリからいくつかのパッケージがインストールできるようになりました。
いままで nginx は標準の yum リポジトリに無かったため、/etc/yum.repos.d以下にリポジトリ設定が必要でしたが、それが不要になります。 (もちろん、より新しいものや他のバージョンが必要な場合は、いままでどおり設定が必要)

Amazon Linux 2にExtrasレポジトリからNginxをインストールするに分かりやすく整理されているので、これに従ってインストールします。

$ sudo amazon-linux-extras install nginx1.12

nginx を daemontoolsで管理できるよう /service 以下にディレクトリを作成します。

$ sudo mkdir /service/nginx
$ sudo chown -R ec2-user. /service/nginx/

runファイルを作成し実行権限を付与します。

$ sudo vi /service/nginx/run
run
#!/bin/sh
exec /usr/sbin/nginx -c /etc/nginx/nginx.conf -g 'daemon off;' 2>&1
$ chmod +x /service/nginx/run

daemontools経由での nginx 起動 / 停止

動いているようです。

# svc -u /service/nginx/
# svstat /service/nginx/
/service/nginx/: up (pid 3427) 5 seconds
# svc -d /service/nginx/
# svstat /service/nginx/
/service/nginx/: down 4 seconds, normally up
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away