ไซต์ไม่มีข้อผิดพลาดสำหรับ a2ensite


275

ฉันมีcmsplus.devภายใต้/etc/apache2/sites-availableรหัสต่อไปนี้

<VirtualHost *:80>
    ServerAdmin master@server.com
    ServerName www.cmsplus.dev
    ServerAlias cmsplus.dev

    DocumentRoot /var/www/cmsplus.dev/public

    LogLevel warn
    ErrorLog /var/www/cmsplus.dev/log/error.log
    CustomLog /var/www/cmsplus.dev/log/access.log combined
</VirtualHost>

ตอนนี้เมื่อฉันใช้sudo /usr/sbin/a2ensite cmsplus.devฉันได้รับข้อผิดพลาด

ERROR: Site cmsplus.dev does not exist!

เว็บเซิร์ฟเวอร์ของฉัน Apache/2.4.6 (Ubuntu)

วิธีแก้ปัญหานี้

คำตอบ:


577

แก้ไขปัญหาโดยเพิ่ม.confส่วนขยายไปยังไฟล์การกำหนดค่าไซต์

Apache ให้a2ensiteผลลัพธ์ใน:

ข้อผิดพลาด! ไซต์ไม่มีอยู่

ปัญหา; หากคุณพบข้อผิดพลาดขณะพยายามเปิดใช้งานไซต์โดยใช้:

sudo a2ensite example.com

แต่มันกลับมา:

ข้อผิดพลาด: example.com ไม่มีอยู่

a2ensite เป็นเพียงสคริปต์ Perl ที่ทำงานกับชื่อไฟล์ที่ลงท้ายด้วยเท่านั้น .conf

ดังนั้นฉันต้องเปลี่ยนชื่อไฟล์การตั้งค่าของฉันexample.comเพื่อexample.com.confเป็นอาจจะทำได้ดังนี้:

mv /etc/apache2/sites-available/example.com /etc/apache2/sites-available/example.com.conf

ความสำเร็จ


25
แปลก! สิ่งนี้เคยทำงานได้ดีโดยไม่มีส่วนขยายใน Ubuntu 12.04 และ 12.10
FloatingRock

เหมือนกับฉัน. อย่างที่บอกว่า Guilherme apache2.conf เปลี่ยนไประหว่างรุ่นของ Ubuntu หรือ Apache
Nicolas Zozol

7
เป็นทางเลือกฉันเชื่อว่าคุณสามารถแก้ไขไฟล์ apache.conf บรรทัดที่เกี่ยวข้องคือ "เว็บไซต์ที่เปิดใช้งาน IncludeOptional / *. conf" ลบ .conf ที่ส่วนท้ายและคุณจะกลับไปใช้งานได้ใน 12.04 ฉันคิดว่านี่อาจเป็นการเปลี่ยนแปลง Debian ได้ทำสิ่งนี้ให้กับ Ubuntu แต่ฉันไม่แน่ใจ
โจไซยา

2
เหตุใดคำตอบนี้จึงเป็นข้อ 3 นี่เป็นวิธีที่ถูกต้องในการทำ
Nish

ฉันเลิกไปแล้วหลังจากเปลี่ยนแปลงทุกอย่างไปมาก ... ฉันจะจำไว้ว่าให้เพิ่มนามสกุล .conf ต่อจากนี้ไป ...
wtf8_decode

91

คุณอาจจะอัปเดตการติดตั้ง Ubuntu ของคุณและหนึ่งในการอัพเดตนั้นรวมถึงการอัพเกรด Apache เป็นเวอร์ชั่น 2.4.x

ใน Apache 2.4.x ไฟล์การกำหนดค่า vhost ที่อยู่ในไดเร็กทอรี / etc / apache2 / sites-available จะต้องมีนามสกุล .conf

ใช้เทอร์มินัล (คำสั่ง mv) เปลี่ยนชื่อไฟล์การกำหนดค่าที่มีอยู่ทั้งหมดของคุณและเพิ่มนามสกุล. conf ให้กับไฟล์ทั้งหมด

mv /etc/apache2/sites-available/cmsplus.dev /etc/apache2/sites-available/cmsplus.dev.conf

หากคุณได้รับข้อผิดพลาด "ปฏิเสธสิทธิ์" ให้เพิ่ม "sudo" ต่อหน้าคำสั่งเทอร์มินัลของคุณ

คุณไม่จำเป็นต้องทำการเปลี่ยนแปลงอื่นใดกับไฟล์การกำหนดค่า

เปิดใช้งาน vhost:

a2ensite cmsplus.dev.conf

จากนั้นโหลด Apache อีกครั้ง:

service apache2 reload

เว็บไซต์ของคุณควรเปิดใช้งานแล้ว


UPDATE: ดังที่กล่าวไว้ในที่นี้การกระจาย Linux ที่คุณติดตั้งเปลี่ยนการกำหนดค่าเป็นรวม * .conf เท่านั้น ดังนั้นจึงไม่มีอะไรเกี่ยวข้องกับ Apache 2.2 หรือ 2.4


28

มีอีกวิธีที่ดีเพียงแก้ไขไฟล์ที่apache2.confมีในตอนท้าย

รวมเว็บไซต์ที่เปิดใช้งาน / conf

เพิ่งลบ.confท้ายที่สุดเช่นนี้

รวมเว็บไซต์ที่เปิดใช้งานเป็นตัวเลือก / *

และรีสตาร์ทเซิร์ฟเวอร์

(ฉันพยายามทำสิ่งนี้เฉพาะใน Ubuntu 13.10 เมื่อฉันอัปเดต)


1
อืม ... ฉันลองสิ่งนี้บน Ubuntu 14.04 แต่มันไม่ทำงาน แต่การเพิ่ม.confลงในไฟล์ปรับแต่งทำได้
Clifton Labrum

แปลกฉันมีข้อผิดพลาดนี้เมื่อฉันอัปเดตอูบุนตู 12.04 เป็น 13.10 (เพราะฉันแทนที่ไฟล์ apache config โดยไม่ได้ตั้งใจ) ในการอัปเดต 14.04 ฉันจำไม่ได้ว่าจะมาแทนที่และฉันมีปัญหาใด ๆ
Guilherme

นี่ไม่ใช่วิธีที่ดีจริงๆ ไฟล์ภายใต้ไซต์ที่เปิดใช้งานคือ symlink ไปยังไฟล์ที่เกี่ยวข้องภายใต้ไซต์ที่พร้อมใช้งานและควรถูกลบออกเพื่อปิดการใช้งานเว็บไซต์ซึ่งในความเป็นจริงแล้วสิ่งที่ a2dissite ทำ a2ensite เปิดใช้งานไซต์ตามลำดับ
Dokbua

8

ฉันมีปัญหาเดียวกัน ฉันว่ามันไม่มีส่วนเกี่ยวข้องกับ apache.conf

a2ensite ต้องมีการเปลี่ยนแปลง - 532 บรรทัดเป็นบรรทัดที่บังคับใช้คำต่อท้าย. config:

else {
    $dir    = 'sites';
    $sffx   = '.conf';
    $reload = 'reload';
}

หากคุณเปลี่ยนเป็น:

else {
    $dir    = 'sites';
    #$sffx   = '.conf';
    $sffx   = '';
    $reload = 'reload';
}

... มันจะทำงานโดยไม่มีคำต่อท้าย

แน่นอนคุณไม่ต้องการเปลี่ยนสคริปต์ a2ensite แต่การเปลี่ยนคำต่อท้ายไฟล์ conf เป็นวิธีที่ถูกต้อง

อาจเป็นเพียงวิธีการบังคับใช้ ".conf" -suffix


ดูคำถามนี้ด้วย: askubuntu.com/questions/362682/…
cslotty

7

ดังนั้น .. วิธีที่เร็วที่สุดคือเปลี่ยนชื่อไซต์กำหนดค่าที่ลงท้ายด้วย ".conf"

mv /etc/apache2/sites-available/mysite /etc/apache2/sites-available/mysite.conf

a2ensite mysite.conf

หมายเหตุอื่น ๆ เกี่ยวกับความคิดเห็นก่อนหน้า:

  • ไม่รวมถึงตัวเลือกจนกว่า apache 2.36 - การเปลี่ยนแปลงด้านบนตามด้วยการรีสตาร์ทใน 2.2 จะทำให้เซิร์ฟเวอร์ของคุณไม่ทำงาน!

  • อีกทั้งเวอร์ชัน 2.2 a2ensite ไม่สามารถแฮ็คได้ตามที่อธิบายไว้

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


โดยทั่วไปไม่ต้องเริ่มบริการใหม่ (webservers เป็นบริการประเภทหนึ่ง):

  • คนไม่สามารถหาพวกเขาหากพวกเขาไม่ได้ทำงาน! คิดว่า linux ไม่ใช่ MS Windows ..

เซิร์ฟเวอร์สามารถทำงานเป็นเวลาหลายปี - อัปเดตสดโหลดการกำหนดค่า ฯลฯ

คลาวด์ไม่ได้หมายความว่าคุณต้องรีสตาร์ทเพื่อโหลดไฟล์กำหนดค่า

  • เมื่อเปลี่ยนการกำหนดค่าของบริการให้ใช้ "reload" ไม่ใช่ "restart"

  • รีสตาร์ทหยุดบริการจากนั้นเริ่มบริการ - หากมีปัญหาใด ๆ ในการเปลี่ยนแปลงการกำหนดค่าบริการจะไม่รีสตาร์ท

  • การรีโหลดจะให้ข้อผิดพลาด แต่บริการไม่เคยปิดตัวลงทำให้คุณมีโอกาสแก้ไขข้อผิดพลาดการกำหนดค่าซึ่งอาจเป็นไวยากรณ์ที่ไม่ดีเท่านั้น

debian หรือ ubunto [service-name สำหรับเธรดนี้คือ apache2]

service {service-name} {start} {stop} {reload} ..

ด้านซ้ายของระบบปฏิบัติการอื่น ๆ เป็น excersize สำหรับผู้อ่าน



2

ฉันเพิ่งอัพเกรดรุ่น Ubuntu Server จาก 12.04 LTS เป็น 14.04 LTS

แน่นอนดังกล่าวข้างต้นส่วนขยาย. conf เป็น Apache 2.4.x จำเป็นสำหรับไฟล์ vhost ของเว็บไซต์ที่อยู่ในไดเรกทอรีที่มีอยู่ในเว็บไซต์

ก่อนที่จะอ่านคำถามนี้ฉันไม่ได้รู้เลยว่าเกิดอะไรขึ้นกับเซิร์ฟเวอร์

ทางออกที่ดีงาม

เพียงสรุปฉันได้ทำตามขั้นตอนต่อไปนี้ใน Terminal:

1) เข้าถึงโฟลเดอร์ที่เปิดใช้งานไซต์

$ cd /etc/apache2/sites-enabled

2) เนื่องจากคำสั่ง a2dissite จะไม่ทำงานกับไฟล์ที่เลิกใช้ (โดยไม่ต้อง. conf) ลบไฟล์เว็บไซต์เก่าที่เผยแพร่

$ sudo rm <my-old-website-without-.conf>

3) เปลี่ยนชื่อไฟล์เว็บไซต์ vhost เปลี่ยนนามสกุลเพิ่ม. conf เป็น end

$ sudo mv /etc/apache2/sites-available/mywebsite /etc/apache2/sites-available/mywebsite.conf

4) เผยแพร่ไฟล์ vhost ใหม่และถูกต้อง

$ sudo a2ensite mywebsite.conf

5) ตรวจสอบเว็บไซต์บนเบราว์เซอร์และสนุก! :)


1

ในกรณีของฉันกับ Ubuntu 14.04.3 และ Apache 2.4.7 ปัญหาคือว่าฉันคัดลอก site1.conf เพื่อให้สามารถใช้ได้ site2.conf และโดยการคัดลอกบางอย่างเกิดขึ้นและฉันไม่สามารถ a2ensite site2.conf กับข้อผิดพลาดที่อธิบายไว้ในเธรด .

ทางออกสำหรับฉันคือเปลี่ยนชื่อ site2.conf เป็น site2 จากนั้นเปลี่ยนชื่อ site2 เป็น site2.conf อีกครั้ง หลังจากนั้นฉันสามารถ a2ensite site2.conf


1

ฉันรู้ว่านั่นไม่ใช่กรณีที่นี่ แต่มันอาจช่วยใครซักคน

ตรวจสอบอีกครั้งว่าคุณไม่ได้สร้างไฟล์ conf ใน / etc / apache2 / sites-enabled โดยไม่ได้ตั้งใจ คุณได้รับข้อผิดพลาดเดียวกัน


-2

ลองแบบนี้ ..

NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin master@server.com
    ServerName www.cmsplus.dev
    ServerAlias cmsplus.dev

    DocumentRoot /var/www/cmsplus.dev/public

    LogLevel warn
    ErrorLog /var/www/cmsplus.dev/log/error.log
    CustomLog /var/www/cmsplus.dev/log/access.log combined
</VirtualHost>

และเพิ่มรายการใน / etc / hosts

127.0.0.1 www.cmsplus.dev

รีสตาร์ท apache ..


ตอนนี้มันให้It worksหน้าเริ่มต้นแก่ฉันแทนการตั้งค่า
devo

คุณมีการกำหนดค่าโฮสต์เสมือนหลายรายการหรือไม่ คุณสามารถโพสต์เนื้อหาไฟล์ทั้งหมดได้หรือไม่
Balaji Perumal

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