「ホスト名を解決できません」 - 再起動せずにホスト名をきちんと変更する方法

「ホスト名を解決できません」 - 再起動せずにホスト名をきちんと変更する方法

職場では、Amazon EC2インスタンスでホストされているUbuntuサーバーを使用して小さなWebサイトを開発しています。私たちは2つのWebサーバーを持っています。一つは「ライブ」、もう一つは「テスト」です。ただし、「テスト」サーバーで新機能やバグ修正を実行すると、AWS APIを使用してIPを交換するスクリプトが実行されます。両方のサーバーが提供するドメインを交換するために2つのボックスに割り当てられたアドレス。

したがって、いつでもこれらのサーバーの1つは「ライブ」サーバーまたは「テスト」サーバーになりますが、永続的な状態ではありません。

2つのサーバーに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

EHem...サーバーのホスト名を動的に変更すると、多くのシステムデーモンが誤動作する可能性があり、通常これはすぐには明らかではありません。オペレーティングシステムは、システムのインストール時にホスト名が設定され、変更されないことを期待します。hostnameプロセスの開始時にほぼ常に一度だけチェックされます。ただし、バージョンを動的に切り替える他の方法もあります。

最も簡単な方法は、次を使用して間接参照レベルを設定することです。シンボリックリンク...

これには2つのサーバーは必要ありません。代わりに、次のようにサイトの「既定」ディレクトリと同じディレクトリレベルでサイトの各バージョンの/var/wwwディレクトリを作成します。hosted/server/html

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

「LIVE」と「TEST」が交互に表示されますv1.1av1.1b

間接的な内容が出ます...

シンボリックリンクの作成は非常に高速であるため、負荷の低いサイトとバージョンを交換したい場合は、大きな中断なしにシンボリックリンクを再生成できます。

私がベースとするホスティングサービスでは、ウェブサイトの「ホーム」ディレクトリは次のように「html」でなければなりません。

/home/group/subgroup/myuserid/html

したがって、htmlサービスが提供するディレクトリの名前をバージョンディレクトリに変更し、v1.1aというシンボリックリンクを作成しますhtml

シンボリックリンクを設定した後、ディレクトリのリストは次のようになります。

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

ディレクトリのWebサイトファイルを変更したら、.../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」機能を復元するのに多くの時間を費やしたことから来ました。そのイベントに関する私のメモのいくつかは次のとおりです。

  • Ubuntu-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

関連記事のいくつか..

関連情報