Kesalahan Apache “Tidak dapat menentukan nama domain server yang sepenuhnya memenuhi syarat”

432

Ketika saya me-restart server Apache saya menggunakan perintah

sudo /etc/init.d/apache2 restart

Saya mendapatkan kesalahan berikut:

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

Apakah server menggunakan 127.0.1.1 bukannya 127.0.0.1? Apa yang menyebabkan kesalahan ini?

Deepu
sumber

Jawaban:

509

6 # 13.04 dan lebih tua

Ini hanya peringatan ramah dan bukan masalah (karena ada sesuatu yang tidak berfungsi).

Jika Anda pergi ke:

/etc/apache2/apache2.conf

dan masukkan:

ServerName localhost   

dan kemudian restart apache dengan mengetik ke terminal:

sudo systemctl reload apache2

pemberitahuan itu akan hilang.

Jika Anda memiliki nama di dalamnya, /etc/hostnameAnda juga dapat menggunakan nama itu localhost.


Dan itu digunakan 127.0.1.1jika ada di dalam Anda /etc/hosts:

127.0.0.1 localhost
127.0.1.1 myhostname

Metode yang disukai

Mengatasi masalah Apache

Jika Anda mendapatkan kesalahan ini:

apache2: Could not determine the server's fully qualified domain name, 
using 127.0.0.1 for ServerName

kemudian gunakan editor teks seperti "sudo nano" di baris perintah atau "gksudo gedit" pada desktop untuk membuat file baru,

sudo nano /etc/apache2/conf.d/fqdn

atau

gksu "gedit /etc/apache2/conf.d/fqdn"

lalu tambahkan

ServerName localhost

ke file dan simpan. Ini semua dapat dilakukan dalam satu perintah dengan yang berikut ini:

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

Tetapi pada Ubuntu 14.04:

 echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf
 sudo a2enconf fqdn

Jangan lupa ".conf" (tanpa tidak akan berfungsi).

Rinzwind
sumber
2
Ini juga disebutkan dalam dokumentasi pengaturan LAMP Ubuntu untuk Troubleshooting Apache . Di sana mereka merekomendasikan untuk membuat file /etc/apache2/conf.d/fqdn dengan ServerName localhostdi dalamnya
icc97
Jawaban yang sangat bagus - tapi saya juga merekomendasikan untuk meletakkannya di direktori conf.d :)
cwd
3
/etc/apache2/conf.d/tidak ada setelah saya menginstal lamp-server^di 14,04
redanimalwar
@redanimalwar Untuk 13.10 dan yang lebih baru lihat jawaban @ Starx di bawah ini.
Dan
3
Untuk langkah terakhir (membuat sym-link di 14.04) saya sarankan sudo a2enconf fqdnmeskipun secara teknis harus sama.
nuala
176

13.10 atau lebih baru

Pada Apache 2.4 - yang tersedia secara default pada 13.10 - Anda tidak dapat menggunakan metode tentang menambahkan file konfigurasi di conf.ddirektori.

Apache tidak lagi menggunakan conf.ddirektori. Semua file konfigurasi disimpan di dalam /etc/apache2/conf-availabledirektori dan semua file konfigurasi sekarang harus memiliki .confekstensi.

Untuk menyelesaikan pesan ini di Apache 2.4, kita harus membuat file konfigurasi di dalam direktori conf-available. Sebagai contoh servername.conf.

sudo vi /etc/apache2/conf-available/servername.conf

Dan di dalam ini kita hanya perlu menambahkan satu baris

ServerName localhost

Anda dapat menggabungkan dua perintah sebelumnya menjadi satu dengan:

echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/servername.conf

Jika Anda ingin menggunakan nama domain atau nama lain tergantung pada persyaratannya, ganti saja localhostdengan apa pun yang Anda butuhkan. Selanjutnya Anda harus mengaktifkan konfigurasi ini. Untuk ini, Anda perlu menjalankan perintah berikut:

sudo a2enconf servername

a2enconfadalah perintah untuk mengaktifkan file konfigurasi di Apache 2.4. Perhatikan juga bahwa servernamepada perintah di atas adalah dari nama file konfigurasi servername.conf. Jika file konfigurasi ngenericserver.confAnda maka Anda harus menulis sudo a2enconf ngenericserver.

Setelah ini memuat ulang server dan pesan di atas tidak akan lagi mengganggu Anda.

sudo service apache2 reload

atau

sudo apache2ctl graceful

Sekarang setelah ini, Anda akan melihat bahwa pesan tidak akan ditampilkan lagi dan masalahnya akan diperbaiki.

Starx
sumber
3
Adakah yang tahu bagaimana membuat Apache mengatakan file konfigurasi mana yang bermasalah? Saya tidak tahu mengapa pengembang tidak pernah berpikir untuk menempatkan ini dalam pesan kesalahan mereka - hampir tidak membutuhkan banyak kode!
John Y
Jika saya memiliki fqdm Internet untuk server ini, apakah ini tempat untuk meletakkannya? yaitu apakah saya harus mengganti myhost.org sebagai ganti localhost?
CPBL
1
@CPBL Ini akan menjadi nama server default untuk semua situs. Jika Anda hanya memiliki satu situs, maka hanya itu yang perlu Anda lakukan. Jika Anda memiliki beberapa situs di server Anda, Anda juga perlu menambahkan direktif servername untuk setiap situs dalam konfigurasi virtual host masing-masing.
Dan
1
Bekerja pada 14,04 LTS.
Parto
1
Tautan yang Anda kutip tampaknya sudah mati, tolong perbaiki.
Fredrick Gauss
28

Apache2 juga bisa mendapatkan FQDN dari nama host sistem yang dikonfigurasikan dengan benar daripada hardcoded ke file konfigurasi apache. Hardcoding juga akan menyebabkan kebingungan jika perubahan nama host. Anda sebenarnya tidak memerlukan ServerNamearahan httpd.confapa pun atau file konfigurasi apache apa pun.

Masukkan yang berikut ini /etc/hosts:

# IPv4 and IPv6 localhost aliases
127.0.0.1 hostname.domainname.com  hostname  localhost
::1       hostname.domainname.com  hostname  localhost

di mana hostname.domainname.comFQDN mesin Anda.

Bersamaan dengan nama host yang dikonfigurasi dengan benar di dalam /etc/hostname/atau dengan hostnamectl, ini juga akan membantu layanan lain di mesin Anda berjalan dengan baik (yaitu prompt login, yang ditampilkan This is hostname.domainname.comsebagai ganti This is hostname.unknown_domain.)

Andrew Mao
sumber
5
+1 untuk "nama host sistem yang dikonfigurasikan dengan benar". Saya ingin mengkonfigurasi server dengan benar. Ini juga memperbaiki kesalahan saya dalam log[warn] RSA server certificate CommonName (CN) <fqdn> does NOT match server name!?
transistor1
Apakah Anda pikir ini harus bekerja dengan Apache 2.2.22? Saya masih mendapatkan "Tidak dapat dengan andal menentukan nama domain server yang sepenuhnya memenuhi syarat, menggunakan 127.0.1.1 untuk ServerName"
David Winiecki
Apakah hostname localhostseharusnya myubuntuservername localhost? Atau string literal hostname localhost? Anda tidak jelas dalam jawaban Anda
Jonathan
2
Ini harus menjadi jawaban yang diterima. Tampaknya Anda mungkin harus mengaitkan FQDN ke alamat IP statis daripada 127.0.0.1.
Skippy le Grand Gourou
1
Ini adalah jawaban terbaik untuk saya di Ubuntu 18.04 Saya berharap dokumentasi konsisten meskipun nama domain yang sepenuhnya memenuhi syarat bukan terminologi yang sama di sini atau di mana pun. jika nama domain saya yang sepenuhnya memenuhi syarat adalah google.com dan servername saya adalah google, entri saya di / etc / hosts akan menjadi 127.0.0.1 google.com google Saya bisa mengganti baris localhost dan host iklan lokal ke akhir baris ini jika saya ingin. Saya menggunakan ini: digitalocean.com/community/tutorials/…
NZ Dev
26
  • Buka terminal
  • Buka /etc/apache2/httpd.conffile:

    sudo editor /etc/apache2/httpd.conf # [1]
    
  • Secara default, itu akan kosong. Cukup tambahkan baris berikut:

    ServerName localhost
    
  • Simpan file dan keluar

  • Mulai ulang server

    sudo service apache2 restart
    

[1] Luncurkan editor default, lihat sudo update-alternatives --config editor

hijau
sumber
setelah menjalankan perintah terakhir, terjadi kesalahan berikut ** Restart server web apache2 / usr / sbin / apache2ctl: 87: ulimit: batas pengaturan kesalahan (Operasi tidak diizinkan) / usr / sbin / apache2ctl: 87: ulimit: batas pengaturan kesalahan (Operasi tidak diizinkan) (13) Izin ditolak: make_sock: tidak dapat mengikat ke alamat 0.0.0.0:80 tidak tersedia soket pendengaran, mematikan Tidak dapat membuka log Tindakan 'mulai' gagal. Log kesalahan Apache mungkin memiliki informasi lebih lanjut. [gagal] ** @ green7
Deepu
coba 'sudo service apache2 restart'
waterloo2005
20

Di versi baru apache2 Anda hanya mengikuti perintah seperti ini:

sudo nano /etc/apache2/apache2.conf

Tambahkan akhir baris file baru berikut:

ServerName localhost

Kemudian restart apache2:

sudo service apache2 restart

Selesai.

empugandring
sumber
6

Saya merasa sedikit lebih baik untuk membuat file baru /etc/conf.duntuk memodifikasi apache2.confatau httpd.conf.

Ini adalah preferensi pribadi yang membuat perubahan konfigurasi saya terpisah dari paket distribusi. Jadi pembaruan tidak terlalu rumit.

Saya membuat file /etc/apache2/conf.d/AAserverNamedan hanya berisi:

ServerName myhost.mycomain.tld

Saran lain tentu berhasil juga.

areeda
sumber
2

Di Ubuntu 16.04:

sudo -i

echo 'ServerName localhost' > /etc/apache2/conf-available/server-name.conf
a2enconf server-name
Eduardo Cuomo
sumber
1

Menambahkan ServerName localhost

Untuk

 sudo leafpad /etc/apache2/apache2.conf

 sudo leafpad /etc/apache2/httpd.conf

Itu bukan kesalahan .. Ini hanya pengingat teman

Serem
sumber
1

Menentukan ServerName localhostdalam file konfigurasi Anda di luar bagian host virtual adalah cara untuk melakukan ini.

Beberapa jawaban lain menyarankan Anda untuk memodifikasi /etc/apache2/httpd.conf. File ini akan ditimpa ketika apache ditingkatkan dari apt. Untuk konfigurasi Apache yang tidak ingin Anda timpa, Anda harus membuat file baru. Berikut adalah "Cara Debian" untuk membuat perubahan konfigurasi ini:

# 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

Ini pada dasarnya sama dengan jawaban Stark, tetapi dalam bentuk salin dan tempel yang mudah. Saya awalnya memposting ini dalam sebuah pertanyaan yang ditandai sebagai duplikat: https://askubuntu.com/a/432408

Stephen Ostermiller
sumber
1

Di Ubuntu 16.04 :

Tambahkan ServerName localhostke file httpd.confmenggunakan perintah berikut.

sudo vi  /etc/apache2/httpd.conf

Kemudian sertakan baris ini Include httpd.confdi akhir file ini

sudo vi /etc/apache2/apache2.conf

Periksa lagi kesalahan sintaks

sudo apache2ctl configtest

Anda seharusnya sekarang

Syntax OK

Anda sekarang dapat me-restart server dengan anggun dengan memuat ulang konfigurasi

sudo service apache2 reload

atau matikan prosesnya dan mulai lagi

sudo service apache2 restart
Dominic Motuka
sumber
0

Di Ubuntu 11.10, saya melihat pesan ini, bersama dengan booting hang yang terjadi karena disk saya penuh. Salah satu file log menjadi nakal . Mungkin sebenarnya tidak ada masalah dengan Apache, tetapi pesan ini adalah petunjuk terakhir yang diberikan sebelum boot digantung.

Untuk memperbaiki masalah, saya harus boot ke mode pemulihan dan menghapus file log patuh.

bangsawan
sumber
0

Jika Anda menggunakan bash dan menginginkan dependensi minimal (dan hanya ingin satu-liner untuk skrip entrypoint Anda jika Anda menggunakan Docker seperti saya), kedua opsi ini akan berfungsi.

Jika Anda ingin localhost:

echo "ServerName localhost" >> /etc/apache2/apache2.conf

Jika Anda ingin nama host yang ada:

echo "ServerName $(cat /etc/hostname)" >> /etc/apache2/apache2.conf

Ini menggunakan operator pengalihan bash untuk menambahkan string ke akhir file. Echo secara otomatis memasukkan baris baru, jadi Anda sudah siap.

Andrew Odri
sumber
0

Jalankan perintah berikut:

apachectl -t -D DUMP_INCLUDES

untuk menentukan jalur ke httpd.conffile konfigurasi Anda , kemudian edit file itu dan batalkan komentar / ubah baris yang menentukan nilai ServerNameopsi, misalnya

ServerName localhost

Untuk server web, gunakan nama DNS terdaftar (mis example.com.).

Jika host Anda tidak memiliki nama DNS terdaftar, masukkan alamat IP-nya di sini.

kenorb
sumber
0

Di Ubuntu 16.04 :

Tambahkan ServerName localhostke file httpd.confmenggunakan perintah berikut.

sudo vi  /etc/apache2/httpd.conf

Kemudian sertakan baris ini Include httpd.confdi akhir file ini

sudo vi /etc/apache2/apache2.conf

Periksa lagi kesalahan sintaks

sudo apache2ctl configtest

Anda seharusnya sekarang

Syntax OK

Anda sekarang dapat me-restart server dengan anggun dengan memuat ulang konfigurasi sudo service apache2 restart

Dominic Motuka
sumber