CentOS7 nginx
2018.06.02
この記事は最終更新日から1年以上が経過しています。
どもです。
ひさびさにサーバーいじりをしていたら、CentOS7 から起動スクリプトまわりが変わっていて、すっかり戸惑ってしまいました。。
なんせ今まで慣れ親しんできたコマンドが効かない場面があるんですよね。ということで、今回はその辺の備忘録として、systemctl での nginx の扱い方をメモした形になります。自分がよく忘れるのでw
CentOS7 から systemd になりました
調べてみると、Fedora15 から一部のサービスが、そして CentOS7 からは systemd services で管理されるようになったとのこと。
この影響で、今まで久しく馴染んできたコマンド(service xxx start や chkconfig xxx on)では、実行や停止、自動起動の設定などができないサービスが出てきます(例えば dhcpd サービスなど)。
これらのスクリプトは /lib/systemd/system 配下に存在していて、systemd services のコマンド、つまり systemctl で制御する様になっています。
サービス一覧については、こちらが参考になりました。
ということで、これからは systemctl というコマンドを使っていく形になります。サービス系の conf のエラーなんかも、この systemctl を利用して確認するようですね。
nginx の conf エラーを表示する
さて、ここからが本題。自分がよく忘れるやつです。
nginx の場合だと、以下のようにすると conf エラーを表示できます。
$ sudo systemctl restart nginx.service || sudo systemctl status nginx.service -l
restart が失敗したときに || で status に繋いでいるので、コケた理由をそのまま確認できる、という流れですね。
nginx -t も合わせるとなお良し
ただ、いきなり再起動をかける前に nginx -t で設定ファイルのテストをしておくと、尚良しかと思います。
ということで、テストから再起動、失敗時のエラー表示までを一気にやってしまうのがこちら。
$ sudo sh -c 'nginx -t && systemctl restart nginx.service || systemctl status nginx.service -l'
やっていることを順番に並べるとこんな感じです。
sudo sh -c '...'… root 権限で実行nginx -t… コンフィグテスト&& systemctl restart nginx.service… テストが通ればサービス再起動(コンフィグの読み直し)|| systemctl status nginx.service -l… 失敗した場合にエラーログの表示
これをワンライナーで叩いておけば、設定をいじるたびにテスト → 反映 → ダメなら原因確認、という流れがサッと回せて楽になります。
ではではぁ。
またまたぁ。











