Mengapa Apache saya tidak berfungsi setelah memutakhirkan ke Ubuntu 14.04?

36
[aman@aman-Inspiron-1440:~$ apache2
[Mon Apr 21 17:36:38.019213 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Mon Apr 21 17:36:38.019345 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Mon Apr 21 17:36:38.019370 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Mon Apr 21 17:36:38.019385 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Mon Apr 21 17:36:38.019414 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.028756 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029032 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029056 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}

Ini adalah isi /etc/apache2/apache2.conffile.

Amandeep Singh
sumber
3
Ini tidak berfungsi karena Anda memiliki kesalahan Sintaks pada baris 74 pada /etc/apache2/apache2.conf . Harap unggah konten file itu untuk melihat apa yang salah.
Lucio
2
Mencari google sejak kemarin,
Amandeep Singh
mengunggah file di: pastebin.ubuntu.com/7298873
Amandeep Singh
Ditemukan: askubuntu.com/questions/448944/…
Amandeep Singh
Apakah saya perlu memindahkan / var / www ke / var / www / html ??
Amandeep Singh

Jawaban:

31

Saya punya masalah ini: Penyebabnya ada di file

/etc/apache2/sites-available/000-default.conf 

di mana root telah berubah:

sebelum peningkatan = /var/www
setelah peningkatan =/var/www/html

Jadi edit untuk memodifikasi file ini

sudo gedit /etc/apache2/sites-available/000-default.conf

Dan restart apache

sudo service apache2 restart
TrackGmao
sumber
Karena ini adalah masalah yang mungkin dihadapi OP, ini bukanlah masalah yang ia hadapi saat ini. Bagaimanapun, seperti yang saya jelaskan dalam jawaban ini , saya tidak merekomendasikan untuk mengedit 000-default.conffile.
Dan
Ini berfungsi setelah pindah ke / var / www / html
Amandeep Singh
2
+1 Saya juga tidak bisa mengetahuinya. Kamulah orangnya!
gion_13
2
Dalam kasus saya, saya masih mengalami masalah ini dan htmlsubfolder sudah ada, yang dalam kasus saya sebenarnya tidak relevan karena semua situs saya menggunakan VirtualHosts
jhbsk
4
Ini tidak mungkin jawabannya! Kesalahan di atas tidak terkait dengan DocumentRootpengaturan.
Reinier Post
50

Saya memiliki masalah ini meskipun apache bekerja untuk saya. Saya hanya ingin melakukan yang cepat

$ /usr/sbin/apache2 -V

untuk menemukan nilai SERVER_CONFIG_FILE. Karena itu bukan cara untuk memulai apache2 lagi gagal dengan kesalahan posting OP. Solusi yang cepat dan kotor adalah dengan mengatur envvars yang hilang terlebih dahulu:

$ source /etc/apache2/envvars
$ /usr/sbin/apache2 -V

Ini menetapkan variabel APACHE_LOCK_DIR dan semuanya baik-baik saja ( -D SERVER_CONFIG_FILE="apache2.conf").

jalur
sumber
1
Ini berhasil untuk saya. Masalah yang sama, Apache berjalan dan beroperasi, namun apache2 -Sgagal berjalan . Semua sudah diperbaiki.
Twisty
Aneh. Ini sepertinya tidak berhasil untuk saya. Masuk akal mengapa harus demikian .
Tyler Crompton
@TylerCrompton - Bagaimana bisa gagal? Apa kesalahannya?
jalur
Tidak ada bedanya. Saya masih mengalami masalah yang dimiliki OP. Berjalan apache2sebagai root memperbaiki masalah.
Tyler Crompton
4
Alternatif yang lebih mudah:apache2ctl -V
Reinier Post
14

Gejala dan solusinya

Di banyak situs web atau forum tanya jawab, orang bingung gejala dan penyebab sebenarnya. Saya baru saja memutakhirkan server ubuntu dari 13.10 menjadi 14.04.1 dan mengalami gejala yang sama persis seperti yang dijelaskan oleh OP, termasuk:
1- apache yang tampaknya tidak berfungsi. 2- variabel konfigurasi apache tidak terdefinisi. 3- kesalahan sintaks yang disebutkan oleh OP.

Masalahnya adalah bahwa tidak semua gejala ini benar-benar cocok dengan masalah yang sebenarnya dan mereka hanya berfungsi sebagai pengalih perhatian bagi mereka yang mencoba yang terbaik untuk membantu.

Masalah root yang berbeda dapat menyebabkan administrator datang ke situs seperti ini dengan deskripsi yang kira-kira sama: "Saya memutakhirkan OS dan sekarang apache tidak berfungsi ..."

Satu penyebab spesifik

Dengan semua gejala yang tampak sama persis seperti OP, saya tertarik pada pertanyaan ini. Sayangnya, satu-satunya jawaban yang berisi petunjuk yang valid ke akar penyebab masalah saya adalah downvoted (-1), diposting oleh user1469291 dengan perwakilan 1 !! Jadi saya mencari lebih jauh situs web lain sampai saya menemukan penjelasan yang jelas tentang masalahnya (dan dengan demikian solusinya).

Solusi berikut mungkin tidak memecahkan masalah OP yang sebenarnya, tapi saya yakin itu akan membantu orang lain yang tertarik dengan pertanyaan ini karena alasan yang sama seperti saya.

/etc/apache2/apache2.conf berisi:

# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

yang berarti bahwa hanya file konfigurasi situs di / etc / apache2 / situs-enabled / diakhiri dengan .conf yang akan dimuat. Symlink yang lebih lama di direktori itu akan diabaikan.

Dulu hanya situs-enabled / *. Itu sebabnya semua file konfigurasi virtual host saya yang saya beri nama ww1.example.com, ww2.example.com, dll, dulu berfungsi tetapi tiba-tiba dan awalnya tidak dapat dijelaskan berhenti bekerja setelah peningkatan.

Jadi, ubah direktif di atas dan muat ulang apache, atau, seperti yang saya lakukan, secara manual menghapus semua symlink yang lebih lama di situs yang diaktifkan /, ganti nama semua file di situs yang tersedia / untuk menambahkan akhiran .conf dan kemudian aktifkan kembali masing-masing situs secara individual.

Selain itu, arahan default di apache.conf lebih ketat:

<Directory />
  Options FollowSymLinks
  AllowOverride None
  Require all deny
</Directory>
<Directory /var/www/>
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>

Jadi, jika Anda meng-host situs virtual Anda di / home / user / suatu tempat, pastikan untuk mengesampingkan arahan dengan tepat.

augustin
sumber
1
Ini jawaban yang bagus. Terbaik untuk memahami perubahan sebelum bergegas dan mengeluh bahwa semuanya tidak berfungsi dengan benar.
MikeNGarrett
1
Terima kasih untuk ini, saya tidak menyadari mengganti nama file tidak menghapus symlink dari situs-enabled.
Benno
Ini tidak memberikan solusi.
Reinier Post
6

Melihat dari dekat masalah Anda, Anda hanya berlari apache2. Untuk memulai apache di Ubuntu, jalankan perintah berikut:

sudo apache2ctl start

Konfigurasi Apache dibagi menjadi beberapa file, salah satunya adalah variabel lingkungan. Ketika Anda menjalankan hanya apache2, variabel-variabel ini tidak diatur.

Script apache2ctl akan memuat variabel (dan melakukan beberapa hal lain juga saat diperlukan) sebelum memulai apache apache2 -k start.

Dan
sumber
1
#sudo apache2ctl mulai httpd (pid 1390) sudah berjalan
Amandeep Singh
Jadi apa masalah yang Anda alami?
Dan
@AmandeepSingh: coba sudo apache2ctl restartsaja.
scheffield
1
@scheffield Mencoba perintah ini beberapa kali. Masalahnya adalah karena perubahan lokasi folder root di versi baru Apache dari / var / www ke / var / www / html. Saya memindahkan semua file ke subfolder / html & berhasil.
Amandeep Singh
4

Edit konfigurasi sudo leafpad /etc/apache2/apache2.conf::

# Include the virtual host configurations:

#before upgrade = 
IncludeOptional sites-enabled/*
#after upgrade = 
/IncludeOptional sites-enabled/*.conf

atau hapus file.

Mauro Leites
sumber
+1. Jawabannya diturunkan, tetapi berisi solusi untuk masalah banyak administrator yang dapat mengunjungi pertanyaan ini.
augustin
2

jawaban augustin bekerja untuk saya ketika semua host virtual saya menghilang setelah upgrade server dari 12,04 LTS ke 14,04 LTS. Saya akan mengangkatnya jika saya memiliki reputasi untuk melakukannya.

Perintah berikut akan menambahkan .confsuffix ke semua symlink /etc/apache2/sites-enabledyang belum memilikinya:

sudo find /etc/apache2/sites-enabled -type l ! -name '*.conf' -exec rename 's/$/.conf/' {} \;

Selain itu, ada perubahan dari penggunaan Allow from/ Deny fromsintaks ke Requiredalam modul mod_authz_host (di sini adalah tautan untuk dokumentasi 2.2).

Perintah berikut akan mengedit penggunaan umum yang Order allow, denydiikuti oleh Allow from allmenjadi Require all granted:

perl -0777 -pi.bak -e 's/Order\s+allow\s*,\s*deny\s*\n\s*Allow\s+from\s+all/Require all granted/sg' /etc/apache2/sites-available/* 
TobyLL
sumber
1

Bahkan, dokumen tidak berubah antara tepat dan dapat dipercaya dari / var / www ke / var / www / html. Sangat buruk bahwa skrip do-release-upgrade tidak mundur kembali ke dokumen.

A) Keduanya valid, tetapi html lebih konvensional. CentOS berpengaruh dalam hal ini. Halaman "ini berfungsi" juga lebih dewasa sekarang.

B) Anda tidak harus menggunakan / var / www / html, tetapi jika Anda melakukannya ...

  • Anda perlu memigrasikan konten Anda atau alias (tidak disarankan).
  • Anda perlu memperbarui di mana saja lokasi lama direferensikan.
  • terutama skrip backup / restore / kustomisasi.

C) Dan mungkin lebih mudah untuk membangun dari bawah ke atas dan bermigrasi.

D) Gejala ini akan terjadi jika Anda "sudo apache2 -k anggun" di luar kotak pada Trusty, upgrade atau tidak karena para utusan tidak berada dalam ruang lingkup? Gunakan "sudo apache2ctl start / stop / restart" sebagai gantinya.

mckenzm
sumber
0

Dalam hal ini:

  • The htmlsubfolder di /var/www/sudah ada tapi masih saya mendapatkan error:AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf
  • Saya sudah memutuskan untuk meng-host situs web saya di root pengguna saya, /home/{user}/sites/bukannya standar/var/www/html
  • Saya menggunakan Apache 2.4.7 (Anda dapat memeriksa versinya dengan apache2 -v)

Bagaimana saya memecahkan masalah dalam lima langkah mudah:

  1. Dalam /etc/apache2/apache2.confsaya menambahkan berikut setelah baris 169:

    <Directory /home/{user}/sites/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
  2. Saya memastikan konfigurasi Virtual Host saya yang bernama website.confat /etc/apache2/sites-availabletelah disalin dari default 000-default.conf, dan tampak seperti:

    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName website.dev
        ServerAlias www.website.dev
        DocumentRoot /home/{user}/sites/website
    </VirtualHost>
    
  3. Saya memuat ulang situs saya ( sudo a2dissite website && sudo a2ensite website) dan server saya dan kesalahan awal hilang. WOO HOO! Tetapi yang baru muncul: "AH00035: akses ke / ditolak (jalur sistem file '/ home / {pengguna} / situs') karena izin pencarian tidak ada pada komponen jalur". Ini saya selesaikan di langkah 4.

  4. Masalah baru adalah karena izin, jadi saya hanya mengatur masing-masing direktori yang mengarah ke websitefolder chmod 755. Setiap! The homefolder, yang {user} folder, folder situs, dan bahkan folder website saya

  5. Setelah menyegarkan browser saya di website.devsemuanya dimuat dengan baik!

PS Saya sudah menyiapkan website.devdi /etc/hostsfile saya .

Tip Bonus: Untuk memeriksa izin folder tertentu Anda dapat menggunakan perintah stat -c %a /path/to/file/or/folder. Untuk memeriksa izin setiap bagian dari penggunaan direktori namei -m /path/to/final/folder.

jhbsk
sumber