Sitede a2ensite hatası yok


275

Aşağıdaki kod ile cmsplus.devaltında var /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>

Şimdi kullandığımda sudo /usr/sbin/a2ensite cmsplus.devhatayı alıyorum,

ERROR: Site cmsplus.dev does not exist!

Web sunucum Apache/2.4.6 (Ubuntu)

bu sorunu nasıl çözeriz?

Yanıtlar:


577

.confSite yapılandırma dosyalarına uzantı ekleyerek sorunu çözdüm .

Apache a2ensitesonuçları:

Hata! Site Mevcut Değil

Sorun; Bir siteyi aşağıdakileri kullanarak etkinleştirmeye çalışırken hatayı bulduysanız:

sudo a2ensite example.com

ama geri döner:

Hata: example.com mevcut değil

a2ensite sadece biten dosya adlarıyla çalışan bir Perl betiğidir .conf

Bu nedenle, benim ayar dosyasını yeniden adlandırmak zorunda example.comiçin example.com.confaşağıdaki gibi elde edilebileceği gibi:

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

başarı


25
Tuhaf! Bu, Ubuntu 12.04 ve 12.10'da uzantı olmadan iyi çalışırdı.
FloatingRock

Benim için de aynı. Gibi diyor Guilherme apache2.conf ubuntu veya Apache sürümleri arasında değişti.
Nicolas Zozol

7
Alternatif olarak sadece apache.conf dosyasını düzenleyebileceğinize inanıyorum. İlgili satır "IncludeOptional sites özellikli / *. Conf" dir. Sonundaki .conf dosyasını kaldırın, 12.04'te işe yarayan işe geri döneceksiniz. Bu Debian'ın Ubuntu'ya damlattığı bir değişiklik olabileceğini düşünüyorum, ama emin değilim.
Josiah

2
Bu neden 3. cevap veriyor? Bunu yapmanın doğru yolu budur.
Niş


91

Muhtemelen Ubuntu kurulumunuzu güncellediniz ve güncellemelerden biri Apache'nin 2.4.x sürümüne yükseltilmesini içeriyordu.

Apache 2.4.x dosyasında, / etc / apache2 / sites-available dizininde bulunan vhost yapılandırma dosyalarının .conf uzantısı olmalıdır.

Terminal (mv komutu) kullanarak mevcut tüm yapılandırma dosyalarınızı yeniden adlandırın ve .conf uzantısını hepsine ekleyin.

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

"İzin reddedildi" hatası alırsanız, terminal komutlarınızın önüne "sudo" ekleyin.

Yapılandırma dosyalarında başka değişiklik yapmanız gerekmez.

Hayaletleri etkinleştirin:

a2ensite cmsplus.dev.conf

Ardından Apache'yi yeniden yükleyin:

service apache2 reload

Siteleriniz şimdi çalışır durumda olmalıdır.


GÜNCELLEME: bahsedilebilir burada sadece * .conf içer ayarlarını değiştirmiş yüklü olduğunu, bir Linux dağıtımı. Bu nedenle Apache 2.2 veya 2.4 ile ilgisi yoktur.


28

Başka bir iyi yol var, apache2.confsonunda dosyayı düzenleyin.

IncludeOptional siteler etkin / *. Conf

sadece .confsonunda kaldırın , bunun gibi

IncludeOptional siteler etkin / *

ve sunucuyu yeniden başlatın.

(Bunu güncellediğimde sadece Ubuntu 13.10'da denedim.)


1
Hmm ... Bunu Ubuntu 14.04'te denedim ve işe yaramadı. .confYine de, yapılandırma dosyalarına ekleme yapıldı .
Clifton Labrum

garip, benim ubuntu 12.04 13.10 (ben istemeden apache yapılandırma dosyaları yerine çünkü) güncellediğimde bu hatayı vardı. 14.04 güncellemesinde değiştirmemeyi hatırladım ve herhangi bir sorunla karşılaştım.
Guilherme

Bu gerçekten iyi bir yol değil. Sitelerin etkin olduğu dosyalar, kullanılabilir siteler altındaki karşılık gelen dosyalara bağlanır ve yalnızca siteyi devre dışı bırakmak için kaldırılmalıdır.
Dokbua

8

Ben de aynı problemi yaşadım. Apache.conf ile ilgisi olmadığını söyleyebilirim.

a2ensite değişmiş olmalıdır - satır 532, .conf sonekini uygulayan satırdır:

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

Bunu şu şekilde değiştirirseniz:

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

... herhangi bir sonek olmadan çalışacaktır.

Elbette a2ensite komut dosyasını değiştirmek istemezsiniz, ancak conf dosyasının sonekini değiştirmek doğru yoldur.

Muhtemelen sadece ".conf" -ekffix'ini uygulamanın bir yoludur.



7

Yani .. en hızlı yolu yeniden adlandırmak ".conf" ile biten site yapılandırma adları

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

a2ensite mysite.conf

önceki yorumlarla ilgili diğer notlar:

  • IncludeOptional, apache 2.36'ya kadar tanıtılmadı - yukarıdaki değişikliği yapmak ve 2.2'de yeniden başlatmak sunucunuzu aşağıda bırakacak!

  • Ayrıca, sürüm 2.2 a2ensite açıklandığı gibi saldırıya uğramaz

sitelerinizdeki dosya aslında bir yapılandırma dosyası olduğundan, yine de bu şekilde adlandırılmalıdır.


Genelde yok (web sunucuları hizmet tiplerinden olan) hizmetlerini yeniden başlatın:

  • millet koşmuyorsa onları bulamaz! MS Windows değil Linux düşünün ..

Sunucular yıllarca çalışabilir - canlı güncelleme, yeniden yapılandırma yapılandırması vb.

Bulut, bir yapılandırma dosyası yüklemek için yeniden başlatmanız gerektiği anlamına gelmez.

  • Bir hizmetin yapılandırmasını değiştirirken "yeniden başlat" değil "yeniden yükle" seçeneğini kullanın.

  • yeniden başlatma ardından hizmeti durdurur hizmetini başlatır - yapılandırma için değişimde herhangi bir sorun varsa, hizmet olmaz yeniden başlatın.

  • yeniden yükleme bir hata verecektir, ancak hizmet asla kapanmaz ve yalnızca kötü sözdizimi olabilecek yapılandırma hatasını düzeltmek için bir şans verir.

debian veya ubunto [bu konu için service-name apache2]

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

diğer os'lar okuyucu için bir excersize olarak kaldı.


5

.confYapılandırma dosyasına ekledikten sonra çalıştım


2

Ubuntu Server sürümünü 12.04 LTS'den 14.04 LTS'ye yükselttim.

Aslında, yukarıda belirtildiği gibi, Apache 2.4.x için .conf uzantısı, siteler tarafından kullanılabilir dizinde bulunan web siteleri vhost dosyalarına ihtiyaç duymaktadır.

Bu soruyu okumadan önce, sunucuda neler olup bittiğine dair bir ipucu yoktu.

Oldukça güzel bir çözüm.

Özetle Terminal'de şu adımları uyguladım:

1) Sitelerin etkin olduğu klasöre erişin

$ cd /etc/apache2/sites-enabled

2) a2dissite komutu kullanımdan kaldırılmış dosyalarla (.conf olmadan) çalışmadığından, yayınlanan eski web sitesi dosyalarını kaldırın

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

3) .conf ekleyerek uzantısını değiştirerek web sitesi vhost dosyalarını yeniden adlandırın

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

4) Yeni ve doğru vhost dosyasını yeniden yayınlayın

$ sudo a2ensite mywebsite.conf

5) Tarayıcıda web sitesini kontrol edin ve eğlenin! :)


1

Ubuntu 14.04.3 ve Apache 2.4.7 ile benim durumumda, sorun site2.conf'u kullanılabilir yapmak için site1.conf'u kopyaladım ve kopyalayarak bir şeyler oldu ve iş parçacığında açıklanan hata ile a2ensite site2.conf yapamadım. .

Benim için çözüm, site2.conf'u site2 olarak yeniden adlandırmak ve sonra da site2'yi site2.conf olarak yeniden adlandırmaktı. Ondan sonra sitem2.conf sitemini atabildim.


1

Buradaki durumun farkında değilim ama birisine yardım edebilir.

/ Etc / apache2 / sites'de conf dosyasını yanlışlıkla etkinleştirip oluşturmadığınızı bir kez daha kontrol edin. Aynı hatayı alıyorsunuz.


-2

Böyle dene ..

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>

ve / etc / hosts dosyasına giriş ekleyin

127.0.0.1 www.cmsplus.dev

apache'yi yeniden başlat ..


Şimdi bana It worksayarlar yerine varsayılan sayfayı veriyor .
devo

Birden fazla sanal ana bilgisayar yapılandırmanız var mı? Tüm dosya içeriğini gönderebilir misiniz?
Balaji Perumal

3
Teşekkürler, yalnızca .confbu site yapılandırma dosyalarına uzantı ekleyerek bu sorunu çözdü .
devo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.