คุณตั้งค่าคำสั่ง ServerName ไว้ที่ไหนใน Apache 2


37

หมายเหตุ:สิ่งนี้เกี่ยวข้องกับคำถามของฉัน: " Apache 2.4 จะไม่โหลดใหม่มีปัญหากับการกำหนดค่าของฉันหรือไม่ "

ฉันกำลังพยายามทดสอบไซต์ท้องถิ่น ตามที่ผมเข้าใจ Apache 2 (และอาจจะ Apache เช่นกัน) VirtualHostมีสิ่งที่เรียกว่า ความเข้าใจเล็กน้อยของฉันบอกฉันว่า virtualhosting เป็นวิธีที่หนึ่งเซิร์ฟเวอร์ / ที่อยู่ IP สามารถให้บริการหลายโดเมน

  • https://en.wikipedia.org/wiki/Virtual_hosting

อย่างไรก็ตามฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อเรียกใช้ Apache 2 configtestเพื่อดูว่าฉันล้มเหลว ฉันใช้ Apache 2.4.10-1 และดูเหมือนว่ามีการเปลี่ยนแปลงมากมายที่เกิดขึ้นระหว่าง Apache 2.2 และ Apache 2.4 ซึ่งฉันไม่ทราบ

$ sudo apache2ctl configtest
[sudo] password for shirish:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

นี่คือ/etc/hostsไฟล์:

 $ cat /etc/hosts
127.0.0.1    localhost
127.0.1.1    debian mini

ฉันยังเห็น/etc/hosts.confไฟล์ว่าง บางทีข้อมูล/etc/hostsที่ต้องคัดลอกไป/etc/hosts.confยังเซิร์ฟเวอร์เพื่อรับรู้?

ชื่อโฮสต์ของฉัน:

$ hostname
debian

นี่คือไฟล์กำหนดค่าของเว็บไซต์:

$ cat /etc/apache2/sites-available/minidebconfindia.conf
<VirtualHost mini:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/html/in2014.mini/website

    <Directory />
        Options +FollowSymLinks +Includes
        Require all granted
    </Directory>

    <Directory /var/www/html/in2014.mini/website/>
        Options +Indexes +FollowSymLinks +MultiViews +Includes
        Require all granted
    </Directory>
</VirtualHost>

ฉันยังอ่านเกี่ยวกับการผูกกับที่อยู่และพอร์ตแต่ฉันไม่เข้าใจว่าด้วยเหตุผลหลายประการ มันไม่ได้ให้ / แบ่งปันตัวอย่างว่าไฟล์เหล่านั้นจะต้องใส่อะไรและอะไรจะเกิดขึ้นก่อนและหลัง ตัวอย่างจะดีขึ้นมาก

ฉันทำอย่างนั้นและรีสตาร์ทเซิร์ฟเวอร์ แต่ฉันยังคงได้รับข้อผิดพลาดเดียวกัน

~$ sudo apache2ctl configtest
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

ดูเหมือนว่ามีสามไฟล์การกำหนดค่าในเดเบียนที่ฉันจำเป็นต้องรู้และเข้าใจ

/etc/apache2$ ls *.conf
apache2.conf  ports.conf

และ

/etc/apache2/conf.d$ ls *.conf
httpd.conf

เห็นได้ชัดว่า apache2.conf เป็นไฟล์กำหนดค่าส่วนกลางในขณะที่ httpd.conf เป็นไฟล์กำหนดค่าผู้ใช้ นอกจากนี้ยังมีพอร์ต ทั้งสอง apache2.conf และ ports.conf อยู่ที่ค่าเริ่มต้นยกเว้นฉันมีการเปลี่ยนแปลง LogLevel ของ Apache จากไปwarndebug

ฉันลองอีกสิ่งหนึ่ง:

$ sudo apache2ctl -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
127.0.1.1:80           debian (/etc/apache2/sites-enabled/minidebconfindia.conf:1)
*:80                   127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex watchdog-callback: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl
Mutex mpm-accept: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

บางทีบางคนอาจมีข้อมูลเชิงลึกมากกว่านี้

คำตอบ:


43

ไฟล์ที่จะแก้ไข:

/etc/apache2/apache2.conf

คำสั่งเพื่อแก้ไขไฟล์:

sudo nano /etc/apache2/apache2.conf

สำหรับชื่อเซิร์ฟเวอร์ทั่วโลกคุณสามารถวางไว้ที่ด้านบนของไฟล์ (นอกแท็กโฮสต์เสมือน)

บรรทัดแรกดูเหมือนว่า:

ServerName myserver.mydomain.com

จากนั้นบันทึกและทดสอบการกำหนดค่าด้วยคำสั่งต่อไปนี้:

apachectl configtest

คุณควรได้รับ:

ไวยากรณ์ตกลง

จากนั้นคุณสามารถรีสตาร์ทเซิร์ฟเวอร์และตรวจสอบว่าคุณไม่ได้รับข้อความแสดงข้อผิดพลาด:

sudo service apache2 restart

2
นี่คือคำตอบที่ถูกต้อง Debian ฉันพยายาม/etc/apache2/conf-available/fqdn.confหรือservername.confหรือhttpd.confจะไม่มีประโยชน์ เดเบียนJessie, และapache 2.4.10
ดร. เบ

2
หากคุณมีconf-available/และconf-enabled/สร้างไฟล์conf-available/และใช้คำสั่งa2enconfเพื่อเปิดใช้งาน ด้วยวิธีนี้ dpkg จะไม่รบกวนคุณเกี่ยวกับการเปลี่ยนแปลงที่ไม่ได้ติดตามเมื่อ / หากการapache2-commonอัปเดตแพ็กเกจapache2.conf
Kevin

ไฟล์conf-availableหลังจากนี้และการแก้ไขอาจ/etc/apache2/conf-available/servername.confมีเนื้อหาServerName myserver.mydomain.com(ลองใช้กับ Raspberry Pi, Apache 2.4.10, Debian 8 (Jessie), Linux kernel 4.4.34)
Peter Mortensen

@PeterMortensen คุณสามารถใช้ตัวอย่างที่แบ่งปันเพื่อให้ฉันสามารถเข้าใจสิ่งที่คุณหมายถึง
shirish

ไฟล์นี้ไม่มีอยู่
แบล็

5

คุณต้องตั้งค่าชื่อเซิร์ฟเวอร์ :

ServerName localhost

ใน Debian /etc/apache2/conf.d/httpd.confคุณสามารถตั้งค่าไว้ใน

บน MacOS /private/etc/apache2/httpd.confคุณสามารถตั้งค่าไว้ใน


5
ใน Ubuntu ให้ตั้งใน /etc/apache2/apache2.conf
macki

1
Debian apache2.confอย่างใดอย่างหนึ่ง
ดร. Beco

1
Apache / Debian เวอร์ชันนี้ใช้งานได้กับอะไร? ฉันไม่คิดว่ามันจะใช้งานได้กับ Apache 2.4 มันอาจจะเป็น/etc/apache2/apache2.confแทน
Peter Mortensen

มันใช้งานได้, Apache 2.4 บน Debian 8
erajuan

2

หากต้องการค้นหาไฟล์กำหนดค่า Apache ของคุณลองเรียกใช้คำสั่งต่อไปนี้:

apachectl -t -D DUMP_INCLUDES

จากนั้นแก้ไขไฟล์นั้นและค้นหาบรรทัดด้วยServerNameและยกเลิกการคอมเม้นต์ดังนั้นดูเหมือนว่า:

ServerName localhost

0

ในไฟล์กำหนดค่า apache24 คุณจะเห็นบรรทัดServerName:80:

  1. เว้นว่างไว้
  2. จากนั้นด้านล่างบรรทัดนั้นในช่องว่างเขียน:
    ServerName www.name (of your official domain or website.com:80)
  3. บันทึกไฟล์กำหนดค่า
  4. ไปที่cmdเปิดเมื่อผู้ดูแลระบบเปลี่ยนdirเป็น apache24
  5. แล้วcd apache24จากนั้นcd binแล้ว httpd.exe

คุณจะเห็นปัญหาได้รับการแก้ไข

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.