1. ホーム
  2. リナックス

[CentOS] httpdモジュール httpd.serviceのジョブがエラーcで制御プロセスが終了したため、失敗しました。

2022-02-28 04:47:31
<パス

プロジェクトのシナリオです。

Linuxのエラー報告用httpdモジュールの学習。


質問の説明

httpdサービスアプリケーションのメイン設定ファイルを変更した後、httpdサービスを再起動すると、以下のエラーが報告されます。

[root@localhost ~]# systemctl restart httpd
Job for httpd.service failed because the control process exited with error code. 
See "systemctl status httpd.service" and "journalctl -xe" for details.



原因分析。

実際には、最もオープンです設定ファイルは、ファイルがエラーを報告した後に変更されるため、間違って書かれていると考えるべきである。私は問題を解決するためのステップバイステップのアプローチを文書化したいと思います。


解決手順

エラーメッセージの検索 httpd.service のジョブは、制御プロセスがエラーコードで終了したため、失敗しました。
  1. まず、ポート80番を85番、95番、8088番などに変更するのは無効です
  2. (私は読むことができないので、これは、動作しませんでした)Apacheのhttpd - vhosts.confファイルを見て、2回、httpd - vhosts.conf一度、httpd.conf、#Listen 80の追加で仮想マシンを聞くことが見つかりました
  3. systemctl status httpd.service または journalctl -xe と入力し、エラーメッセージを探します。
[root@localhost ~]# systemctl status httpd.service
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Wed 2020-11-04 23:46:48 CST; 10s ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 3319 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 3609 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 3609 (code=exited, status=1/FAILURE)

Nov 04 23:46:48 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Nov 04 23:46:48 localhost.localdomain httpd[3609]: AH00526: Syntax error on line 119 of /etc/httpd/conf/httpd.conf:
Nov 04 23:46:48 localhost.localdomain httpd[3609]: DocumentRoot '/home/wwwroot' is not a directory, or is not readable
Nov 04 23:46:48 localhost.localdomain systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Nov 04 23:46:48 localhost.localdomain systemd[1]: Failed to start The Apache HTTP Server.
Nov 04 23:46:48 localhost.localdomain systemd[1]: Unit httpd.service entered failed state.
Nov 04 23:46:48 localhost.localdomain systemd[1]: httpd.service failed.


  1. 次のエラーメッセージを問い合わせる
DocumentRoot '/home/wwwroot' is not a directory, or is not readable


SELinuxのせいかと思いきや、SELinuxをシャットダウンしてみると

  1. ようやく、最初のステップでDirectoryディレクトリのhttpd設定ファイルを修正するのが間違っている(余計なoを書く)ことがわかり、confエラーの内容は以下のようになります。
#
# DocumentRoot: The directory out of which you will serve your
# By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/home/wwworoot"

#DocumentRoot
# Relax access to content within /var/www.
#
<Directory "/home/wwwrooot">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

# Further relax access to the default document root:
<Directory "/home/wwwrooot">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:


Directoryディレクトリの変更が正しく動作する

Reference.
https://blog.csdn.net/weixin_30709635/article/details/99143232
https://blog.csdn.net/wangxiaoming099/article/details/23165575
https://blog.csdn.net/zhuoyr/article/details/8393854
https://tpyyes.com/a/linux/616.html (the last sentence of this article told me to get it right, then I looked at my error message)