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


関連記事

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

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

Firestoreのルール設定とdumpやrestoreが簡単に行えるfsrpl

1 はじめに2 Firestoreのルール設定2.1 全て許可2.2 本番環境でのルール設定例3 fsrpl3.1 fsrplとは3.2 インストール3.3 秘密鍵3.4 copy3.5 開発環境から ...

Docker上でTensorFlowのチュートリアルをやってみた

1 はじめに1.1 環境2 TensorFlowのコンテナを起動する3 チュートリアルをやってみた3.1 ソースコード4 さいごに はじめに こんにちは、最近個人的な勉強でPython、ディープラーニ ...

aws

MyCoachの本番環境をAWS上に構築する 〜EC2編〜

1 はじめに1.1 関連記事2 MyCoachで利用しているインスタンス3 設定する項目4 キーペアの作成5 セキュリティグループの作成6 インスタンスの作成6.1 Webサーバのインスタンスを作成6 ...

同じレコードがないときだけインサートする!

はじめに あるアイテムを持っていない人だけ、別のアイテムをあげたい! もしくはその逆で、あるアイテムを持っている人に追加でアイテムをあげたい! そういうことってないでしょうか? 先日、僕がそのような状 ...

フォロー

blog-page_side_responsive

2018年7月
1234567
891011121314
15161718192021
22232425262728
293031  

アプリ情報

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