403 kesalahan setelah memutakhirkan ke apache2.4

34

Setelah memutakhirkan dari server Ubuntu 13.04, halaman www tidak akan ditampilkan sendiri.

Kesalahan 403 Dilarang Anda tidak memiliki izin untuk mengakses / di server ini.

Saya telah mengubah kontrol akses menghemat dari apache2.2 ke apache2.4, tetapi itu tidak berhasil. Apa lagi yang bisa saya lakukan?

pengguna205336
sumber

Jawaban:

59

Apa yang terjadi adalah bahwa sintaks file konfigurasi di apache2.4 telah berubah.

Sumber: Ini telah terjadi pada saya juga setelah saya upgrade ke 13.10

file conf

Semua file yang ada di /etc/apache2/conf.ddalamnya harus dipindahkan ke /etc/apache2/conf-available.

Mereka sekarang bekerja dengan cara sitesdan modspekerjaan yang sama. Cukup masukkan file conf Anda di conf-availablefolder dan aktifkan yang Anda inginkan a2enconf <config-file-name>.

Contoh:

Saya punya file conf.d/httpd.confyang memiliki direktif ServerName.
Untuk membuatnya bekerja, saya harus memindahkannya ke conf-availabledirektori dan mengaktifkannya secara manual.

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

file situs

Sebelumnya, file dalam /etc/apache2/sites-availabletidak memiliki ekstensi. Sebagai contoh /etc/apache2/sites-available/default. Sekarang .confekstensi diperlukan.

Contoh:

Jika sudah /etc/apache2/sites-available/some-site, dalam 13,04 Anda cukup mengaktifkannya menggunakan sudo a2ensite some-site. Sekarang itu akan memberi Anda kesalahan mengatakan

GALAT: Situs beberapa situs tidak ada!

Untuk memperbaikinya, tambahkan a .confke semua file konfigurasi Anda di sites-available. Anda dapat melakukan hal yang sama sites-enabled, atau Anda dapat menghapus semua file dan mengaktifkannya kembali secara manual.
Saya sarankan melakukannya secara manual karena Anda mungkin perlu memperbaiki setiap VHost (langkah berikutnya).

sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;

jika Anda memutuskan untuk melakukannya secara manual:

sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name

Arahan Host Virtual:

allow / deny vs Require

Jika Anda memiliki yang berikut:

<Directory /path/to/your/site/>
    order allow,deny
    allow from all
</Directory>

Itu harus menjadi:

<Directory /path/to/your/site/>
    Require all granted
</Directory>

Untuk info lebih lanjut, periksa komentar oleh DaveRandom pada jawaban di Stack Overflow.

Sederhananya, jika Anda memutakhirkan ke apache2.4 dan tetap menggunakan httpd.confapache2.2 lama , izinkan arahan tetap berfungsi dengan baik. Jika Anda upgrade Anda httpd.conf(yang saya akan menyarankan), Anda akan mendapatkan 403 kesalahan sampai Anda mengubah Order/ Allow/ Denyarahan untuk setara mereka Require.

Opsi Direktori

Jika Anda memiliki pilihan Directory, catatan bahwa mereka semua harus didahului dengan +atau -atau tidak satupun dari mereka sama sekali. Campuran keduanya tidak diizinkan:

Contoh:

Ini diperbolehkan:

<Directory /path/to/your/site/>
    Options +Indexes +FollowSymLinks -MultiViews
</Directory>

Begitu juga ini (Perhatikan bahwa contoh-contoh ini tidak keduanya melakukan hal yang sama, yang sebelumnya menonaktifkan MultiViewsopsi, yang berikutnya tidak):

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks MultiViews
</Directory>

Ini tidak lagi diizinkan:

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks -MultiViews
</Directory>

Opsi konfigurasi terakhir akan melempar kesalahan sintaks yang mengatakan:

Semua Opsi harus dimulai dengan + atau -, atau tanpa Opsi.

Mulai ulang apache

Setelah semuanya selesai, Anda perlu me-restart server apache Anda agar perubahan diterapkan:

 sudo apache2ctl restart

Anda dapat menemukan panduan upgrade terperinci dari 2,2 ke 2,4 pada dokumentasi resmi.

Dan
sumber
1
Di sistem saya, tidak ada httpd.conffile, atau conf.ddirektori. Tapi ada apache2.conffile. Saya mencoba memindahkannya ke conf-availabledirektori, dan mendapatkan kesalahan berikut ketika saya me-restart apache2: apache2: Tidak dapat membuka file konfigurasi /etc/apache2/apache2.conf: Tidak ada file atau direktori seperti itu - Apa alasannya?
Amal Murali
@AmalMurali Itu httpd.confhanya sebuah contoh. Ada kemungkinan bahwa Anda tidak akan memiliki file konfigurasi di conf.ddirektori, dalam hal ini, lewati saja langkah itu. Adapun apache2.conf, itu tidak boleh dipindahkan ke conf-availabledirektori. Ini adalah file konfigurasi utama dari apache, dan pathnya harus /etc/apache2/apache2.conf dan tidak boleh diubah.
Dan
1
Wow. Ini adalah satu-satunya gambaran umum yang dapat ditemukan di mana saja. Terima kasih.
Russ Bateman
tidak ada config.datau sites availablefolder. lihat semua file konfigurasi di sini: imgur.com/WczXp3v
diEcho
1
@ EdwardBlack Mungkin ada alasan lain jika Anda masih menggunakan virtual host default seperti yang dijelaskan dalam jawaban dari pertanyaan berikut: Apache virtualhosts tidak lagi berfungsi setelah pembaruan ke 13.10
Dan
0

Saya berasumsi bahwa situs web berjalan di server Ubuntu Anda.

Periksa httpd.conf Anda untuk memastikan pengaturan DocumentRoot Anda menunjuk ke tempat yang tepat.

Periksa izin file pada folder yang dirujuk oleh DocumentRoot dapat dibaca oleh pengguna yang menjalankan server web.

Periksa Anda memiliki index.html / index.htm dll yang sesuai dan bahwa server web tidak mencoba melakukan daftar direktori.

Mat
sumber
0

Saya mengalami masalah yang sama.

Saya tidak dapat menjalankan apache 2.4 kecuali saya menggunakan 'Allow from All', ini menjengkelkan karena saya ingin memberikan jeda bersih dari versi <2.4. Setelah banyak percobaan dan kesalahan dan banyak pencarian, saya melihat referensi untuk access_compat dan menyadari bahwa ini ada hanya untuk kompatibilitas. Meskipun dokumentasi apache mengatakan bahwa keduanya dapat digunakan, ia merekomendasikan Anda untuk tidak menggunakannya.

Saya menghapus modul ini dari file load / etc / sysconfig / apache2, ini segera menyelesaikan masalah saya.

Salam Liam

Liam O Donnell
sumber
-1

Saya melayani file dari direktori non-standar sehingga untuk membuat pekerjaan upgrade saya harus mengedit /etc/apache2/apache2.conf dan menambahkan: Opsi Indeks FollowSymLinks AllowOverride Tidak Perlu Membutuhkan semua yang diberikan

Setelah ini, dan perubahan yang disarankan di atas, kesalahan 403 hilang.

kupy pupy
sumber