tech.chakapoko.com
Home / Linux / Systemd

[Linux]サービスをSystemdで動かすよう設定する

サンプルアプリケーションの準備

追加するサービスはNode.jsで作成した簡単なHTTPサーバです。

const http = require('http');

http.createServer((req, res) => {
    console.log(req.method + ' ' + req.url);
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(8000, () => {
    console.log('Server running')
});

このファイルを /home/ubuntu/app.js として保存します。

systemdの設定

Ubuntu 18.04ではsystemdの設定ファイルは /etc/systemd にあります。

以下の内容のファイルを /etc/systemd/system/http-server.service として保存します。

[Unit]
Description = Simple HTTP Server

[Service]
ExecStart = /usr/bin/node /home/ubuntu/app.js
WorkingDirectory = /home/ubuntu
Restart = always
User = ubuntu
Group = ubuntu

[Install]
WantedBy = multi-user.target

ExecStart にはサービスの起動コマンドを記述します。コマンドはフルパスで指定する必要があるので node ではなく /usr/bin/node と書きます。

サービスの起動と再起動は

systemctl start でサービスが起動できます。

$ sudo systemctl start http-server.service

再起動は systemctl restart を使います。

$ sudo systemctl start http-server.service

サービスを起動すると localhost:8000 へのリクエストに対してメッセージが返ってくるようになるはずです。

設定変更の反映

設定ファイルを編集したら

$ sudo systemctl daemon-reload

で設定を反映できます。

ログの閲覧

ログは以下のコマンドで閲覧できます。

$ journalctl -xef