"호스트 이름을 확인할 수 없습니다" - 재부팅하지 않고 호스트 이름을 깔끔하게 변경하는 방법

"호스트 이름을 확인할 수 없습니다" - 재부팅하지 않고 호스트 이름을 깔끔하게 변경하는 방법

직장에서는 Amazon EC2 인스턴스에 호스팅된 Ubuntu 서버를 사용하여 작은 웹 사이트를 개발하고 있습니다. 우리는 두 개의 웹 서버를 가지고 있습니다. 하나는 "라이브"이고 다른 하나는 "테스트"입니다. 그러나 "테스트" 서버에서 새로운 기능이나 버그 수정을 실행할 때 AWS API를 사용하여 IP를 교환하는 스크립트를 실행합니다. 두 서버가 제공하는 도메인을 교환하기 위해 두 상자에 할당된 주소입니다.

따라서 언제든지 이러한 서버 중 하나는 "라이브" 서버 또는 "테스트" 서버가 될 수 있지만 영구적인 상태는 아닙니다.

두 서버에 SSH로 연결할 때 혼동을 피하기 위해, 특히 나 같은 어리석은 사람이 오랫동안 SSH 세션을 열고 어느 서버에 있는지 혼동하는 경우 두 서버의 호스트 이름을 변경하여 프롬프트가 표시되도록 하고 싶습니다. 터미널 창의 제목은 읽혀지거나 ubuntu@ourwebsiteLIVE서버 ubuntu@ourwebsiteTESTING가 현재 활성 상태인지 테스트 중인지에 따라 달라집니다.

나는 hostname ourwebsiteLIVEIP 교환 스크립트에서 etc를 실행하여 이를 수행할 수 있다는 것을 알고 있으며 이미 이를 달성했습니다. 작동하지만 이제 sudo서버에서 무엇이든 인쇄할 때마다 다음과 같이 인쇄됩니다.

sudo: ourwebsiteLIVE 호스트를 확인할 수 없습니다.

이것은 아무것도 깨뜨리지 않는 것 같지만 매우 성가시다. 파이프에서 출력된 명령을 연결하려고 하면 나중에 문제가 발생할 수도 있다고 생각하므로 이는 기술적으로 단순한 외관상의 문제 그 이상이라고 생각합니다.

내가 본 "호스트 이름을 확인할 수 없습니다" 메시지에 대한 모든 해결 방법에는 수정 /etc/hosts또는 유사한 파일이 포함됩니다.그런 다음 서버를 다시 시작하십시오.. 많은 사용 사례에서 이것이 괜찮다는 것을 알 수 있지만 우리는 정기적으로 호스트 이름을 프로그래밍 방식으로 수정하므로 스왑 스크립트를 실행할 때마다 재부팅을 기다릴 필요가 없으므로 이상적이지 않습니다.

재부팅하지 않고 오류 메시지를 사라지게 하는 방법이 있습니까?

답변1

나는 사용하는 것이 좋습니다nss-myhostname. 항상 현재 호스트 이름을 확인하는 nss 플러그인이므로 수정이 필요하지 않습니다 /etc/hosts.

설명하신 문제는 해결자 문제일 뿐이므로 올바른 DNS 설정으로 문제를 해결할 수 있습니다. 즉, ourwebsiteLIVE.$DOMAIN컴퓨터의 IP만 해결하면 됩니다.

답변2

이 질문을 다시 생생하게 전달하고 있다는 것을 알고 있지만 현재(적어도 Ubuntu Server 16.04에서는) 다음을 수행하여 재부팅하지 않고도 호스트 이름을 업데이트할 수 있습니다.

새 호스트 이름으로 /etc/hosts 및 /etc/hostname을 편집하여 시작하십시오.

명령 실행

systemctl restart systemd-logind.service
hostnamectl --static --transient --pretty set-hostname YOURHOSTNAME

이제 재부팅하지 않고도 새 호스트 이름이 활성화되며 재부팅 후에도 그대로 유지됩니다.

답변3

빠른 수정은 다시 시작하지 않고 hostname ourwebsiteLIVE편집하는 것이며 /etc/hosts오류는 사라질 것입니다.

답변4

에헴... 서버의 호스트 이름을 동적으로 변경하면 많은 시스템 데몬이 오작동할 수 있으며 일반적으로 이는 즉시 명백하지 않습니다. 운영 체제는 시스템이 설치될 때 호스트 이름이 설정되고 변경되지 않을 것으로 예상합니다. hostname프로세스가 시작될 때 거의 항상 한 번만 확인됩니다. 그러나 버전을 동적으로 전환하는 다른 방법도 있습니다.

가장 쉬운 방법은 다음을 사용하여 간접 참조 수준을 설정하는 것입니다.심볼릭 링크...

이를 위해 두 개의 서버가 필요하지 않습니다. 대신 다음과 같이 사이트의 "기본" 디렉터리(예: 등)와 동일한 디렉터리 수준에서 사이트의 각 버전 /var/www에 대한 디렉터리를 만듭니다.hosted/server/html

.../
.../v1.0
.../v1.1a
.../v1.1b
   :

"LIVE"와 "TEST"가 번갈아 표시 v1.1a됩니다 .v1.1b

간접적인 내용이 나옵니다...

심볼릭 링크 생성은 매우 빠르므로 부하가 적은 사이트와 버전을 교환하려는 경우 큰 중단 없이 심볼릭 링크를 다시 생성할 수 있습니다.

제가 기반으로 하는 호스팅 서비스에서는 웹사이트 "홈" 디렉터리가 다음과 같이 "html"이어야 합니다.

/home/group/subgroup/myuserid/html

따라서 html서비스가 제공하는 디렉토리의 이름을 버전 디렉토리로 바꾸고 v1.1a이라는 심볼릭 링크를 만듭니다 html.

심볼릭 링크를 설정한 후 디렉토리 목록은 다음과 같습니다.

.../
.../TEST -> v1.1b
.../html -> v1.1a
.../v1.0
.../v1.1a
.../v1.1b

디렉토리의 웹 사이트 파일을 변경한 후 .../v1.1b스크립트를 실행하여 삭제하고(Ubuntu에는 더 안전한 unlink명령이 있음) 아래와 같이 "html"과 "TEST"를 교체하여 심볼릭 링크를 다시 생성합니다.

.../
.../TEST -> v1.1a
.../html -> v1.1b
.../v1.0
.../v1.1a
.../v1.1b

도움이 되었기를 바랍니다.

2013-02-16 18:15:12 EST 추가 정보...

오늘날의 연구에 따르면 이에 대해 많은 상충되는 견해가 있는 것으로 나타났습니다.

내 경험은 호스트 이름을 변경한 후 Xwindows 및 Ubuntu "zeroconfig" 기능을 복원하는 데 많은 시간을 소비한 데서 비롯되었습니다. 해당 사건에 대한 내 메모 중 일부는 다음과 같습니다.

  • 우분투-10.04
  • 그물

    • 2011년 5월 업데이트부터 Zeroconf를 지원하기 위해 네트워크 설정 요구 사항이 크게 변경되었습니다!
    • 발생한 주요 문제는 "hostname" 명령과 관련되어 있습니다.

      • Ubuntu가 호스트 이름, IP 주소 등을 유지 관리하는 데 사용하는 방법이 변경되었습니다.
      • /etc/hostname 및 /etc/hosts 파일은 이제 이러한 모든 값에 대한 권한입니다.
      • /etc/hosts의 호스트는 더 이상 여러 별칭을 가질 수 없습니다.
      • /etc/hosts에서 첫 번째 이름은 FQDN(정규화된 도메인 이름), 즉 호스트 이름.도메인 이름이어야 합니다.
      • 이제 SSH는 호스트 이름 대신 FQDN을 전송하므로 /etc/hosts.allow를 다음에서 변경해야 합니다.

        모두: 로컬
        대상..모두
        : 로컬*.DORIS

  • 에서 발췌http://www.oldapps.com/linux/ubuntu.php?old_ubuntu=35?changelog...

    • 'Avahi는 .local 도메인이 존재하더라도 항상 시작됩니다. avahi-daemon 패키지는 mDNS "zeroconf" 표준을 구현하고 이전에는 충돌하는 .local DNS 도메인이 있는 경우 실행을 방지하기 위한 검사를 포함했습니다. 일부 ISP는 보도에 따르면 이러한 .local 도메인을 네트워크에 광고했기 때문에 Ubuntu 호스트가 로컬 네트워크에 광고된 이름을 볼 수 없습니다(327362). Ubuntu 9.10에서는 avahi-daemon이 시작됩니다. 이로 인해 다른 문제가 발생할 수 있습니다. 네트워크가 이런 방식으로 구성된 경우 다음 명령을 사용하여 mDNS를 비활성화할 수 있습니다.

      sudo 중지 avahi-daemon sudo sed -e '/^start/,+1s/^/#/' /etc/init/avahi-daemon.conf

관련 기사 몇개..

관련 정보