A2ensite ile tüm site confs nasıl etkinleştirilir (000-default.conf && default-ssl.conf üzerinden geçerken)?


12

Kişisel web sitelerimi sakladığım Apache2 ile Ubuntu sunucusu 16.04.2'yi kullanıyorum.

Altında tüm conf dosyalarını etkinleştirmek için /etc/apache2/sites-available(yanında 000-default.confve ssl-default.conf) ben gittim /var/www/htmlve idam a2ensite.

Daha sonra bana söylendi:

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)?

Daha sonra Ctrl+ Cbaşka bir şey yürütmeyi hedefledim.

Belirli bir yere dikkat etmeden tüm site confs otomatik olarak etkinleştirmek için bir yol arıyorum --- Ben sadece kendim eklediğim tüm site confs sağlayacak bir komut çalıştırmak istiyorum.

Yanıtlar:


19

Konfigürasyon dizininizde sadece find'ı kullanabilirsiniz.

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

Bu, adlarında "varsayılan" olmayan tüm yapılandırma dosyalarınızı bulur ve bunları etkinleştirir.


1
*.confUzantısı olan dosyaları da aramalısınız. A2ensite, sitenin mevcut olmadığından şikayet eder
Dan

@ Conf dizininde arama yaptığımız için gerekli değildir.
Ziazis

Sanırım bu yöntem de ilke olarak, sadece Apache Vhosts için değil, Nginx Sblocks oluştururken de iyidir.

9

/etc/apache2/sites-availableKomutu bulup çalıştırmanız gerekiyor :

sudo a2ensite *

Dizindeki tüm siteleri etkinleştirir. (dosyalar xxx.conf gibi bir şey olmalıdır)

Ve sonra apache'yi kullanarak yeniden yükleyin sudo service apache2 reload.

Komut diziniz şöyle olmalıdır:

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

Bu aynı zamanda conf dosyasını etkinleştirir default-ssl.conf... Bu çıktıdan anlaşılırEnabling site default-ssl.

dpkg -SYapılandırma dosyasının bir paketten olup olmadığını görmek için kullanabilirsiniz .
muru

1

Geçerli konumumuz ne olursa olsun, komut sudo a2ensite "*.conf"yerleştirilen tüm yapılandırma dosyalarını etkinleştirmeye çalışır /etc/apache2/sites-available/.

Daha a2dissite 000-default.conf default-ssl.confsonra varsayılan Apache yapılandırmalarını devre dışı bırakmak için kullanabiliriz ve ardından systemctl restart apache2.serviceyeniden başlatmak için kullanabiliriz .

Tüm bunları tek bir komut gibi çalıştırabiliriz:

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

Dahası, bash fonksiyonuyla özel bir komut oluşturabiliriz:

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

Şimdi bu işi yapmak için tasarlanmış komuta sahibiz . Bu komutu kalıcı hale getirmek için, yukarıdaki satırları dosyanın altına ve sonra da yerleştirmeliyiz. Sonraki basit komut dosyası bu görevi yerine getirecek: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

İlk satır doğru değil. *O geçirilen hale geçmeden joker genişletilmiş ediliyor a2ensitebenim durumumda komuta. Ancak, bu işe yarıyor sudo a2ensite "*.conf".
Dan

Merhaba, @ Dan, benim durumumda (Ubuntu 16.04.2) tırnak olmadan düzgün çalışıyor. Ancak cevabı güncelledim. a2ensite '*.conf'Sisteminizde doğru çalışıp çalışmadığını kontrol edebilir misiniz ?
pa4080

1
Evet, ben Ubuntu 17.04 btw.
Dan

0

Yürütme a2ensite /var/www/html/*/, Apache'nin site dir ile aynı ada sahip her siteyi etkinleştirmesini sağlar .

Bir yan etkisi olarak, aşağıdaki çıktıdan tahmin edildiği gibi site conf dosyaları için eşleşmeyen site dizinlerini eşleştirmeye çalışacaktır, ancak bunun güvenli bir şekilde göz ardı edilebileceğini düşünüyorum:

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!

Conf dosyalarını etkinleştirdikten sonra muhtemelen Apache'yi yeniden başlatmanız gerekecektir:

systemctl restart apache2.service

1
Emin değilim, ancak site yapılandırmanız neden webroot klasöründe? /etc/apache2/sites-availableSiteleriniz için yapılandırmalar için klasörü kullanmayı deneyin . Bunları a2ensite üzerinden etkinleştirdiğinizde, otomatik olarak bağlantı kurulur /etc/apache2/sites-enabled. Şu anda ne yaptığınız oldukça garip ve web sunucunuza erişimi olan herkes yapılandırmalarınıza bakabilir mi?
Ziazis

Merhaba @Ziazis. Gerçekten anlamıyorum, neden bana "web sunucunuza erişimi olan herkes yapılandırmalarınıza bakabilir?" Sunucuyu kullanan tek kişi benim; Eğer olmasaydım, genellikle diğer kullanıcıların belge köküne erişimi olmazdı. Her neyse, lütfen bunu neden istediğini ve tam olarak neyi yanlış bulduğunu açıklayabilir misin?

Bu web sunucusunu ne için kullandığınızdan emin değilim. Ancak bu, üçüncü bir kişi tarafından erişilebilen erişime sahip canlı bir sistemse, yapılandırma dosyalarınızın -Site'nin /var/www/htmlDocumentRoot'u olduğundan yalan söylemesini istemezsiniz default.html. Yani sizin durumunuzda oradaki konfigürasyonları çalıştırıyor gibisiniz ... Açık bir ağızla yemek gibi, bunu yapma ;-).
Ziazis

Anlamıyorum. Conf dosyalarını belge köküne koyduğumu mu düşünüyorsun? Çünkü yapmadım. Onları oraya koymamı önerir misin? Bundan kaçınmak istiyorum ... Sadece 000-default ve default-ssl olmayan hepsini etkinleştirmek istiyorum. BTW, kişisel web sitelerimi saklamak için web sunucusunu kullanıyorum.

Ah, anladım - tüm RootDirectories'inizi yapılandırma dosyalarınızla aynı şekilde adlandırdınız. Burada apache2 yapılandırmanızı /var/www/htmlconfig klasörünüz olarak değiştirdiğinizi düşündüm . Nvm o zaman. Aslında ihtiyacınız olan sadece birfind ./ -type f -and -not -name "*default*" -exec a2ensite {} \;
Ziazis

0

aşağıdaki satırları dosya adına yapıştır apache_enable.sh

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

apache_enable.shroot kullanıcısını kullanarak komut dosyasına read + execute komutunu verin ve çalıştırın


0

Varsayılan yapılandırmaları başka bir klasöre taşıdığınızda, * istediğiniz gibi çalışacaktır.

Yalnızca bu klasörde çalıştığı için "sites-available" klasörüne gidin.

cd / etc / apache2 / mevcut siteler /

sudo a2ensite *

test edilmiş


AFAIK, kök / / var / www / html olduğunu belgelediğinizde bunu sistemin herhangi bir yerinden yapabilirsiniz?

Önemli olan bölüm / etc / apache2_or_other / sites-available klasörüdür. Belge kökü daha sonra bu yapılandırmada bağlanır. Kökünüz / usr / share / htlm içinde olabilir ve conf dosyasına yazmamış olsanız da hiçbir şey değişmez. Conf dosyaları sitelerde kullanılabilir klasörde olduğu sürece sunucumda herhangi bir yerde olabilirim a2ensite işini yapacak.
Carobell

İlk seçenek test edilmediğinden
cevabımı düzenledi
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.