วิธีที่เหมาะสมในการเปลี่ยนไดเรกทอรีหรือเรียกใช้จากหลายไดเรกทอรีภายใต้พอร์ตที่แตกต่างกันสำหรับ apache2 มีดังนี้:
สำหรับ apache2 ไฟล์การกำหนดค่าจะอยู่ภายใต้/etc/apache2และไม่ใช้ไฟล์การกำหนดค่าเดียวเช่นเดียวกับในเวอร์ชันที่เก่ากว่า แต่ถูกแบ่งออกเป็นไฟล์การกำหนดค่าที่มีขนาดเล็กลงโดยเป็นไฟล์/etc/apache2/apache2.confการกำหนดค่าหลัก เพื่อให้บริการไฟล์จากไดเรกทอรีอื่นเราจำเป็นต้องใช้ไฟล์ virtualhost conf ใหม่ ไฟล์ conf virtualhost อยู่ใน/etc/apache2/sites-available(ห้ามแก้ไขไฟล์ภายในเว็บไซต์ที่เปิดใช้งาน) การติดตั้ง apache เริ่มต้นใช้ไฟล์ conf virtualhost000-default.confใช้แฟ้ม
เริ่มต้นด้วยการสร้างไฟล์ virtualhost ใหม่โดยการคัดลอกไฟล์ virtualhost เริ่มต้นที่ใช้โดยการติดตั้งเริ่มต้นของ apache (ไฟล์ที่ทำงานที่ localhost บนพอร์ต 80) เปลี่ยนเป็นไดเรกทอรี/etc/apache2/sites-availableแล้วทำการคัดลอกโดยsudo cp 000-default.conf example.com.confตอนนี้แก้ไขไฟล์โดยsudo gedit example.com.confเป็น:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
ฉันได้ลบบรรทัดที่ไม่สำคัญออกจากไฟล์ด้านบนเพื่อความกระชับ นี่คือเส้นทางไปยังไดเรกทอรีที่ไฟล์เว็บไซต์ที่มีที่จะให้บริการเช่นDocumentRootindex.html
สร้างไดเรกทอรีที่คุณต้องการให้บริการไฟล์เช่น; mkdir example.comและเจ้าของการเปลี่ยนแปลงและกลุ่มเริ่มต้นของไดเรกทอรีสำหรับเช่นถ้าเข้าสู่ระบบในชื่อผู้ใช้สิทธิ์การเปลี่ยนแปลงเป็นubuntu sudo chown ubuntu:www-data example.comนี้ถือเป็นการเข้าถึงเต็มรูปแบบให้กับผู้ใช้และช่วยให้การอ่านและการดำเนินการเข้าถึงกลุ่มubuntuwww-data
ตอนนี้แก้ไขไฟล์ apache conf /etc/apache2/apache2.confโดยการออกคำสั่งsudo gedit apache2.confและค้นหาบรรทัด<Directory /var/www/>และด้านล่างแท็กปิด</Directory>เพิ่มต่อไปนี้ด้านล่าง:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
ขณะนี้มีสองคำสั่งเพื่อเปิดใช้งานหรือปิดใช้งานไฟล์กำหนดค่า virtualhost ซึ่งเป็นa2ensiteและa2dissiteตามลำดับ ตอนนี้เนื่องจากexample.com.confไฟล์ของเราใช้พอร์ตเดียวกัน ( 80) ตามที่ใช้โดยไฟล์กำหนดค่าเริ่มต้น ( 000-default.conf) เราจึงต้องปิดการใช้งานไฟล์กำหนดค่าเริ่มต้นด้วยการออกคำสั่งsudo a2dissite 000-default.confและเปิดใช้งานไฟล์ virtualhost conf ของเราโดยsudo a2ensite example.com.conf
sudo service apache2 restartตอนนี้เริ่มต้นใหม่หรือโหลดเซิร์ฟเวอร์ที่มีคำสั่ง ตอนนี้ apache ให้บริการไฟล์จากไดเรกทอรีexample.comที่localhostพอร์ตเริ่มต้นของ80พอร์ตเริ่มต้นของ
a2ensiteคำสั่งพื้นสร้างการเชื่อมโยงสัญลักษณ์ไปยังแฟ้ม conf ภายใต้ไดเรกทอรีเว็บไซต์ที่เปิดใช้งาน
ห้ามแก้ไขไฟล์ภายใน directoy ที่เปิดใช้งานไซต์ (หรือเปิดใช้งาน *) ตามที่ระบุไว้ในคำตอบนี้https://stackoverflow.com/a/41568701/2532763
ในการเปลี่ยนพอร์ตและเรียกใช้จากหลายไดเรกทอรีในพอร์ตต่าง ๆ :
ตอนนี้ถ้าคุณต้องการรันไดเร็กทอรีบนพอร์ตอื่นให้เปลี่ยนหมายเลขพอร์ตจาก 80 เป็น 8080 โดยแก้ไขไฟล์ virtualhost เป็น:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
และแก้ไข/etc/apache2/ports.confและเพิ่มListen 8080ด้านล่างบรรทัดListen 80
ตอนนี้เราสามารถเปิดใช้งานไฟล์ conf virtualhost เริ่มต้นที่ทำงานบนพอร์ต 80 เนื่องจากไดเรกทอรี example.com ใช้พอร์ต 8080 เป็น sudo a2ensite 000-default.conf
sudo service apache2 restartตอนนี้เริ่มต้นใหม่หรือโหลดเซิร์ฟเวอร์ที่มีคำสั่ง ตอนนี้ทั้งสองไดเรกทอรีสามารถเข้าถึงได้จากlocalhostและlocalhost:8080