Server

[CentOS7] systemdにサービスを登録して、サーバ起動時に自動でサービスを立ち上げる

投稿日:

はじめに

こんにちは。近頃railsを触っていますが、webサーバさえ起動すればリクエストを受け付けてくれるPHPと違い、railsはrackサーバの起動が必要になりますね。
そこで今回はCentOS7でsystemdに自作のスクリプトを登録してサービスとして操作し、サーバ起動時にpumaが自動で起動するところまで設定してみます。

chkconfigについてざっくり

サーバサイドに詳しくない方向けに。ご存知の方は読み飛ばしてOKです。

  • chkconfigは、サービスの自動起動を管理するコマンドです。CentOS6まで使われていました。
  • 端末としてみなさんが使っているmacやwindowsでは、マシンの起動時に様々なサービスが立ち上がっています。
    サーバでもそれは同様で、例えばNginxやMySQLがインストールされています。それらの起動を管理するのがchkconfigです。
  • CentOS7でもchkconfigコマンドは実行できますが、systemctl(systemd)へのリダイレクトになっているので、今後はRedhat系を使うのであればsystemdになります(AmazonLinux2でもsystemdですし)。
  • 参考
    chkconfigまとめ
    chkconfig – サービスの自動起動の設定 / CentOS
    CentOS7系と6系のコマンドの違いについて
    chkconfigって結局なんなんだ

前提

  • CentOS7.5
  • rbenv, ruby-build, rails, bundlerインストール済み
  • ユーザー名「testuser」のホームディレクトリ配下にrails new済みで、 rails s すれば問題なくpumaが起動する

起動スクリプトを作成する

puma起動のコマンドをシェルスクリプトで作成します。
場所はどこでもよいですが、testuserがアクセスおよび実行できるパスにします。

Unitを定義する

/etc/systemd/system/ 以下に定義ファイルを作成します。これでsystemdでの操作が可能になります。
他にももっと細かく記述できますが、以下は起動のための最低限の内容です。

EnvironmentFileを作成する

systemdは環境変数を一切読み込まないため、スクリプト実行時に読み込まれてほしい環境変数は EnvironmentFile に記述します。以下記載例です。
なおこのファイル内では変数を評価しないので、値は全てべた書きになります。Userに指定するユーザでログインして、 printenv | more 等であらかじめ環境変数の値を確認しておきましょう。

確認と設定

systemdで管理できるようになっているか

systemctl list-unit-files --type=service | grep pumapuma.service が表示されていればOKです。

自動起動を有効化する

systemctl enable puma
実行後、メッセージは特に表示されません。

手動で起動してみる

systemctl start puma を実行し、ブラウザでアクセスします。
失敗時は systemctl status puma で最後数行分のログが確認できますが、もっと表示したい場合は journalctl -b | less で、サーバ起動後のログが一覧できます。
成功していれば、下記のようなステータスになります。

自動起動確認

shutdown -r 等でサーバを再起動後、再度ブラウザでアクセスします。失敗している時は上述した systemctl statusjournalctl でログを確認しましょう。

さいごに

いかがでしたでしょうか。今回は自動起動の設定を紹介しましたが、.serviceファイルにはもっと様々な設定項目があり、細かい制御が可能です。
例えば[Unit]セクションではサービス起動の順番や他サービスとの依存関係など、[Service]セクションでは systemctl stopsystemctl reload の設定ができます。
長らくCentOS5/6を使っていたせいで、ついつい service httpd start などとタイプしてしまうのですが、こうして実際に使いつつ整理することで、少しずつ手に馴染んできました。

参考

blog-page_footer_336




blog-page_footer_336




-Server

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

InnoDBでauto_incrementの値が戻る?

はじめに 花粉症が辛い季節になりました。 花粉症も困りますが、本日はMySQL関連で困って調べたことをまとめたいと思います。 タイトルですが、InnoDBだとDBを再起動した際にauto_increm ...

WordPressのサーバ移設とnginxで無料SSLをやってみた

1 はじめに1.1 環境2 サーバー準備2.1 ConohaのVPSサーバーの契約2.2 sshログイン用のユーザーを作成2.3 必要なソフトウェアのインストール3 WordPressの移行3.1 D ...

配牌からアガれるかアガれないか予測する

1 はじめに1.1 趣旨1.2 筆者のスペック1.3 環境1.4 機能概要2 実装に関して2.1 教師データ2.2 前処理2.3 各ノードの重みの学習3 実際に使ってみた3.1 再テスト4 学習させた ...

aws

Amazon Linux 2でLet’s Encryptが使えない

1 はじめに2 Amazon Linux 22.1 Amazon Linux Extras Library3 Let’s Encrypt4 本題5 さいごに はじめに 知人からタイトルのよ ...

CentOS6のLAMP環境でTLS1.2対応

1 はじめに2 業界団体レベルでのTLS1.2移行3 構成4 ssl.confを編集する5 ジェネレータ任せでOK6 設定変更の影響7 さいごに はじめに ものすごくひさしぶりにLAMP環境のSSL設 ...

フォロー

blog-page_side_responsive

2018年7月
1234567
891011121314
15161718192021
22232425262728
293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。