Ubuntu 13.04 sunucusundan yükselttikten sonra, www sayfaları kendilerini göstermez.
Hata 403 Yasak Bu sunucuya erişim izniniz / yok.
Erişim kontrolünü apache2.2'den apache2.4'e değiştirdim ama bu işe yaramadı. Başka ne yapabilirim?
Ubuntu 13.04 sunucusundan yükselttikten sonra, www sayfaları kendilerini göstermez.
Hata 403 Yasak Bu sunucuya erişim izniniz / yok.
Erişim kontrolünü apache2.2'den apache2.4'e değiştirdim ama bu işe yaramadı. Başka ne yapabilirim?
Yanıtlar:
Olan, apache2.4'teki yapılandırma dosyalarının sözdiziminin değişmiş olmasıdır.
Kaynak: 13.10'a yükselttikten sonra bu da başıma geldi.
İçindeki tüm dosyalar /etc/apache2/conf.d
taşınmalıdır /etc/apache2/conf-available
.
Şimdi aynı şekilde çalışıyorlar sites
ve mods
çalışıyorlar. Sadece conf dosyalarınızı conf-available
klasöre yerleştirin ve istediğiniz dosyayı etkinleştirin a2enconf <config-file-name>
.
conf.d/httpd.conf
ServerName yönergesine sahip bir dosyam vardı.
Bu işi yapmak için conf-available
dizine taşımalı ve manuel olarak etkinleştirmeliydim.
sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd
Önceden, içindeki dosyaların /etc/apache2/sites-available
uzantısı yoktu. Örneğin /etc/apache2/sites-available/default
. Şimdi bir .conf
uzantı gerekiyor.
Eğer olsaydı /etc/apache2/sites-available/some-site
, 13.04 yılında sadece kullanarak etkinleştirebilirsiniz sudo a2ensite some-site
. Şimdi size söyleyerek bir hata verecektir
HATA: Sitede bazı siteler mevcut değil!
Bunu düzeltmek için .conf
, içindeki tüm config dosyalarınıza bir a ekleyin sites-available
. Aynısını sites-enabled
yapabilirsiniz veya tüm dosyaları silebilir ve her birini el ile yeniden etkinleştirebilirsiniz.
Her VHost'u düzeltmeniz gerektiğinden (sonraki adım) muhtemelen bunları manuel olarak yapmanızı öneririm.
sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;
bunları el ile yapmaya karar verdiyseniz:
sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name
Eğer aşağıdakilere sahipseniz:
<Directory /path/to/your/site/>
order allow,deny
allow from all
</Directory>
Olması gerekir:
<Directory /path/to/your/site/>
Require all granted
</Directory>
Daha fazla bilgi için, kontrol yorumlarla tarafından DaveRandom bir de cevap Yığın taşması.
Basitçe söylemek gerekirse, apache2.4'e yükselttiyseniz ve apache2.2'nin eski kalmasını httpd.conf
sağladıysanız, yönergenin çalışmaya devam etmesine izin verin. Yükseltmenizi httpd.conf
(önerdiğim) yükselttiyseniz , Order
/ Allow
/ Deny
direktiflerini eşdeğerlerine çevirene kadar 403 hata alırsınız Require
.
Dizin seçenekleriniz varsa, hepsinin bir +
veya daha fazlasıyla önceden hazırlanmaları gerektiğini unutmayın -
. Her ikisinin bir karışımına izin verilmez:
Buna izin verilir:
<Directory /path/to/your/site/>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
Öyleyse şuna dikkat edin (Bu örneklerin ikisinin de aynı şeyi yapmadığına dikkat edin, birincisi MultiViews
seçeneği devre dışı bırakır, birincisi yapmaz):
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks MultiViews
</Directory>
Buna artık izin verilmiyor:
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks -MultiViews
</Directory>
Son yapılandırma seçeneği şöyle bir sözdizimi hatası atar:
Tüm Seçeneklerin + veya - ile başlaması gerekir, yoksa Seçenek de olmayabilir.
Her şey yapıldıktan sonra, değişikliklerin geçerli olması için apache sunucunuzu yeniden başlatmanız gerekir:
sudo apache2ctl restart
Resmi belgelerde 2.2'den 2.4'e kadar detaylı bir yükseltme kılavuzu bulabilirsiniz .
httpd.conf
sadece bir örnekti. Dizinde hiçbir yapılandırma dosyasına sahip olmamanız mümkündür, conf.d
bu durumda, sadece bu adımı atlayın. Gelince apache2.conf
, conf-available
dizine taşınmamalı . Apache'nin ana yapılandırma dosyasıdır ve yolu /etc/apache2/apache2.conf olmalıdır ve değiştirilmemelidir.
Web sitelerinin Ubuntu sunucunuzda çalıştığını farz ediyorum.
DocumentRoot ayarınızın doğru yere yapıldığından emin olmak için httpd.conf dosyanızı kontrol edin.
DocumentRoot tarafından başvurulan klasördeki dosya izinlerini, web sunucusunun çalıştığı kullanıcı tarafından okunabilir.
Uygun bir index.html / index.htm vb. Olup olmadığını ve web sunucusunun bir dizin listesi yapmaya çalışmadığını kontrol edin.
Benzer problemlerle karşılaştım.
'Tümünden İzin Ver' seçeneğini kullanmadığım sürece apache 2.4'ü çalıştıramadım, bu sürüm <2.4 sürümlerinden temiz bir mola vermek istediğim için can sıkıcıydı. Çok fazla deneme yanılma ve arama yaptıktan sonra, access_compat için bir referans buldum ve bunun sadece uyumluluk için orada olduğunu anladım. Apache belgeleri her ikisinin de kullanılabileceğini söylese de, kullanmamanızı tavsiye eder.
Bu modülü / etc / sysconfig / apache2 load dosyasından kaldırdım, derhal sorunumu çözdüm.
Saygılarımla Liam
Yükseltme çalışmasını sağlamak için standart olmayan bir dizindeki dosyaları sunuyorum /etc/apache2/apache2.conf dosyasını düzenlemek ve eklemek zorunda kaldım: Seçenekler Dizinler IndexSymLinks AllowOverride Yok Tümü ver
Bundan sonra ve yukarıda önerilen değişiklikler yapıldıktan sonra 403 hatası ortadan kalktı.
httpd.conf
dosya veyaconf.d
dizin yok. Ama birapache2.conf
dosya var.conf-available
Dizine taşımayı denedim ve apache2'yi yeniden başlattığımda aşağıdaki hatayı aldım: apache2: /etc/apache2/apache2.conf yapılandırma dosyası açılamadı: Böyle bir dosya veya dizin yok - Sebebi ne olabilir?