วิธีกำหนดค่า Apache (sites-available vs httpd.conf)


27

ฉันได้ลองทำตามบทเรียนพื้นฐานสองสามข้อที่อธิบายถึงวิธีการติดตั้งและใช้งาน Apache (บน Ubuntu, ทำงานบน Amazon) ฉันมักจะว่างเปล่าเพราะบทเรียนทั้งหมดบอกให้ฉันกำหนดค่า httpd.conf (เพื่อเพิ่ม DocumentRoot เป็นต้น)

ตอนนี้ฉันได้พบกับบทช่วยสอนที่บอกให้ฉันเพิ่มการกำหนดค่าไซต์ลงในไดเรกทอรีที่มีอยู่ในไซต์ (ภายใต้ / etc / apache) จากนั้นเชื่อมโยงไปยังไซต์ที่เปิดใช้งาน การกำหนดค่าวิธีนี้ดูเหมือนจะใช้งานได้

แต่ตอนนี้ฉันสับสน - ฉันควรกำหนดค่า Apache อย่างไร บทเรียนส่วนใหญ่ยังคงบอกว่าฉันควรใช้ httpd.conf ฉันควรใช้อันไหนดี? ความแตกต่างคืออะไร? ทำไมบทเรียนทั้งหมด "ผิด" (ถ้าเป็น)

คำตอบ:


35

sites-availableวิธีการโดยทั่วไปถือว่า "Debian ทาง":

  • กำหนดค่า "main" /etc/apache2/apache2.conf
  • "ผู้ใช้" กำหนดค่าใน /etc/apache2/httpd.conf
  • vhosts ใน/etc/apache2/sites-availableไฟล์ (โดยทั่วไปหนึ่งไฟล์ต่อหนึ่งไฟล์)
    • คุณอาจต้องการกำหนดหมายเลขเช่น 00-domain.com, 01-otherdomain.com
  • พอร์ต ( Listenคำสั่ง) ใน/etc/apache2/ports.conf
  • mods ใน /etc/apache2/mods-available

คุณสามารถจัดการสิ่งเหล่านี้ด้วย symlink หรือด้วยa2ชุดคำสั่ง:

a2ensite/a2dissite <site_config_filename>
a2enmod/a2dismod <module_name>

ทั้งนี้ขึ้นอยู่กับความชอบส่วนบุคคลคุณสามารถรีสตาร์ท Apache ใช้apachectl, /etc/init.d/apache2 (start|stop|reload|restart)หรือservice apache2 (start|stop|reload|restart)

ตัวอย่างที่คุณจะใช้httpd.confแทนรายการ vhost นั้นเป็นตัวอย่างสำหรับการเปลี่ยนเส้นทางทั่วโลกหรือกฎการเขียนซ้ำตัวอย่างเช่น เกร็ดเล็กเกร็ดอื่น ๆ - โดยทั่วไปคุณควรทิ้งไว้apache2.confคนเดียวและตรวจสอบให้แน่ใจว่าคุณตั้งค่ารูปแบบการตั้งชื่อที่สอดคล้องกันสำหรับ vhosts ในsites-availableไดเรกทอรี


สรุปยอดเยี่ยม! ชัดเจนและกระชับกว่าที่ฉันกำลังทำอยู่ +1
Steven Monday

2
ไซต์ที่มีให้การทำให้เป็นโมดูลที่ดีของการกำหนดค่า ช่วยให้คุณสามารถมุ่งเน้นไปที่การกำหนดค่าไซต์เดียวได้อย่างง่ายดาย นอกจากนี้ยังทำให้การเปรียบเทียบไซต์บนเซิร์ฟเวอร์หรือย้ายหรือทำซ้ำไซต์ระหว่างเซิร์ฟเวอร์ทำได้ง่ายกว่ามาก
BillThor

+1 เมื่อคุณต้องการบำรุงรักษาการกำหนดค่าเหล่านี้ให้ไปที่ 'ไซต์ที่เปิดใช้งาน' แทน 'ไซต์ที่พร้อมใช้งาน' และเข้าถึงได้โดยตรงจากที่นั่น วิธีนี้คุณจะสามารถกำหนดและเข้าถึงการกำหนดค่าไซต์ที่ใช้อยู่ในปัจจุบันได้เสมอ
รอสส์

9

ตำแหน่งและองค์กรของไฟล์กำหนดค่าสามารถกำหนดค่าได้และสามารถเปลี่ยนได้ระหว่างการเผยแพร่ครั้งใหญ่หรือระหว่างการแจกแจง

Apache Wiki มีคำแนะนำที่ใช้งานง่ายเกี่ยวกับชื่อและตำแหน่งของไฟล์กำหนดค่า

เนื่องจากไฟล์includeกำหนดค่าสามารถมีคำสั่งได้ส่วนต่างๆของการกำหนดค่าจึงสามารถแยกออกเป็นไฟล์ขนาดเล็กได้ เนื่องจากไฟล์กำหนดค่า Apache มาตรฐานมีความคิดเห็นจำนวนมากและรายการมาตรฐานจำนวนมากจึงเหมาะสมที่จะแยกส่วนที่คุณมักจะเปลี่ยนไป

ชื่อของไฟล์การกำหนดค่าหลักสามารถเปลี่ยนแปลงได้ในเวลารวบรวมและในรุ่นล่าสุดมันก็เปลี่ยนจากhttpd.confเป็นapache2.conf

ในช่วงหลายปีที่ผ่านมามีการวิวัฒนาการในองค์กรของไฟล์กำหนดค่าที่รวมอยู่ด้วย

ตัวอย่างเช่นฉันติดตั้ง Apache2 บนระบบที่ใช้ Ubuntu apt-get install apache2- นี่คือไฟล์ที่รวมมา

/etc/apache2$ ls
apache2.conf  envvars     mods-available  ports.conf       sites-enabled
conf.d        httpd.conf  mods-enabled    sites-available

/etc/apache2$ grep ^Include apache2.conf
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/ 

/etc/apache2$ ls -l sites-enabled
total 0
lrwxrwxrwx 1 root root 26 Dec 26 12:30 000-default -> ../sites-available/default

/etc/apache2/sites-available/defaultดังนั้นการตั้งค่าบางอย่างที่คุณมีแนวโน้มที่จะได้รับความสนใจมากที่สุดในขณะนี้อยู่ใน

ฉันเห็นว่านี่สอดคล้องกับเอกสารของ Ubuntu สำหรับ Apacheซึ่งฉันแนะนำให้คุณอ่านก่อน หากคุณมีเอกสารอื่น ๆ สำหรับ Apache รุ่นเก่า (หรือการกระจายอื่น ๆ ) คุณสามารถปรับเปลี่ยนข้อมูลนั้นเพื่อให้เหมาะกับวิธีการจัดระเบียบสิ่งต่าง ๆ ใน Ubuntu


-2

Apache in linux สามารถติดตั้งได้สองประเภท หนึ่งคือ apt-get และไฟล์ tar ดาวน์โหลดอื่น ๆ และแตกไฟล์ .... ดังนั้นใน apt-get process sites จะให้บริการจากโฟลเดอร์ที่เปิดใช้งาน / etc / apache2 / sites เนื่องจากแต่ละไซต์ที่ให้บริการไปยังโลกภายนอกถูกกำหนดค่าในโฟลเดอร์เหล่านี้โดย ตัวอย่างไฟล์. config 000-default.conf เป็นไซต์เริ่มต้นที่เปิดใช้งานเพื่อแสดงการทำงานของ Apache

ดังนั้นโดยการสร้างไฟล์. config ใด ๆ ในไซต์ที่เปิดใช้งานและนำไปยังตำแหน่งของเนื้อหา .. ไซต์นั้นจะให้บริการ

ดังนั้นเพื่อที่จะเพิ่มเว็บไซต์สแตติกใหม่ไฟล์. conf ใหม่จะต้องถูกสร้างขึ้นในโฟลเดอร์ที่เปิดใช้งานไซต์ด้วยชื่อตัวอย่าง example.conf และจะต้องเพิ่มบรรทัดด้านล่างในนั้น

ServerAdmin เว็บมาสเตอร์ @ localhost DocumentRoot / var / www / html ข้อผิดพลาดเข้าสู่ระบบ $ {APACHE_LOG_DIR} /error.log CustomLog $ {APACHE_LOG_DIR} /access.log รวมกัน

โดยที่ *: 80 หมายถึง "เปิดสู่โลกผ่านพอร์ต 80" DocumentRoot / var / www / html หมายถึง "เส้นทางของเนื้อหาเว็บไซต์"


ผิดและทำให้เข้าใจผิดนี้ คุณสร้างไฟล์ของคุณในไซต์ที่พร้อมใช้งานเพื่อให้เครื่องมือ (แนะนำ) เช่น a2ensite สามารถทำงานได้ โดยทั่วไปคุณจะเชื่อมโยงไฟล์ conf เหล่านี้โดยใช้ a2ensite ไปยังเว็บไซต์ที่เปิดใช้งาน apt-get ไม่มีส่วนเกี่ยวข้องกับการกำหนดค่าไซต์ของคุณ
HörmannHH
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.