Apache2.4'e yükselttikten sonra 403 hatası


34

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:


59

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.

conf.d dosyaları

İçindeki tüm dosyalar /etc/apache2/conf.dtaşınmalıdır /etc/apache2/conf-available.

Şimdi aynı şekilde çalışıyorlar sitesve modsçalışıyorlar. Sadece conf dosyalarınızı conf-availableklasöre yerleştirin ve istediğiniz dosyayı etkinleştirin a2enconf <config-file-name>.

Örnek:

conf.d/httpd.confServerName yönergesine sahip bir dosyam vardı.
Bu işi yapmak için conf-availabledizine taşımalı ve manuel olarak etkinleştirmeliydim.

sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd

site dosyaları

Önceden, içindeki dosyaların /etc/apache2/sites-availableuzantısı yoktu. Örneğin /etc/apache2/sites-available/default. Şimdi bir .confuzantı gerekiyor.

Örnek:

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-enabledyapabilirsiniz 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

Sanal Konak direktifleri:

izin ver / reddet vs Gerektir

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.confsağladıysanız, yönergenin çalışmaya devam etmesine izin verin. Yükseltmenizi httpd.conf(önerdiğim) yükselttiyseniz , Order/ Allow/ Denydirektiflerini eşdeğerlerine çevirene kadar 403 hata alırsınız Require.

Dizin Seçenekleri

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:

Örnek:

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 MultiViewsseç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.

Apache'yi yeniden başlat

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 .


1
Sistemimde httpd.confdosya veya conf.ddizin yok. Ama bir apache2.confdosya var. conf-availableDizine 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?
Amal Murali

@AmalMurali Bu httpd.confsadece bir örnekti. Dizinde hiçbir yapılandırma dosyasına sahip olmamanız mümkündür, conf.dbu durumda, sadece bu adımı atlayın. Gelince apache2.conf, conf-availabledizine taşınmamalı . Apache'nin ana yapılandırma dosyasıdır ve yolu /etc/apache2/apache2.conf olmalıdır ve değiştirilmemelidir.
Dan

1
Vay. Bu pratikte, her yerde bulunabilecek tek net bakış. Teşekkürler.
Russ Bateman,

config.dveya sites availableklasör yok . burada tüm config dosyalarına bakınız: imgur.com/WczXp3v
diEcho

1
@EdwardBlack Aşağıdaki sorunun cevaplarında açıklandığı gibi hala varsayılan sanal ana bilgisayarı kullanıyorsanız başka bir neden daha olabilir: Apache
Dan

0

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.


0

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


-1

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ı.

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.