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 puma で puma.service が表示されていればOKです。

自動起動を有効化する

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

手動で起動してみる

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

自動起動確認

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

さいごに

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

参考

blog-page_footer_336




blog-page_footer_336




-Server

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA


関連記事

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

はじめに 趣旨 こんにちは、最近個人的な勉強としてディープラーニングを始めたtonnyです。 手始めに、O’Reilly Japanさんから出版されているゼロから作るDeep Learni ...

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

はじめに Amazon RDSのMySQL 5.7で開発を行うことになりました。そこで、少しですがMySQL 5.7の機能を調べる機会がありましたので、今回は「UNION ALL」に関してのオプティマ ...

DockerでLAMP環境をつくり、LimeSurveyを動かしてみた

はじめに LAMPのローカル環境構築には便利なツールがたくさんあります。 MacだったらMAMP、WindowsならWAMPなどが有名でしょうか? 今回、調査のためにLimeSurveyを使用すること ...

aws

AWS Lambdaの関数スケーリングとローカル実行

はじめに 前回の記事では、AWS LambdaとSQSを組み合わせるシンプルな方法を紹介しました。 今回は引き続きLambdaについて、関数スケーリングとローカルでの実行について紹介します 関数スケー ...

[WordPressのSEO対策]PageSpeed Insightsのスコアを上げる方法

はじめに WordPressでプログを公開し始めて、もう半年以上も経ちますが、SEO対策はほとんどやっていませんでした。 さすがに少しぐらいはSEO対策をやろうと思い、エンジニアリングでできそうなとこ ...

フォロー

blog-page_side_responsive

2018年7月
日 月 火 水 木 金 土
1234567
891011121314
15161718192021
22232425262728
293031  

アプリ情報

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