Apache 오류“서버의 정규화 된 도메인 이름을 안정적으로 확인할 수 없습니다”


431

명령을 사용하여 Apache 서버를 다시 시작하면

sudo /etc/init.d/apache2 restart

다음과 같은 오류가 발생합니다.

Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
... waiting apache2:
Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

서버가 127.0.0.1 대신 127.0.1.1을 사용하고 있습니까? 이 오류의 원인은 무엇입니까?

답변:


509

6 # 13.04 이상

이것은 친절한 경고 일 뿐이며 실제로 문제가되지는 않습니다 (뭔가 작동하지 않는 것처럼).

당신이 가면 :

/etc/apache2/apache2.conf

다음을 삽입하십시오.

ServerName localhost   

터미널에 입력하여 아파치를 다시 시작하십시오.

sudo systemctl reload apache2

통지가 사라집니다.

안에 이름이 있으면 /etc/hostname대신 그 이름을 사용할 수도 있습니다 localhost.


그리고 그것이 127.0.1.1안에 있다면 사용 합니다 /etc/hosts:

127.0.0.1 localhost
127.0.1.1 myhostname

선호하는 방법

Apache 문제 해결

이 오류가 발생하면 :

apache2: Could not determine the server's fully qualified domain name, 
using 127.0.0.1 for ServerName

그런 다음 명령 줄에서 "sudo nano"또는 바탕 화면에서 "gksudo gedit"와 같은 텍스트 편집기를 사용하여 새 파일을 만듭니다.

sudo nano /etc/apache2/conf.d/fqdn

또는

gksu "gedit /etc/apache2/conf.d/fqdn"

그런 다음 추가

ServerName localhost

파일에 저장하고 저장하십시오. 이 작업은 모두 다음과 같은 단일 명령으로 수행 할 수 있습니다.

 echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn

그러나 우분투 14.04에서는 :

 echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf
 sudo a2enconf fqdn

".conf"를 잊지 마십시오 (작동하지 않습니다).


2
이것은 Apache 문제 해결 에 대한 Ubuntu LAMP 설정 문서에 언급되어 있습니다. 그곳에서 그들은 함께 파일 /etc/apache2/conf.d/fqdn을 만드는 것이 좋습니다 ServerName localhost거기에
icc97

아주 좋은 대답-하지만 conf.d 디렉토리에 넣는 것이 좋습니다. :)
cwd

3
/etc/apache2/conf.d/후 존재하지 않는 내의 설치 lamp-server^14.04에
redanimalwar

@redanimalwar 13.10 이상은 아래 @Starx 의 답변을 참조하십시오.
Dan

3
마지막 단계 (14.04에서 sym-link 생성)의 sudo a2enconf fqdn경우 기술적으로 동일해야하지만 권장 합니다.
누 알라

176

13.10 이상

기본적으로 13.10부터 사용할 수있는 Apache 2.4부터 conf.d디렉토리에 구성 파일을 추가하는 방법을 사용할 수 없습니다 .

Apache는 더 이상 conf.d디렉토리를 사용하지 않습니다 . 모든 구성 파일은 /etc/apache2/conf-available디렉토리 에 저장되며 이제 모든 구성 파일의 .conf확장자 가 있어야합니다 .

Apache 2.4에서이 메시지를 해결하려면 conf-available 디렉토리 내에 구성 파일을 작성해야합니다. 예를 들면 servername.conf.

sudo vi /etc/apache2/conf-available/servername.conf

이 안에는 한 줄만 추가하면됩니다

ServerName localhost

위의 두 명령을 다음과 함께 하나로 결합 할 수 있습니다.

echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf

요구 사항에 따라 도메인 이름이나 다른 이름을 사용하려면 원하는 이름으로 바꾸십시오 localhost. 다음으로이 구성을 활성화해야합니다. 이를 위해 다음 명령을 실행해야합니다.

sudo a2enconf servername

a2enconfApaches 2.4에서 구성 파일을 활성화하는 명령입니다. 또한 servername위의 명령에서 구성 파일 이름을 사용합니다 servername.conf. 구성 파일이 있었다면 ngenericserver.conf당신은 쓸 것이다 sudo a2enconf ngenericserver.

이 서버를 다시로드하면 위의 메시지가 더 이상 버그가되지 않습니다.

sudo service apache2 reload

또는

sudo apache2ctl graceful

이제이 메시지가 다시 표시되지 않고 문제가 해결되었음을 알 수 있습니다.


3
아파치가 어떤 구성 파일에 문제가 있는지 말하는 방법을 아는 사람이 있습니까? 개발자가 왜 이것을 오류 메시지에 넣지 않는지 모르겠습니다. 많은 코드가 필요하지 않습니다!
John Y

이 서버에 인터넷 fqdm이있는 경우이 서버를 설치해야합니까? 즉, localhost 대신 myhost.org를 종속시켜야합니까?
CPBL

1
@CPBL 모든 사이트의 기본 서버 이름입니다. 하나의 사이트 만 있다면, 그게 전부입니다. 서버에 여러 사이트가있는 경우 각 가상 호스트 구성에서 각 사이트에 대한 servername 지시문도 추가해야합니다.
Dan

1
14.04 LTS에서 작동합니다.
Parto

1
인용 된 링크가 죽은 것 같습니다. 수정하십시오.
프레드릭 가우스

28

Apache2는 또한 아파치 구성 파일에 하드 코딩되지 않고 올바르게 구성된 시스템 호스트 이름에서 FQDN을 가져올 수 있습니다. 호스트 이름이 변경되면 하드 코딩이 혼동 될 수도 있습니다. 실제로 아파치 구성 파일에 ServerName지시문이 필요하지 않습니다 httpd.conf.

다음을 넣습니다 /etc/hosts.

# IPv4 and IPv6 localhost aliases
127.0.0.1 hostname.domainname.com  hostname  localhost
::1       hostname.domainname.com  hostname  localhost

hostname.domainname.com컴퓨터의 FQDN은 어디에 있습니까 ?

/etc/hostname/또는 호스트로 올바르게 구성된 호스트 이름과 함께 hostnamectl시스템의 다른 서비스가 제대로 실행되도록 도와줍니다 (예 : This is hostname.domainname.com대신 로그인 프롬프트가 This is hostname.unknown_domain표시됨).


5
"올바로 구성된 시스템 호스트 이름"의 경우 +1 서버를 올바르게 구성하고 싶었습니다. 이것은 또한 로그에 내 오류 수정[warn] RSA server certificate CommonName (CN) <fqdn> does NOT match server name!?
transistor1

이것이 Apache 2.2.22에서 작동한다고 생각하십니까? 나는 아직도 "서버 이름에 대한 127.0.1.1을 사용하여 안정적으로 서버의 정규화 된 도메인 이름을 확인할 수 없습니다"점점 오전
데이비드 Winiecki

되어 hostname localhost있어야하는데 myubuntuservername localhost? 아니면 문자열 리터럴 hostname localhost? 당신은 당신의 대답에 명확하지 않았다
Jonathan

2
이것이 정답입니다. 127.0.0.1그래도 FQDN을 고정 IP 주소에 연결하지 말아야 할 것 같습니다 .
Skippy le Grand Gourou

1
이것은 Ubuntu 18.04에서 나에게 가장 적합한 대답이었습니다. 정규화 된 도메인 이름이 여기 또는 어디에서나 동일한 용어가 아니지만 문서가 일관성이 있기를 바랍니다. 정규화 된 도메인 이름이 google.com이고 서버 이름이 google 인 경우 / etc / hosts의 항목은 127.0.0.1입니다. google.com google 로컬 호스트 행과 광고 로컬 호스트를이 행의 끝으로 바꿀 수 있습니다 소원. 나는 이것을 사용했다 : digitalocean.com/community/tutorials/…
NZ Dev

26
  • 터미널을 엽니 다
  • 열려있는 /etc/apache2/httpd.conf파일을 :

    sudo editor /etc/apache2/httpd.conf # [1]
    
  • 기본적으로 비어 있습니다. 다음 줄을 추가하면됩니다.

    ServerName localhost
    
  • 파일을 저장하고 종료하십시오

  • 서버를 다시 시작하십시오

    sudo service apache2 restart
    

[1] 기본 편집기 실행, 참조 sudo update-alternatives --config editor


마지막 명령을 실행 한 후 다음 오류가 발생합니다 ** 웹 서버 apache2 / usr / sbin / apache2ctl 다시 시작 : 87 : ulimit : 오류 설정 제한 (작업이 허용되지 않음) / usr / sbin / apache2ctl : 87 : ulimit : 오류 설정 제한 (작업이 없습니다. allowed) (13) 권한이 거부 됨 : make_sock : 0.0.0.0:80 주소에 바인딩 할 수 없습니다. 사용할 수있는 청취 소켓이 없습니다. 종료 로그를 열 수 없습니다. 'start'작업이 실패했습니다. Apache 오류 로그에 자세한 정보가있을 수 있습니다. [실패] ** @ green7
Deepu

'sudo는 서비스 아파치를 다시 시작'시도
waterloo2005

20

새로운 버전의 apache2에서는 다음과 같은 명령을 따릅니다.

sudo nano /etc/apache2/apache2.conf

파일의 다음 줄 끝을 추가하십시오.

ServerName localhost

그런 다음 apache2를 다시 시작하십시오.

sudo service apache2 restart

끝났다.


6

또는 파일 /etc/conf.d을 수정 하기 위해 새 파일을 만드는 것이 조금 더 좋습니다 .apache2.confhttpd.conf

구성 변경 사항을 배포 패키지와 분리하여 유지하는 것이 개인 취향입니다. 따라서 업데이트는 덜 복잡합니다.

파일을 만들면 다음 /etc/apache2/conf.d/AAserverName내용 만 포함됩니다.

ServerName myhost.mycomain.tld

다른 제안도 확실히 작동합니다.



1

더하다 ServerName localhost

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

오류가 아닙니다. 친구 알림 일뿐입니다.


1

ServerName localhost가상 호스트 섹션 외부에서 구성 파일을 지정하는 것이이 방법입니다.

다른 답변은 수정해야한다고 제안합니다 /etc/apache2/httpd.conf. 아파치가 apt에서 업그레이드되면이 파일을 덮어 씁니다. 덮어 쓰지 않으려는 Apache 구성의 경우 새 파일을 작성해야합니다. 이 구성을 변경하는 데비안 방식은 다음과 같습니다.

# create the configuration file in the "available" section
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf
# enable it by creating a symlink to it from the "enabled" section
sudo a2enconf servername
# restart the server
sudo service apache2 restart

이것은 기본적으로 Stark의 답변과 동일하지만 스크립트 양식을 쉽게 복사하여 붙여 넣을 수 있습니다. 나는 이것을 중복으로 표시된 질문에 원래 게시했습니다 : https://askubuntu.com/a/432408


1

우분투 16.04 :

다음 명령을 사용 ServerName localhost하여 파일에 추가하십시오 httpd.conf.

sudo vi  /etc/apache2/httpd.conf

그런 다음 Include httpd.conf이 파일의 끝에이 줄 을 포함

sudo vi /etc/apache2/apache2.conf

구문 오류를 다시 확인하십시오.

sudo apache2ctl configtest

당신은 지금 얻을

Syntax OK

이제 구성을 다시로드하여 서버를 정상적으로 다시 시작할 수 있습니다

sudo service apache2 reload

또는 프로세스를 종료하고 다시 시작하십시오

sudo service apache2 restart

0

우분투 11.10에서 디스크가 가득 차서 정지 부팅과 함께이 메시지가 나타났습니다. 로그 파일 중 하나가 도용되었습니다 . 아마도 Apache에는 실제로 문제가 없었지만,이 메시지는 부팅이 중단되기 전의 마지막 단서였습니다.

문제를 해결하기 위해 복구 모드로 부팅하고 로그 파일을 제거해야했습니다.


0

bash를 사용하고 최소한의 종속성을 원한다면 (그리고 Docker를 사용하는 경우 진입 점 스크립트를 위해 하나의 라이너를 원할 경우 )이 두 옵션이 작동합니다.

localhost를 원하는 경우 :

echo "ServerName localhost" >> /etc/apache2/apache2.conf

기존 호스트 이름을 원하는 경우 :

echo "ServerName $(cat /etc/hostname)" >> /etc/apache2/apache2.conf

이것은 bash 리디렉션 연산자 를 사용 하여 파일 끝에 문자열을 추가합니다. Echo가 자동으로 개행을 삽입하므로 모든 설정이 완료됩니다.


0

다음 명령을 실행하십시오.

apachectl -t -D DUMP_INCLUDES

httpd.conf구성 파일의 경로를 결정한 다음 해당 파일을 편집하고 ServerName옵션 값을 지정하는 행을 주석 해제 / 수정하십시오 ( 예 :

ServerName localhost

웹 서버의 경우 등록 된 DNS 이름 (예 :)을 사용하십시오 example.com.

호스트에 등록 된 DNS 이름이 없으면 여기에 IP 주소를 입력하십시오.


0

우분투 16.04 :

다음 명령을 사용 ServerName localhost하여 파일에 추가하십시오 httpd.conf.

sudo vi  /etc/apache2/httpd.conf

그런 다음 Include httpd.conf이 파일의 끝에이 줄 을 포함

sudo vi /etc/apache2/apache2.conf

구문 오류를 다시 확인하십시오.

sudo apache2ctl configtest

당신은 지금 얻을

Syntax OK

이제 구성 sudo 서비스를 다시로드하여 서버를 정상적으로 다시 시작할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.