VirtualHost conf 파일을 추가한 후 Apache가 다시 시작되지 않습니다. 이유는 무엇입니까?

VirtualHost conf 파일을 추가한 후 Apache가 다시 시작되지 않습니다. 이유는 무엇입니까?

서버에서 CentOS 7하단에 include 파일을 추가한 후 입력하면 다음과 같은 오류가 발생합니다.sudo apachectl restarthttpd.conf

Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

이것을 입력하면 sudo systemctl status httpd.service -l결과는 다음과 같습니다.

httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Tue 2014-12-23 20:10:37 EST; 2min 15s ago
  Process: 2101 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 2099 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 2099 (code=exited, status=1/FAILURE)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"

Dec 23 20:10:37 ip-address httpd[2099]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Dec 23 20:10:37 ip-address systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 20:10:37 ip-address systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 20:10:37 ip-address systemd[1]: Unit httpd.service entered failed state.

apache포함 지시문을 주석 처리하면 재부팅할 수 있으며 포함 지시문의 주석 처리를 제거하면 오류가 다시 생성될 수 있습니다.apache포함된 파일의 내용을 올바르게 사용하려면 어떻게 해야 합니까 ?

httpd.conf오류를 유발하는 결론은 다음과 같습니다 IncludeOptional sites-enabled/*.conf. .conf폴더에 있는 유일한 파일은 다음 내용을 포함하는 sites-enabled입니다 .mydomain.com.conf

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
    ErrorLog /var/www/mydomain.com/error.log
    CustomLog /var/www/mydomain.com/requests.log combined
</VirtualHost>

위의 한 줄 include 지시문을 제외하면 httpd.conf사전 설치된 것과 동일 합니다. 나는 httpd이 오류가 발생하기 전에 이 작업을 sudo yum remove httpd mod_ssl수행했기 때문에 알고 있습니다. sudo yum install httpd mod_ssl전문은 파일 공유 사이트에서 보실 수 있습니다.httpd.conf이 링크를 클릭하세요.

명시적으로 따를 때 이 문제가 발생했습니다.이 튜토리얼의 단계.

포함 파일을 주석 처리하면 에 정의되어 있는 http/mydomain.com에 있는 정적 콘텐츠가 성공적으로 제공됩니다 . 문제는 위에 표시된 포함 파일의 지시문에서 발생한 것 같습니다. /var/www/htmlDocumentRoothttpd.confVirtualHost진단을 돕기 위해 아래 EDIT#3의 .conf세 가지 include 지시문에 포함된 모든 파일에 대한 링크를 포함했습니다.httpd.conf.

편집 #1

/etc/hostnamem32가 제안한 Define 변경을 시도했지만 mydomain.com여전히 apache재부팅되지 않았으며 systemctl status httpd.service결과는 다음과 같습니다.

[sudo_user_account@server-ip-address ~]$ sudo systemctl status httpd.service -l
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Tue 2014-12-23 14:25:35 EST; 20s ago
  Process: 31993 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 31991 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 31991 (code=exited, status=1/FAILURE)
   Status: "Total requests: 1; Current requests/sec: 0; Current traffic:   0 B/sec"

Dec 23 14:25:35 hostname systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 14:25:35 hostname systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 14:25:35 hostname systemd[1]: Unit httpd.service entered failed state.  

편집 #2

/etc/hosts나는 또한 아래와 같이 파일의 내용을 변경하라는 eyoung100의 제안을 시도했지만 여전히 위의 EDIT#1에 정의된 동일한 오류가 발생합니다.

편집 #3

DerekC의 요청에 따라 실행하여 sudo apachectl configtest다음을 얻었습니다.

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Syntax OK

또한 GarethTheRed가 제안한 대로 include 지시문을 확인했습니다.httpd.conf. 세 가지 include 지시문이 있습니다.httpd.conf. 각 지시문의 폴더에 있는 모든 파일과 함께 아래에 이 세 개의 파일을 나열했습니다. 이것들은 .conf무작위 입니다 httpd. 아직 아무것도 수정하지 않았습니다. .conf다음 링크를 클릭하면 파일 공유 사이트에서 각 파일을 볼 수 있습니다 .

Include conf.modules.d/*.conf디렉토리에서 다음 파일을 참조하십시오 conf.modules.d. 00-base.conf
00-dav.conf
00-lua.conf
00-mpm.conf
00-proxy.conf
00-ssl.conf
00-systemd.conf
01-cgi.conf

IncludeOptional conf.d/*.conf디렉토리에서 다음 파일을 참조하십시오 conf.d. 파일 자동 색인화
SSL 구성 파일
사용자 디렉터리 구성 파일
Welcome.conf
여기서는 생략한 README 파일도 있습니다.

또한 IncludeOptional sites-enabled/*.conf지침과 해당 내용은 위 OP에 자세히 설명되어 있습니다.

여기에 포함된 파일이 의 VirtualHost설정과 충돌 합니까 mydomain.com.conf?

편집 #4

mydomain.com.confgarethTheRed의 제안에 따라 해당 디렉토리로 이동 하고 conf.d재부팅할 수 있을 때까지 한 줄씩 주석을 달기 시작했습니다. 그런 다음 얼마나 많은 줄을 유지하고 재부팅할 수 있는지 알아보기 위해 줄의 주석 처리를 제거하기 시작했습니다. 재부팅할 수 있었지만 계속해서 동일한 경고가 표시됩니다. mydomain.com.confhttpdhttpdhttpdsystemctl status httpd.service -l

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message

VirtualHost위의 경고가 계속 생성되더라도 시작을 허용하는 구문은 다음과 같습니다 httpd.

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
</VirtualHost>  

다음 줄을 생략해야 했다는 점에 유의하세요. 해당 줄이 있으면 http 시작에 대한 완전한 실패로 경고가 확대됩니다.

# ErrorLog /var/www/mydomain.com/error.log
# CustomLog /var/www/mydomain.com/requests.log combined

또한 실행 sudo journalctl -xelu httpd해 보니 터미널이 다음을 여러 번 반복하여 응답했습니다.

-- 
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:43 server-ip-address systemd[1]: Stopped The Apache HTTP Server.
-- Subject: Unit httpd.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:48 server-ip-address systemd[1]: Starting The Apache HTTP Server...
-- Subject: Unit httpd.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has begun starting up.
Dec 24 17:48:48 server-ip-address httpd[10364]: AH00558: httpd: Could not reliably d
Dec 24 17:48:48 server-ip-address systemd[1]: Started The Apache HTTP Server.
-- Subject: Unit httpd.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has finished starting up.
-- 
-- The start-up result is done.
lines 887-909/909 (END)

참고: eyoung100의 호스트 파일을 사용하든 m32의 호스트 파일을 사용하든 위의 결과는 동일합니다. 이 질문에 대답하려면 로그 파일을 만들고 서버 이름 경고를 피할 수 있어야 한다고 생각했습니다. 그렇지 않으면 httpd를 구성하는 후속 단계에서 오류가 오래 지속되는 것이 걱정됩니다.

답변1

apache웹 사이트의 루트 디렉터리에 쓸 수 없기 때문에 로그에서 오류가 발생하고 있습니다 . 파일 권한을 수정하더라도 여전히 SELinux에 의해 차단됩니다. apache로그만 기록 할 /var/log/httpd수 있습니다. 가장 쉬운 해결책은 웹사이트를 이 디렉터리에 로그인하도록 변경하는 것입니다. 웹사이트 이름이 포함된 파일 이름을 사용할 수도 있습니다. 다른 로그와 구별되도록 합니다.

ErrorLog /var/log/httpd/mydomain_com_error.log
CustomLog /var/log/httpd/mydomain_com_requests.log combined

서버의 호스트 이름을 설정하고 AH00558 경고를 제거하려면 다음을 사용하면 됩니다.

hostnamectl set-hostname --static <FQDN of your machine>

예를 들어

hostnamectl set-hostname --static mydomain.com

답변2

내 컴퓨터의 호스트 이름을 설정하는 것을 잊었을 때 이 오류가 발생했습니다. 이 일을 해 보셨나요?
다음 명령을 실행하세요:

echo 'example.com' >> /etc/hostname  

확인hostname

편집하다:
최신 OP를 사용하면 호스트 파일이 올바르게 설정되지 않은 것 같습니다. 이것이 내 모습입니다.

127.0.0.1 localhost.localdomain localhost
# Auto-generated hostname. Please do not remove this comment.
166.66.666.66 m32.me m32
::1     ip6-localhost ip6-loopback

이렇게 간단하게 설정해 보세요. 물론 모든 정보를 자신의 정보로 바꾸십시오.
166.66.666.66자신의 IP
m32.me and m32와 도메인, TLD가 없는 도메인을 사용하세요.

관련 정보