วิธีเปิดใช้งานไซต์ทั้งหมดจะต้องใช้ a2ensite (ขณะส่งผ่าน 000-default.conf && default-ssl.conf)


11

ฉันใช้เซิร์ฟเวอร์ Ubuntu 16.04.2 กับ Apache2 ซึ่งฉันเก็บเว็บไซต์ส่วนตัวของฉัน

ต้องการเปิดใช้งาน conf ไฟล์ทั้งหมดของฉันภายใต้/etc/apache2/sites-available(นอกเหนือจาก000-default.confและssl-default.conf) ผมไปและดำเนินการ/var/www/htmla2ensite

จากนั้นฉันก็บอกว่า:

Your choices are: 
000-default default-ssl domain.tld1 domain.tld2 domain.tld3 domain.tld4 
Which site(s) do you want to enable (wildcards ok)?

จากนั้นฉันCtrl+ ได้ตั้งCเป้าที่จะดำเนินการอย่างอื่น

ฉันกำลังมองหาวิธีเปิดใช้งานไซต์ทั้งหมดโดยอัตโนมัติโดยไม่ต้องแจ้งให้ทราบล่วงหน้า --- ฉันแค่ต้องการเรียกใช้คำสั่งที่จะเปิดใช้งานไซต์ทั้งหมดที่ฉันเพิ่มเข้ามาเอง

คำตอบ:


18

อาจใช้เพียงค้นหาในไดเรกทอรีกำหนดค่าของคุณ

find /etc/apache2/sites-available/ -type f -and -not -name "*default*" -exec a2ensite {} \;

นี่จะค้นหาไฟล์การกำหนดค่าทั้งหมดของคุณที่ไม่มี "ค่าเริ่มต้น" ในชื่อและเปิดใช้งาน


1
คุณควรค้นหาไฟล์ที่มี*.confนามสกุล หรือมิฉะนั้น a2ensite จะบ่นว่าเว็บไซต์นั้นไม่มีอยู่จริง
Dan

@ ไม่จำเป็นเนื่องจากเรากำลังค้นหาในไดเรกทอรี conf
Ziazis

ฉันเดาว่าวิธีนี้ก็ดีโดยหลักการเมื่อสร้าง Nginx Sblocks และไม่เพียง แต่สำหรับ Apache Vhosts

8

คุณต้องไปที่/etc/apache2/sites-availableแล้วเรียกใช้คำสั่ง:

sudo a2ensite *

มันจะเปิดใช้งานไซต์ทั้งหมดในไดเรกทอรี (ไฟล์ควรมีบางอย่างเช่น xxx.conf)

แล้วโหลด apache sudo service apache2 reloadอีกครั้งโดยใช้

ดังนั้นลำดับคำสั่งของคุณควรเป็นดังนี้:

cd /etc/apache2/sites-available
sudo a2ensite *
sudo service apache2 reload

นอกจากนี้ยังเปิดใช้งานไฟล์ conf default-ssl.conf... สิ่งนี้ชัดเจนจากผลลัพธ์Enabling site default-ssl.

คุณสามารถใช้dpkg -Sเพื่อดูว่าไฟล์การกำหนดค่ามาจากแพ็คเกจหรือไม่
muru

1

ว่าสิ่งที่ตั้งปัจจุบันของเราคือไม่มีคำสั่งจะพยายามที่จะเปิดใช้งานไฟล์การตั้งค่าทั้งหมดที่วางในsudo a2ensite "*.conf"/etc/apache2/sites-available/

ต่อไปเราสามารถใช้a2dissite 000-default.conf default-ssl.confเพื่อปิดใช้งานการกำหนดค่าเริ่มต้นของ Apache แล้วเราสามารถใช้systemctl restart apache2.serviceเพื่อเริ่มต้นใหม่

เราสามารถเรียกใช้สิ่งนี้เหมือนคำสั่งเดียว:

sudo bash -c "a2ensite '*.conf' && a2dissite 000-default.conf default-ssl.conf && systemctl restart apache2.service"

ยิ่งกว่านั้นเราสามารถสร้างคำสั่งที่กำหนดเองผ่านฟังก์ชั่นใน bash:

function a2ensites {
        sudo bash -c "a2ensite '*.conf' && a2dissite 000-default default-ssl && systemctl restart apache2.service"
}
export -f a2ensites

ตอนนี้เรามีคำสั่งที่ออกแบบมาเพื่อทำงานนี้ ที่จะทำให้คำสั่งนี้อย่างถาวรเราจะต้องวางสายข้างต้นลงในด้านล่างของไฟล์แล้วมัน สคริปต์อย่างง่ายถัดไปจะทำให้งานนี้สำเร็จ:a2ensites~/.bashrcsource

 printf "\nfunction a2ensites { \n\tsudo bash -c \"a2ensite '*.conf' && a2dissite 000-default.conf default-ssl.conf && systemctl restart apache2.service\" \n}\nexport -f a2ensites\n" | tee -a $HOME/.bashrc; source $HOME/.bashrc

บรรทัดแรกไม่เป็นความจริง *สัญลักษณ์แทนจะถูกขยายก่อนที่มันจะได้รับการส่งผ่านไปยังa2ensiteคำสั่งในกรณีของฉัน sudo a2ensite "*.conf"แต่งานนี้
Dan

สวัสดี @Dan ในกรณีของฉัน (Ubuntu 16.04.2) มันทำงานได้อย่างถูกต้องโดยไม่มีคำพูด อย่างไรก็ตามฉันได้อัพเดตคำตอบแล้ว คุณช่วยตรวจสอบได้ว่าa2ensite '*.conf'ระบบของคุณทำงานถูกต้องหรือไม่?
pa4080

1
ใช่มันใช้งานได้ฉันอยู่ใน Ubuntu 17.04 btw
ด่าน

0

การดำเนินการa2ensite /var/www/html/*/จะทำให้ Apache เปิดใช้งานแต่ละไซต์ที่มีชื่อเดียวกันไซต์

ในฐานะที่เป็นผลข้างเคียงก็จะพยายามจับคู่ไซต์ที่ไม่ตรงกับไฟล์ไซต์ conf ตามที่คาดการณ์ไว้จากผลลัพธ์ต่อไปนี้ แต่ฉันคิดว่าสิ่งนี้สามารถละเว้นได้อย่างปลอดภัย:

ERROR: Site /var/www/html/domain.tld1 does not exist!
ERROR: Site /var/www/html/domain.tld2 does not exist!
ERROR: Site /var/www/html/nice_directory does not exist!
ERROR: Site /var/www/html/nice_file does not exist!

คุณอาจต้องรีสตาร์ท Apache หลังจากเปิดใช้งานไฟล์ conf:

systemctl restart apache2.service

1
ฉันไม่แน่ใจ แต่ทำไมการกำหนดค่าไซต์ของคุณในโฟลเดอร์ webroot ลองใช้/etc/apache2/sites-availableโฟลเดอร์เพื่อกำหนดค่าสำหรับเว็บไซต์ของคุณ เมื่อคุณเปิดใช้งานพวกเขาผ่านทาง a2ensite /etc/apache2/sites-enabledพวกเขามีการเชื่อมโยงโดยอัตโนมัติใน สิ่งที่คุณกำลังทำอยู่ในขณะนี้เป็นสิ่งที่แปลกและทุกคนที่สามารถเข้าถึงเว็บเซิร์ฟเวอร์ของคุณสามารถดูการกำหนดค่าของคุณ?
Ziazis

สวัสดี @Ziazis ฉันไม่เข้าใจจริง ๆ ทำไมคุณถึงถามฉันว่า "ทุกคนที่สามารถเข้าถึงเว็บเซิร์ฟเวอร์ของคุณสามารถดูการกำหนดค่าของคุณ" ฉันเป็นคนเดียวที่ใช้เซิร์ฟเวอร์ หากฉันไม่ใช่ผู้ใช้รายอื่นมักจะไม่สามารถเข้าถึงรูทเอกสารได้ อย่างไรก็ตามคุณช่วยอธิบายได้ไหมว่าทำไมคุณถึงถามอย่างนั้นและอะไรที่คุณคิดผิด?

ฉันไม่แน่ใจว่าคุณใช้เว็บเซิร์ฟเวอร์นี้เพื่ออะไร อย่างไรก็ตามหากนี่เป็นระบบถ่ายทอดสดที่มีการเข้าถึงซึ่งบุคคลที่สามสามารถเข้าถึงได้คุณไม่ต้องการให้ไฟล์การกำหนดค่าของคุณอยู่ใน/var/www/htmlนั้นเนื่องจากเป็น DocumentRoot ของdefault.html-Site ดังนั้นในกรณีของคุณคุณดูเหมือนจะใช้การกำหนดค่าที่นั่น ... มันเหมือนกับการกินด้วยปากที่เปิดอยู่อย่าทำอย่างนั้น ;-)
Ziazis

ฉันไม่เข้าใจ คุณคิดว่าฉันใส่ไฟล์ conf ไว้ในรูทเอกสารหรือไม่ เพราะฉันไม่ได้ คุณแนะนำให้ฉันวางพวกเขาที่นั่น? ฉันต้องการหลีกเลี่ยง ... ฉันแค่ต้องการเปิดใช้งานทั้งหมดที่ไม่ใช่ค่าเริ่มต้น 000 และค่าเริ่มต้น ssl BTW ฉันใช้เว็บเซิร์ฟเวอร์เพื่อจัดเก็บเว็บไซต์ส่วนตัวของฉัน

อ่าเข้าใจแล้ว - คุณตั้งชื่อ RootDirectories ทั้งหมดของคุณเหมือนกับไฟล์ปรับแต่งของคุณ และที่นี่ฉันคิดว่าคุณเปลี่ยนการตั้งค่า apache2 /var/www/htmlเป็นโฟลเดอร์การกำหนดค่าของคุณ Nvm แล้ว สิ่งที่คุณต้องการจริงๆเพียงแค่find ./ -type f -and -not -name "*default*" -exec a2ensite {} \;
Ziazis

0

คัดลอกวางบรรทัดต่อไปนี้ในชื่อไฟล์ apache_enable.sh

cd /etc/apache2/sites-available/
a2ensite *
service apache2 reload

และให้คำสั่ง read + execute apache_enable.shและเรียกใช้สคริปต์โดยใช้ผู้ใช้รูท


0

ย้ายการกำหนดค่าเริ่มต้นไปยังโฟลเดอร์อื่นจากนั้น * ควรใช้งานได้ตามที่คุณต้องการ

ไปที่โฟลเดอร์ "sites-available" เนื่องจากใช้ได้เฉพาะในโฟลเดอร์นี้

cd / etc / apache2 / sites-available /

sudo a2ensite *

การทดสอบ


AFAIK คุณสามารถทำได้จากทุกที่ในระบบเมื่อคุณบันทึกรูทเป็น / var / www / html

ส่วนที่สำคัญคือโฟลเดอร์ / etc / apache2_or_other / sites จากนั้นรากเอกสารจะถูกเชื่อมโยงในการกำหนดค่านั้น คุณสามารถรูทได้ใน / usr / share / htlm และมันจะไม่เปลี่ยนแปลงอะไรนอกจากถ้าคุณไม่ได้เขียนมันในไฟล์ conf ฉันสามารถอยู่ที่ใดก็ได้ในเซิร์ฟเวอร์ของฉันตราบใดที่ไฟล์ conf อยู่ในโฟลเดอร์ที่ไซต์ a2ensite จะใช้งานได้
Carobell

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