Když restartuji server Apache pomocí příkazu
Sudo /etc/init.d/Apache2 restart
Zobrazila se následující chyba:
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
Používá server místo 127.0.0.1 server 127.0.1.1? Co způsobuje tuto chybu?
6 # 13.04 a starší
Toto je pouze přátelské varování a ve skutečnosti to není problém (jako v tom, že něco nefunguje).
Pokud jdete na:
/etc/Apache2/Apache2.conf
a vložte:
ServerName localhost
a restartujte Apache zadáním do terminálu:
Sudo systemctl reload Apache2
oznámení zmizí.
Pokud máte jméno uvnitř /etc/hostname
Toto jméno můžete také použít místo localhost
.
A používá 127.0.1.1
pokud je uvnitř vašeho /etc/hosts
:
127.0.0.1 localhost
127.0.1.1 myhostname
Odstraňování problémů s Apache
Pokud se zobrazí tato chyba:
Apache2: Could not determine the server's fully qualified domain name,
using 127.0.0.1 for ServerName
pak pomocí textového editoru, například „Sudo nano“ na příkazovém řádku nebo „gksudo gedit“ na ploše, vytvořte nový soubor,
Sudo nano /etc/Apache2/conf.d/fqdn
nebo
gksu "gedit /etc/Apache2/conf.d/fqdn"
poté přidejte
ServerName localhost
do souboru a uložit. To vše lze provést jedním příkazem s následujícím:
echo "ServerName localhost" | Sudo tee /etc/Apache2/conf.d/fqdn
Ale na Ubuntu 14.04:
echo "ServerName localhost" | Sudo tee /etc/Apache2/conf-available/fqdn.conf
Sudo a2enconf fqdn
Nezapomeňte na ".conf" (bez nebude fungovat).
Od verze Apache 2.4 - která je ve výchozím nastavení k dispozici od 13.10 - nemůžete použít metodu přidávání konfiguračního souboru do conf.d
adresář.
Apache již nepoužívá conf.d
adresář. Všechny konfigurační soubory jsou uloženy uvnitř /etc/Apache2/conf-available
adresář a všechny konfigurační soubory by nyní měly mít .conf
rozšíření.
Abychom tuto zprávu vyřešili v Apache 2.4, musíme vytvořit konfigurační soubor v adresáři conf-available. Například servername.conf
.
Sudo vi /etc/Apache2/conf-available/servername.conf
A uvnitř toho stačí přidat jeden řádek
ServerName localhost
Předchozí dva příkazy můžete kombinovat s:
echo "ServerName localhost" | Sudo tee /etc/Apache2/conf-available/servername.conf
Pokud chcete použít doménové jméno nebo jiné jméno v závislosti na požadavku jeho pokuty, stačí nahradit localhost
cokoli, co potřebujete. Dále musíte tuto konfiguraci povolit. K tomu je třeba spustit následující příkaz:
Sudo a2enconf servername
a2enconf
je příkaz k povolení konfiguračního souboru v Apaches 2.4. Také si všimněte, že servername
na výše uvedeném příkazu je z názvu konfiguračního souboru servername.conf
. Pokud byl váš konfigurační soubor ngenericserver.conf
pak byste museli napsat Sudo a2enconf ngenericserver
.
Po tomto opětovném načtení vás server a výše uvedená zpráva již nebudou opravovat.
Sudo service Apache2 reload
nebo
Sudo Apache2ctl graceful
Nyní uvidíte, že se zpráva již nezobrazí a problém bude odstraněn.
Apache2 může také získat FQDN ze správně nakonfigurovaného systémového názvu hostitele, než aby byl pevně zakódován do konfiguračního souboru Apache. Hardcoding to také způsobí zmatek, pokud se změní jméno hostitele. Ve skutečnosti nepotřebujete žádné ServerName
směrnice v httpd.conf
nebo jakékoli konfigurační soubory Apache.
Vložte následující text do /etc/hosts
:
# IPv4 and IPv6 localhost aliases
127.0.0.1 hostname.domainname.com hostname localhost
::1 hostname.domainname.com hostname localhost
kde hostname.domainname.com
je FQDN vašeho stroje.
Spolu se správně nakonfigurovaným názvem hostitele v /etc/hostname/
nebo s hostnamectl
, pomůže to také správnému fungování dalších služeb na vašem počítači (tj. přihlašovací výzva zobrazující This is hostname.domainname.com
namísto This is hostname.unknown_domain
.)
Otevři /etc/Apache2/httpd.conf
file:
Sudo editor /etc/Apache2/httpd.conf # [1]
Ve výchozím nastavení bude prázdné. Stačí přidat následující řádek:
ServerName localhost
Uložte soubor a ukončete
Restartujte server
Sudo service Apache2 restart
[1] Spusťte výchozí editor, viz Sudo update-alternatives --config editor
V nové verzi Apache2 stačí následující příkaz:
Sudo nano /etc/Apache2/Apache2.conf
Přidejte následující nový řádek konce souboru:
ServerName localhost
Poté restartujte Apache2:
Sudo service Apache2 restart
Je to hotovo.
Zjistil jsem, že je trochu lepší vytvořit nový soubor v /etc/conf.d
, které upraví buď Apache2.conf
nebo httpd.conf
.
Je to osobní preference, která udržuje mé změny konfigurace odděleně od distribučního balíčku. Aktualizace jsou tedy méně komplikované.
Vytvářím soubor /etc/Apache2/conf.d/AAserverName
a obsahuje pouze:
ServerName myhost.mycomain.tld
Ostatní návrhy samozřejmě fungují také.
V Ubuntu 16.04:
Sudo -i
echo 'ServerName localhost' > /etc/Apache2/conf-available/server-name.conf
a2enconf server-name
Přidat ServerName localhost
Na
Sudo leafpad /etc/Apache2/Apache2.conf
Sudo leafpad /etc/Apache2/httpd.conf
Není to chyba .. Je to jen připomínka přítele
Zadání ServerName localhost
v konfiguračních souborech mimo virtuální sekce Host je to možné.
Některé další odpovědi naznačují, že byste měli upravit /etc/Apache2/httpd.conf
. Tento soubor bude přepsán, když bude Apache upgradován z apt. Pro konfiguraci Apache, kterou nechcete přepsat, byste měli vytvořit nový soubor. Zde je „debian způsob“, jak tuto konfiguraci změnit:
# 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
To je v podstatě stejné jako Starkova odpověď, ale ve formě snadno kopírovatelné a vložitelné skriptu. Původně jsem to zveřejnil v otázce, která byla označena jako duplikát: https://askubuntu.com/a/432408
Zapnuto buntu 16.04:
Přidat ServerName localhost
do souboru httpd.conf
použijte následující příkaz.
Sudo vi /etc/Apache2/httpd.conf
Potom vložte tento řádek Include httpd.conf
na konci tohoto souboru
Sudo vi /etc/Apache2/Apache2.conf
Znovu zkontrolujte chyby syntaxe
Sudo Apache2ctl configtest
Nyní byste měli dostat
Syntax OK
Nyní můžete server restartovat elegantně opětovným načtením konfigurace
Sudo service Apache2 reload
nebo zabít proces a začít znovu
Sudo service Apache2 restart
Na Ubuntu 11.10 jsem viděl tuto zprávu spolu s zavěšeným zaváděním, protože můj disk byl plný. Jeden ze souborů protokolu byl nečestný . Pravděpodobně to nebyl problém s Apache, ale tato zpráva byla poslední vodítko, které se dalo před zavěšením bot.
Abych problém vyřešil, musel jsem nastartovat do režimu obnovy a odstranit nepřipravený soubor protokolu.
Spusťte následující příkaz:
apachectl -t -D DUMP_INCLUDES
určit cestu k vašemu httpd.conf
konfigurační soubor, pak tento soubor upravte a zrušte/upravte řádek, který určuje hodnotu pro možnost ServerName
, např.
ServerName localhost
Pro webový server použijte registrované jméno DNS (např. example.com
).
Pokud váš hostitel nemá registrované jméno DNS, zadejte zde jeho IP adresu.
Pokud používáte bash a chcete minimální závislosti (a chcete-li pro svůj jednorázový skript, pokud používáte Docker jako já), měli byste tyto dvě možnosti fungovat.
Pokud chcete localhost:
echo "ServerName localhost" >> /etc/Apache2/Apache2.conf
Pokud chcete existující název hostitele:
echo "ServerName $(cat /etc/hostname)" >> /etc/Apache2/Apache2.conf
Pomocí operátory přesměrování bash připojí řetězec na konec souboru. Echo automaticky vloží nový řádek, takže jste všichni nastaveni.
Zapnuto buntu 16.04:
Přidat ServerName localhost
do souboru httpd.conf
použijte následující příkaz.
Sudo vi /etc/Apache2/httpd.conf
Potom vložte tento řádek Include httpd.conf
na konci tohoto souboru
Sudo vi /etc/Apache2/Apache2.conf
Znovu zkontrolujte chyby syntaxe
Sudo Apache2ctl configtest
Nyní byste měli dostat
Syntax OK
Nyní můžete server elegantně restartovat opětovným načtením konfigurační služby Sudo Apache2 restart