[apache] 아파치 가상 호스트 구성을 디버깅하는 방법?

다시 한 번 아파치 가상 호스트 구성에 문제가 있습니다. (기본 구성은 특정 구성 대신 사용됩니다).

문제는 실제로 잘못된 구성이 아니라 해결 방법입니다.

누구든지 이런 종류의 문제를 빨리 해결할 수있는 좋은 조언이 있습니까?

더 많은 정보.

기본 conf 파일은 다음과 같습니다.

NameVirtualHost *
<VirtualHost *>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

적용되지 않는 가상 호스트 구성은 다음과 같습니다.

<VirtualHost *:*>

ProxyPreserveHost On
ProxyPass / http://ip.ip.ip.ip:8088/
ProxyPassReverse / http://ip.ip.ip.ip:8088/
ServerName wiki.mydomain.com

</VirtualHost>



답변

구문 검사

구문 오류에 대한 구성 파일을 확인하려면 다음을 수행하십시오.

# Red Hat-based (Fedora, CentOS) and OSX
httpd -t

# Debian-based (Ubuntu)
apache2ctl -t

# MacOS
apachectl -t

가상 호스트 나열

모든 가상 호스트 및 해당 위치를 나열하려면

# Red Hat-based (Fedora, CentOS) and OSX
httpd -S

# Debian-based (Ubuntu)
apache2ctl -S

# MacOS
apachectl -S


답변

도움이 될 수 있다고 생각되는 명령은 다음과 같습니다.

apachectl -t -D DUMP_VHOSTS

모든 가상 호스트 목록을 얻을 수 있습니다. 어떤 가상 호스트가 기본 호스트인지 알고 구문이 올바른지 확인하십시오 (yojimbo87이 제안한 apachectl configtest와 동일).

또한 각 호스트가 선언 된 위치를 알 수 있습니다. 구성 파일이 엉망인 경우 편리 할 수 ​​있습니다. 😉


답변

가상 호스트 구성을 디버그하려는 경우 Apache -S 명령 행 스위치가 유용 할 수 있습니다. 즉, 다음 명령을 입력하십시오.

httpd -S

이 명령은 Apache가 구성 파일을 구문 분석하는 방법에 대한 설명을 덤프합니다. IP 주소와 서버 이름을주의 깊게 검사하면 구성 실수를 발견하는 데 도움이 될 수 있습니다. ( 다른 명령 행 옵션 에 대해서는 httpd 프로그램 문서를 참조하십시오 ).


답변

먼저 구성 파일에서 구문 오류가 있는지 확인한 apachectl configtest다음 아파치 오류 로그 를 살펴보십시오 .


답변

apachectl -S명령을 사용할 때 표시되지 않은 새로운 VirtualHost 구성 파일이 있습니다. 머리를 많이 긁은 후 파일에 접미사 “.conf”가 없음을 깨달았습니다. 해당 접미사로 파일 이름을 바꾸면 내 Vhost가 표시되고 작동하기 시작했습니다!


답변

최근에 VirtualHost에 문제가있었습니다. a2ensite호스트를 활성화하는 데 사용 되었지만 재시작을 실행하기 전에 (실패한 서버를 죽일 수 있음)

apache2ctl -S

어떤 가상 호스트에 무슨 일이 일어나고 있는지에 대한 정보를 제공합니다. 완벽하지는 않지만 도움이됩니다.


답변

내 실수를 발견하고 로그 파일 이름을 추가하지 않았습니다 : ErrorLog / var / log / apache2

그리고이 경로 : “/ usr / share / doc /”디렉토리 웹 사이트 소스를 포함하지 않았습니다.

이 두 가지를 바꾼 후에는 모두 효과가있었습니다. 흥미롭게도, 아파치는 오류를 발생시키지 않았으며, Mac OS Sierra에서 자동으로 웹 사이트를 열지 않았습니다.