วิธีที่เหมาะสมในการเปลี่ยนไดเรกทอรีหรือเรียกใช้จากหลายไดเรกทอรีภายใต้พอร์ตที่แตกต่างกันสำหรับ 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>
ฉันได้ลบบรรทัดที่ไม่สำคัญออกจากไฟล์ด้านบนเพื่อความกระชับ นี่คือเส้นทางไปยังไดเรกทอรีที่ไฟล์เว็บไซต์ที่มีที่จะให้บริการเช่นDocumentRoot
index.html
สร้างไดเรกทอรีที่คุณต้องการให้บริการไฟล์เช่น; mkdir example.com
และเจ้าของการเปลี่ยนแปลงและกลุ่มเริ่มต้นของไดเรกทอรีสำหรับเช่นถ้าเข้าสู่ระบบในชื่อผู้ใช้สิทธิ์การเปลี่ยนแปลงเป็นubuntu
sudo chown ubuntu:www-data example.com
นี้ถือเป็นการเข้าถึงเต็มรูปแบบให้กับผู้ใช้และช่วยให้การอ่านและการดำเนินการเข้าถึงกลุ่มubuntu
www-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