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


関連記事

MySQL 5.7 オプティマイザの改善〜UNION ALL〜

1 はじめに2 「UNION」と「UNION ALL」の違い3 MySQL 5.7での「UNION ALL」の改善とは4 MySQL 5.7での実行計画4.1 UNION ALL実行計画4.2 UNI ...

aws

Amazon EC2を使ってみる

1 はじめに2 事前準備2.1 ルートアカウントのMFAを有効化2.2 個々のIAMユーザの作成(及びグループの作成)2.3 IAMユーザのMFAを有効化2.4 IAMパスワードポリシーの適用3 EC ...

DockerでRuby2.5、Rails5.2betaの環境をつくる【Compose file v3】

1 はじめに2 Dockerのインストール3 ファイルの準備3.1 Gemfile3.2 Gemfile.lock3.3 Dockerfile3.3.1 Ruby(Rails)3.3.2 MySQL3 ...

aws

AWSのT3インスタンスの特徴

1 はじめに2 T3インスタンスとは2.1 T3インスタンスのスペック2.2 Unlimited Modeがデフォルトで有効2.3 ハイパーバイザはNitro3 T2インスタンスとの比較3.1 仮想C ...

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  

アプリ情報

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