Apacheエラー「サーバーの完全修飾ドメイン名を確実に判断できませんでした」


432

コマンドを使用して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   

次に、ターミナルに入力してapacheを再起動します。

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

ファイルに保存します。これはすべて、次のコマンドを使用して1つのコマンドで実行できます。

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

しかし、Ubuntu 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の回答を参照してください。
ダン

3
最後のステップ(14.04でsym-linkを作成する)sudo a2enconf fqdnについては、技術的には同じであるべきですが、お勧めします。
ヌアラ14年

176

13.10以降

Apache 2.4(13.10の時点でデフォルトで利用可能)の時点では、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

そして、この中に1行追加するだけです

ServerName localhost

前の2つのコマンドを1つに組み合わせることができます。

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
誰がApacheにどの設定ファイルに問題があるのか​​を知らせる方法を知っていますか?開発者がエラーメッセージにこれを入れようと思わない理由はわかりません。多くのコードが必要になることはほとんどありません。
ジョンY 14

このサーバー用のインターネットfqdmがある場合、これはそれを置く場所ですか?すなわち、localhostの代わりにmyhost.orgをサブスクライブする必要がありますか?
CPBL

1
@CPBLこれは、すべてのサイトのデフォルトのサーバー名になります。サイトが1つしかない場合は、必要な作業はそれだけです。サーバーに複数のサイトがある場合は、それぞれの仮想ホスト構成の各サイトにservernameディレクティブも追加する必要があります。
ダン14年

1
14.04 LTSで動作します。
パート

1
引用されたリンクは死んでいるようです。修正してください。
フレドリックガウス

28

Apache2は、apache構成ファイルにハードコーディングされるのではなく、適切に構成されたシステムホスト名からFQDNを取得することもできます。ホスト名が変更された場合、ハードコーディングすることで混乱が生じます。実際には、ServerNameディレクティブhttpd.confやApacheの設定ファイルは必要ありません。

以下を入れます/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!?
トランジスター1 14

これはApache 2.2.22で動作するはずだと思いますか?私はまだ「ServerNameのために127.0.1.1を使用して、確実にサーバーの完全修飾ドメイン名を特定できませんでした」取得しています
デヴィッドWiniecki

あるhostname localhostはずmyubuntuservername localhostですか?または文字列リテラルhostname localhost?あなたの答えが明確ではなかった
ジョナサン

2
これは受け入れられた答えでなければなりません。127.0.0.1ただし、FQDNではなく、静的IPアドレスに関連付ける必要があるようです。
スキッピールグラングロウ

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


最後のコマンドを実行した後、次のエラーが発生します許可)(13)許可が拒否されました:make_sock:アドレス0.0.0.0:80にバインドできませんでした。使用可能なリッスンソケットがないため、シャットダウンできませんログを開くことができませんアクション 'start'が失敗しました。Apacheエラーログに詳細情報がある場合があります。[失敗] ** @ green7
Deepu

「sudo service apache2 restart」を試してください
waterloo2005

20

apache2の新しいバージョンでは、次のようなコマンドに従うだけです。

sudo nano /etc/apache2/apache2.conf

ファイルの次の新しい行末を追加します。

ServerName localhost

次に、apache2を再起動します。

sudo service apache2 restart

終わった。


6

またはの/etc/conf.dいずれapache2.confかを変更するために、新しいファイルを作成することをお勧めしますhttpd.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。このファイルは、Apacheがaptからアップグレードされると上書きされます。上書きされたくないApache設定の場合は、新しいファイルを作成する必要があります。この設定を変更する「Debianの方法」は次のとおりです。

# 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

上のUbuntuの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

Ubuntu 11.10では、このメッセージが表示され、ディスクがいっぱいだったためにブートがハングしました。 ログファイルの1つが不正になりました。おそらく実際にはApacheに問題はなかったのでしょうが、このメッセージはブートがハングする前に与えられた最後の手がかりでした。

この問題を解決するには、リカバリモードで起動し、厄介なログファイルを削除する必要がありました。


0

bashを使用していて、最小限の依存関係が必要な場合(そして、私のようなDockerを使用している場合は、エントリポイントスクリプトにワンライナーが必要場合)、これら2つのオプションは機能します。

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

Webサーバーの場合は、登録済みのDNS名(例:)を使用しますexample.com

ホストに登録済みのDNS名がない場合は、ここにIPアドレスを入力します。


0

上のUbuntuの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サービスapache2 restartをリロードすることにより、サーバーを正常に再起動できるようになりました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.