【随時更新】Amazonタイムセール情報

ネットワーク起動後にhttpdやpostfixをサービス起動させる設定(Systemd)

当サイトには広告を含みます。

当サイトでは、広告掲載ポリシーに沿って広告を掲載しています。

"オススメ" として紹介している商品やサービスは、個人的にそう思えたものだけです。

共感、興味をもっていただけるものがあればご利用ください。

httpdやpostfix等で、OS起動時のサービス自動起動が失敗することがあります。考えられる原因として、ネットワーク起動完了前のタイミングで該当のサービス起動されたというケースが挙げられます。

本記事は、Systemdにおいてネットワーク起動後にサービス起動させる設定についてまとめたものです。対象は主にRHEL7、CentOS7以降です。

詳細な仕様については、こちらの記事にまとめてあります。

目次

基本

起動失敗時のエラー例

httpd

httpd.confにて特定IPアドレスのみをListenで指定した環境において、OS起動時等、そのIPアドレスが使用可能になる前にhttpdサービスを起動し始めた場合、以下のようなエラーで起動失敗します。

Cannot assign requested address: AH00072: make_sock: could not bind to address x.x.x.x:443

postfix

main.cfにて特定IPアドレスのみをinet_interfacesで指定した環境においても、OS起動時等、そのIPアドレスが使用可能になる前にpostfixサービスを起動し始めた場合、以下のようなエラーで起動失敗します。

fatal: parameter inet_interfaces: no local interface found for x.x.x.x

確実にネットワーク起動後にサービス起動させる設定(network-online.target)

元のユニットファイルを直接編集しても良いですが、保守性を考慮し、以下のようにドロップインスニペット (drop-in file、別の設定ファイル) を利用します。ユニットファイルのカスタマイズの全般的なことについては、以下の記事にまとめてあります。

あわせて読みたい
Systemdのユニットファイルのカスタマイズ Systemdは、RHEL7、CentOS7以降における基本的なサービス管理機能 (等を含むシステム管理デーモンやツールの一式) です。従来はUpstart、SysVinitがありました。 本記事...

例としてhttpdの場合の手順を記載しますが、他のサービスでも同様です。

# systemctl edit httpd にて、以下を記載します。

[Unit]
After=network-online.target
Wants=network-online.target

エディタはデフォルトでvimでなくnanoが起動します(参考1参考2)。
nanoでは、上記を記載後、Ctrl+”S”(上書き保存)→Ctrl+”X”(閉じる)で保存と終了ができます。もしくは、Ctrl+”X”(閉じる)→保存するか聞かれたら”Y”(はい)→ファイル名の確認でEnterでも同様です。

# systemctl edit httpdにて設定変更した際は、# systemctl daemon-reloadを実行しなくても自動的にsystemdが再読み込みしてくれるようです。
(ユニットファイルを手動変更した場合には、systemdに再読み込みさせるため# systemctl daemon-reloadが必要)

この設定により、httpdはネットワーク疎通できるようになってからサービス起動するようになります。

詳細

After=network.target ≠ ネットワーク疎通可

サービスのユニットファイルにAfter=network.targetが記載されていても、それは「ネットワーク疎通できるようになった後にそのサービスを起動する」ということを保証するものではありません。

詳細な仕様については、こちらの記事にまとめてあります。

まとめ

本記事は、Systemdにおいてネットワーク起動後にサービス起動させる設定についてまとめてみました。

日ごろのお買い物等にご利用いただけると当ブログ継続の励みになります

出張先、旅行先のホテル予約はお早めに

シェア=ありがたみ
  • URLをコピーしました!
目次