私はしばらくの間これで問題を抱えていて、私が知っているすべてを試しましたので、ついに助けを求める時が来たと思いました。
/etc/hosts
を編集しても機能しません。
例:
julian@ifrit:~$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 ifrit
192.168.1.100 dev.julianfernand.es
上記の例では、dev.julianfernand.es
(これは存在しません)にアクセスすると、192.168.1.100
からロードされます。
Pingを実行すると、問題なく動作します。ただし、Google ChromeまたはFirefoxを使用してdev.julianfernand.es
にアクセスすると、アクセスできません。
今、数回再起動した後、動作します。しかし、私はマネージドWordPressホスティング会社で働いているため、サーバーで顧客のWebサイトを表示するためにファイルを編集する必要がある多くの状況に対処しています。
コンピューターを再起動し続けることができません。まったく生産的ではありません。キャッシュをクリアする場合と同じように、ネットワークサービスの再起動は機能しません(内部Chrome DNSキャッシュも)。
誰もがここにアイデアを持っていますか?これは、elementaryOS(Ubuntu 12.04ベース)およびUbuntu 13.10(毎日)で発生します。他のバージョンではまだ試していません。
PS:この問題の場合、PHP-FPMとMySQLを使用してこのマシンで実行しているNGINXサーバーがあります。
前もって感謝します :)
UbuntuでDNSキャッシュをフラッシュする場合は、nscd
デーモンを再起動する必要があります。
次のコマンドを使用してnscd
をインストールします。
Sudo apt-get install nscd
次のコマンドを使用して、UbuntuでDNSキャッシュをフラッシュします。
Sudo service nscd restart
OR
Sudo service dns-clean start
参照: http://www.upubuntu.com/2012/05/how-to-flush-clear-dns-cache-under.html
次は私のために働いた:追加
addn-hosts=/etc/hosts
に
/etc/NetworkManager/dnsmasq.d/hosts.conf
dnsmasqを殺し、
service NetworkManager restart
私にとっての解決策は、/etc/nsswitch.conf
ファイルを編集することでした(コマンドSudo vim /etc/nsswitch.conf
を使用できます)。行を変更しました:
hosts: files mdns4_minimal [NOTFOUND=return] dns
に:
hosts: dns files mdns4_minimal [NOTFOUND=return]
そして今、それは期待通りに機能しています!
受け入れられた回答は、12.04〜13.04でdnsmasq
を無効にすることで機能しますが、13.10で機能しなくなりました。 13.10の次の新しいソリューションを見つけました。
/ etc/default/dnsmasqを編集し、ENABLED=1
をENABLED=0
に変更して再起動します。
From: http://blog.calebthorne.com/2012/08/broken-etchosts-in-ubuntu-1204.html
Ubuntu 12.04デスクトップエディションの新しい「機能」は、dnsmasq
をローカルDNSのNetworkManagerのプラグインとして使用することです。 DnsmasqはDNSおよびDHCPサービスを高速化することを目的としていますが、1つの不幸な副作用があります。dnsmasq
はローカルDNSをキャッシュし、/etc/hosts
への変更を無視します。ウェブサイトでの作業中にhostsファイルを頻繁に変更するため、この「機能」は非常に迷惑でした。
解決策は、Networkmanager構成ファイルでdnsmasq
を無効にすることです。 /etc/NetworkManager/NetworkManager.conf
を開き、次の行をコメントアウトします。
dns=dnsmasq
私のNetworkManager.conf
ファイルには次のものが含まれています。
[main]
plugins=ifupdown,keyfile
# dns=dnsmasq
[ifupdown]
managed=false
https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/993298 も参照してください
/etc/hosts
ファイルの権限を確認してください。
サーバーを複製した後のクラウドサービスでは、hostsファイルのアクセス許可が644
から600
に変更されたため、Apache(www-data
)がファイルを読み取ることができませんでした。 Sudo chmod 644 hosts
から/etc
を実行しましたが、修正しました。
問題は次のように始まりました。
MongoConnectionException Failed to connect to: localhost:27017: Previous connection attempts failed, server blacklisted.
Localhostを指すMongoClientのサーバー変数まで追跡しました。 localhostまたはホスト名にpingできませんでした。
/etc/nsswitch.conf
を編集し、行の前に#を追加して行の下にコメントアウトします
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
そして追加
hosts: files mdns4_minimal [NOTFOUND=return] dns
基本的に、構成は並べ替えられます。ドメインルックアッププロセスは、最初に/etc/hosts
であるファイルを参照し、次にDNSを参照します。デフォルト設定では、他の適切なサービスまたはファイルの前に、最初にDNSを調べます。
使用できるかどうかを簡単にテストするために
Sudo python -m SimpleHTTPServer 80
ディレクトリからファイルを提供する単純なHTTPサーバーを作成し、/etc/hosts
ファイルの行の下にコメントする
127.0.0.1 localhost
127.0.1.1 01hw730983
そして追加
127.0.0.1 content
次に、ブラウザに移動して、content/
と入力します(ディレクトリ構造が機能していることを確認できる場合はそうではありません)。
あなたの設定は私のものに非常に似ているようです。 Ubuntuをオフィスサーバーおよび開発ホストとして実行しているボックスがあります。そのボックスで、Nginx、Apache、Tomcat、Railsアプリなど、必要なものをすべて実行します。
Macから、hostsエントリを追加して、必要な名前でサーバーをロードできますが、ElementaryOSクライアントからは機能しません。
上記の修正を試みましたが、成功しませんでした。
私がやったのは、Squid Proxy Serverを実行し、サーバー上の/ etc/hostsにホスト名を追加することでした。 (編集するには、squidを再起動する必要があります。)
その後、ブラウザまたはOSのコントロールパネルで適切なプロキシ設定を行います。