Apache는 로컬 네트워크의 CentOS에서 시작되지 않습니다.

Apache는 로컬 네트워크의 CentOS에서 시작되지 않습니다.

CentOS 7 서버에 httpd를 설치했지만 systemctl start httpd.service실패했습니다.

httpdCentOS 7에서 올바르게 부팅 하려면 어떤 특정 명령 순서를 입력해야 합니까?


에러 메시지

하단의 전체 결과에서 추출된 정확한 오류 메시지는 다음과 같습니다.

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain.   
Set the 'ServerName' directive globally to suppress this message  

또한 @DopeGhoti가 제안한 대로 로그 내용은 다음과 같습니다.

[root@localhost ~]# vi /var/log/httpd/error_log
(13)Permission denied: AH00091: httpd: could not open error log file /var/www/mytestdeployment/error.log.
AH00015: Unable to open logs
(13)Permission denied: AH00091: httpd: could not open error log file /var/www/mytestdeployment/error.log.
AH00015: Unable to open logs
(13)Permission denied: AH00091: httpd: could not open error log file /var/www/mytestdeployment/error.log.


설치하는 방법 httpd:

1.) 아파치를 설치합니다:

sudo yum -y install httpd

2.) 재부팅 시 자동으로 다시 시작되도록 Apache를 CentOS 서비스로 활성화합니다.

sudo systemctl enable httpd.service

3.) 방화벽 구성

sudo firewall-cmd --zone=public --add-service=http
sudo firewall-cmd --list-all
sudo firewall-cmd --zone=public --permanent --add-service=http  

4.) 서버 이름을 지정하십시오.

vi /etc/httpd/conf/httpd.conf
//Uncomment the ServerName line and give it the IP of the machine:  
ServerName 192.168.1.5:80


에러 메시지:

httpd위의 명령을 사용하여 설치한 후 httpd다음과 같이 시작할 수 없습니다.

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


[root@localhost ~]# systemctl status httpd.service -l
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2017-06-06 11:31:32 PDT; 15min ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 32268 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
  Process: 32267 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 32267 (code=exited, status=1/FAILURE)

Jun 06 11:31:32 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Jun 06 11:31:32 localhost.localdomain httpd[32267]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Jun 06 11:31:32 localhost.localdomain systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Jun 06 11:31:32 localhost.localdomain kill[32268]: kill: cannot find process ""
Jun 06 11:31:32 localhost.localdomain systemd[1]: httpd.service: control process exited, code=exited status=1
Jun 06 11:31:32 localhost.localdomain systemd[1]: Failed to start The Apache HTTP Server.
Jun 06 11:31:32 localhost.localdomain systemd[1]: Unit httpd.service entered failed state.
Jun 06 11:31:32 localhost.localdomain systemd[1]: httpd.service failed.
[root@localhost ~]# systemctl status httpd.service -l

[root@localhost ~]# vi /var/log/httpd/error_log
(13)Permission denied: AH00091: httpd: could not open error log file /var/www/mytestdeployment/error.log.
AH00015: Unable to open logs
(13)Permission denied: AH00091: httpd: could not open error log file /var/www/mytestdeployment/error.log.
AH00015: Unable to open logs
(13)Permission denied: AH00091: httpd: could not open error log file /var/www/mytestdeployment/error.log.
AH00015: Unable to open logs
(13)Permission denied: AH00091: httpd: could not open error log file /var/www/mytestdeployment/error.log.
AH00015: Unable to open logs
(13)Permission denied: AH00091: httpd: could not open error log file /var/www/mytestdeployment/error.log.
AH00015: Unable to open logs
~
"/var/log/httpd/error_log" 10L, 675C


@JeffSchaller의 제안

setenforce 0@JeffSchaller가 SELinux를 고려할 것을 제안한 후 루트로 입력하면 다음과 같은 결과가 발생한다는 것을 발견했습니다 .

[root@localhost ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

[root@localhost ~]# setenforce 0

[root@localhost ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

[root@localhost ~]# systemctl start httpd.service -l
[root@localhost ~]# systemctl status httpd.service -l
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2017-06-06 12:28:38 PDT; 22s ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 32577 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
 Main PID: 32690 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─32690 /usr/sbin/httpd -DFOREGROUND
           ├─32691 /usr/sbin/httpd -DFOREGROUND
           ├─32692 /usr/sbin/httpd -DFOREGROUND
           ├─32693 /usr/sbin/httpd -DFOREGROUND
           ├─32694 /usr/sbin/httpd -DFOREGROUND
           └─32695 /usr/sbin/httpd -DFOREGROUND

Jun 06 12:28:38 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Jun 06 12:28:38 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
[root@localhost ~]#

답변1

Apache를 시작할 수 없습니다. 오류 메시지

(13) 권한 거부됨: AH00091: httpd: 오류 로그 파일 /var/www/mytestdeployment/error.log를 열 수 없습니다.

AH00015: 로그를 열 수 없습니다.

SELinux는 시행 모드에 있으므로 Apache가 비표준 로그 디렉터리에 기록하는 것을 방지합니다. 유지하기 위해서는댄 월시가 울다그리고의료 코드효과적으로 이 디렉토리에 httpd_log_t 정책을 적용할 수 있습니다.

semanage fcontext -a -t httpd_log_t "/var/www/mytestdeployment(/.*)?"
restorecon -Rv /var/www/mytestdeployment

그리고 확인하세요:

ls -lZ /var/www/mytestdeployment

semanage 유틸리티가 없으면 다음 명령을 사용하여 설치할 수 있습니다.

yum install policycoreutils-python

답변2

오류 로그에는 다음이 표시됩니다.

(13)Permission denied: AH00091: httpd: could not open error log file /var/www/mytestdeployment/error.log.
AH00015: Unable to open logs

나에게 이것은 로그를 쓰려는 디렉토리가 /var/www/mytestdeployment존재하지 않는다는 것을 의미합니다.

실행 sudo mkdir -p /var/www/mytestdeployment하고 서비스를 다시 시작해 보십시오.

디렉터리가 이미 존재하는 경우 해당 권한 집합으로 인해 디렉터리의 권한을 확인하여 Apache가 해당 디렉터리에 로그를 쓸 수 있는지 확인하세요.

하지만 로그를 기록하도록 구성을 변경하는 것이 좋습니다 /var/log/httpd/.

답변3

이전 스크린샷에서 볼 수 있듯이 selinux를 비활성화하면 모든 것이 원활하게 작동합니다. 따라서 생성하는 모든 새 파일에 올바른 selinux 컨텍스트가 있는지 확인하십시오.

관련 정보