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.d
dalamnya harus dipindahkan ke /etc/apache2/conf-available
.
Mereka sekarang bekerja dengan cara sites
dan mods
pekerjaan yang sama. Cukup masukkan file conf Anda di conf-available
folder dan aktifkan yang Anda inginkan a2enconf <config-file-name>
.
Contoh:
Saya punya file conf.d/httpd.conf
yang memiliki direktif ServerName.
Untuk membuatnya bekerja, saya harus memindahkannya ke conf-available
direktori 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-available
tidak memiliki ekstensi. Sebagai contoh /etc/apache2/sites-available/default
. Sekarang .conf
ekstensi 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 .conf
ke 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.conf
apache2.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
/ Deny
arahan 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 MultiViews
opsi, 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.
httpd.conf
file, atauconf.d
direktori. Tapi adaapache2.conf
file. Saya mencoba memindahkannya keconf-available
direktori, 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?httpd.conf
hanya sebuah contoh. Ada kemungkinan bahwa Anda tidak akan memiliki file konfigurasi diconf.d
direktori, dalam hal ini, lewati saja langkah itu. Adapunapache2.conf
, itu tidak boleh dipindahkan keconf-available
direktori. Ini adalah file konfigurasi utama dari apache, dan pathnya harus /etc/apache2/apache2.conf dan tidak boleh diubah.config.d
atausites available
folder. lihat semua file konfigurasi di sini: imgur.com/WczXp3vSaya 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.
sumber
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
sumber
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.
sumber