Apache neden Ubuntu 14.04'e yükselttikten sonra çalışmıyor?


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}

Bu/etc/apache2/apache2.conf dosyanın içeriğidir .


3
Çalışmıyor çünkü /etc/apache2/apache2.conf dosyasının 74. satırında bir Sözdizimi hatası var . Lütfen neyin yanlış olduğunu görmek için o dosyanın içeriğini yükleyin.
Lucio

2
Dünden beri google aranıyor
Amandeep Singh



/ Var / www 'yi / var / www / html' e taşımam gerekiyor mu?
Amandeep Singh

Yanıtlar:


31

Bu sorunu yaşadım: Nedeni dosyada

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

Kökün değiştiği yer:

yükseltmeden önce = yükseltmeden /var/www
sonra =/var/www/html

Yani bu dosyayı değiştirmek için düzenleyin

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

Ve apache'yi yeniden başlat

sudo service apache2 restart

Bu, OP'nin karşılaşabileceği bir sorun olduğu için, şu anda yaşadığı sorun bu değil. Her iki durumda da, bu cevapta açıkladığım gibi , 000-default.confdosyayı düzenlemeyi önermiyorum .
Dan

/ Var / www / html
adresine

2
+1 Bunu da çözemedim. Sen adamsın!
gion_13

2
Benim durumumda hala bu sorunu yaşıyorum ve htmlalt klasör zaten benim durumumda tüm siteleri VirtualHosts kullandıkları için aslında alakasız olan var
jhbsk

4
Cevap bu olamaz! Yukarıdaki hatanın DocumentRootayar ile ilgisi yoktur .
Reinier Post

50

Apache benim için çalışıyor olsa da bu sorunu yaşadım. Sadece hızlıca yapmak istedim

$ /usr/sbin/apache2 -V

değerini bulmak için SERVER_CONFIG_FILE. Çünkü apache2'yi başlatmanın yolu bu değil, OP'nin gönderdiği hatalarla başarısız oluyor. Çabuk ve kirli bir geçici çözüm, ilk önce eksik olan envvarları ayarlamaktır:

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

Bu APACHE_LOCK_DIR değişkenini ayarlar ve her şey yolunda ( -D SERVER_CONFIG_FILE="apache2.conf").


1
Bu benim için çalıştı. Aynı sorun, Apache çalışıyor ve çalışıyordu ancak koşarken apache2 -Sbaşarısız oldu. Hepsi düzeltildi.
Bükülen

Garip. Bu benim için işe yaramadı. Neden olsa gerektiği konusunda mantıklı .
Tyler Crompton

@TylerCrompton - Nasıl başarısız oldu? Hata neydi?
şerit

Hiç farketmedi. OP’de yaşanan sorunu hala yaşıyordum. Koşu apache2kök olsa sorunu giderildi olarak.
Tyler Crompton

4
Daha kolay bir alternatif:apache2ctl -V
Reinier Post

14

Belirtileri ve çözümü

Birçok soru ve cevap web sitesi veya forumunda insanlar belirtileri ve gerçek sebepleri karıştırıyor. Bir ubuntu sunucuyu 13.10’dan 14.04.1’e yükselttim ve OP’de tarif edilenlerle aynı belirtilerle karşılaştım:
1- apache görünüşe göre çalışmıyor. 2 - apache yapılandırma değişkeni tanımsız. 3- OP tarafından belirtilen sözdizimi hatası.

Sorun şu ki, bu semptomların hepsi asıl soruna aslında hitap etmiyor ve sadece yardım etmek için ellerinden gelenin en iyisini yapanların dikkatini dağıtıyor.

Farklı kök sorunları, yöneticilerin buna benzer sitelere neredeyse aynı açıklamalarla gelmesine neden olabilir: "İşletim sistemini yükselttim ve şimdi de apache çalışmıyor ..."

Özel bir sebep

OP ile aynı görünen semptomların hepsine sahipken, bu soruya ilgi çektim. Ne yazık ki, sorunumun gerçek kök nedeni için geçerli bir ipucu içeren tek cevap, kullanıcı oyunda (14), 114 bir kullanıcı ile yayınlandı (-1). Bu yüzden, problemin (ve dolayısıyla çözümün) net bir açıklamasını bulana kadar başka web sitelerini de aradım.

Aşağıdaki çözüm OP'nin asıl sorununu çözmeyebilir, ancak eminim ki bu soruya benimkine benzer nedenlerle çekebilecek diğerlerine de yardım edecek.

/etc/apache2/apache2.conf şunları içerir:

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

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

bu, yalnızca / etc / apache2 / sites etkin / biten .conf içindeki site yapılandırma dosyalarının yükleneceği anlamına gelir. Bu dizindeki eski sembolik bağlantı dikkate alınmayacaktır.

Basitçe siteler etkindi / *. Bu yüzden ww1.example.com, ww2.example.com, vb. Adında adlandırdığım tüm sanal ana bilgisayar konfigürasyon dosyalarım çalışıyordu, ancak aniden ve başlangıçta yükseltmeden sonra çalışmayı bıraktılar.

Bu nedenle, yukarıdaki yönergeyi değiştirin ve apache'yi yeniden yükleyin ya da benim yaptığım gibi, siteler etkin / adresindeki tüm eski simgeleri manuel olarak kaldırın /, siteler kullanılabilir / içindeki tüm dosyaları yeniden adlandırın. Son ekini ekleyin. tek tek site.

Ek olarak, apache.conf dosyasındaki varsayılan yönergeler daha katıdır:

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

Bu nedenle, sanal sitelerinizi / home / user / bir yerde barındırıyorsanız, yönergeyi uygun şekilde geçersiz kıldığınızdan emin olun.


1
Bu iyi bir cevap. Acele etmeden ve değişiklikleri doğru yapmadığından şikayet etmeden önce değişiklikleri anlamak en iyisidir.
MikeNGarrett

1
Bunun için teşekkürler, dosyayı yeniden adlandırmak, sitelerin etkin olduğu sembolik bağlantıyı kaldırmadı.
Benno

Bu bir çözüm sağlamaz.
Reinier Post

6

Sorunun yakından bakıldığında, sadece çalışan apache2. Apache'yi Ubuntu'da başlatmak için aşağıdaki komutu çalıştırın:

sudo apache2ctl start

Apache yapılandırması birden fazla dosyaya bölünmüştür, bu dosyalardan biri ortam değişkenleridir. Sadece koşarken apache2, bu değişkenler ayarlanmaz.

Apache2ctl betiği, apache ile başlamadan önce değişkenleri yükler (ve gerektiğinde de başka şeyler yapar) apache2 -k start.


1
#sudo apache2ctl httpd'yi başlattı (pid 1390) zaten çalışıyor
Amandeep Singh

Peki o zaman yaşadığınız sorun nedir?
Dan

@AmandeepSingh: deneyin sudo apache2ctl restartyerine.
scheffield

1
@scheffield Bu komutu birkaç defa denedi. Sorun Apache'nin yeni sürümündeki kök klasör konum değişikliği nedeniyle / var / www / / var / www / html idi. Tüm dosyaları bir alt klasöre taşıdım / html ve işe yaradı.
Amandeep Singh

4

Yapılandırmayı düzenleyin sudo leafpad /etc/apache2/apache2.conf::

# Include the virtual host configurations:

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

veya dosyayı kaldırın.


+1. Cevap reddedildi, ancak bu soruyu ziyaret edebilecek birçok yönetici sorununun çözümünü içeriyordu.
Ağustos

2

augustin'in cevabı, bir sunucu güncellemesinden sonra 12.04 LTS'den 14.04 LTS'ye tüm sanal konaklarım kaybolduğunda benim için çalıştı. Şöhreti haklı olsaydım, bunu hak ederdim.

Aşağıdaki komut, zaten .confbulunmayan tüm sembolik linklere sonek ekler /etc/apache2/sites-enabled:

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

Ayrıca , mod_authz_host modülünde Allow from/ Deny fromsözdizimini kullanmaktan bir değişiklik oldu ( işte 2.2 belgeleri için link).Require

Aşağıdaki komut yaygın kullanımını düzenlemek olacaktır Order allow, denyizledi Allow from allolmak Require all grantedyerine:

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/* 

1

Aslında, docroot kesin ve güvenilir arasında / var / www 'den / var / www / html' ye değişir. Yükseltme sürüm yükseltme betiğinin dokümanı geri almaması çok kötü.

A) Her ikisi de geçerlidir, ancak html daha gelenekseldir. CentOS bu konuda etkilidir. "Çalışıyor" sayfası da artık daha olgun.

B) / var / www / html kullanmak zorunda değilsiniz, fakat eğer ...

  • içeriğinizi veya takma adını taşımanız gerekir (önerilmez).
  • Eski konuma referans verilen herhangi bir yerde güncelleme yapmanız gerekir.
  • özellikle yedekleme / geri yükleme / özelleştirme komut dosyaları.

C) Sıfırdan inşa etmek ve göç etmek daha kolay olabilir.

D) Bu belirti, "sudo apache2 -k graceful" ifadesini Trusty (Yükseltme) kutusundan çıkarırsanız, kapsamda olmayan envvarlardan kaynaklanırsa ortaya çıkar? Bunun yerine "sudo apache2ctl start / stop / restart" komutunu kullanın.


0

Benim durumumda:

  • Alt htmlklasör /var/www/zaten var ama yine de hatayı alıyordum:AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf
  • Önceden /home/{user}/sites/varsayılan olarak web sitelerimi kullanıcı kökümde barındırmaya karar verdim/var/www/html
  • Apache 2.4.7 kullanıyorum (ile sürümünüzü kontrol edebilirsiniz apache2 -v)

Sorunu beş kolay adımda nasıl çözdüm:

  1. In /etc/apache2/apache2.confI hattı 169 sonra aşağıdaki ekledi:

    <Directory /home/{user}/sites/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
  2. Benim Sanal Sunucu yapılandırma adlı emin oldum website.confen /etc/apache2/sites-availablevarsayılan kopyalanmıştır 000-default.confve benziyordu:

    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName website.dev
        ServerAlias www.website.dev
        DocumentRoot /home/{user}/sites/website
    </VirtualHost>
    
  3. Sitemi ( sudo a2dissite website && sudo a2ensite website) ve sunucumu yeniden yükledim ve ilk hata oluştu. Woohoo! Ancak yeni bir tane çıktı: "AH00035: / reddedildi (dosya sistemi yolu '/ home / {user} / sites') çünkü yolun bir bileşeni üzerinde arama izinleri eksik". Bunu 4. adımda çözdüm.

  4. Yeni sorun izinler yüzünden oldu, bu yüzden sadece websiteklasöre giden dizinlerin hepsini ayarladım chmod 755. Her biri! homeKlasör, {kullanıcı} klasörü, siteler klasör ve hatta web sitem klasör

  5. Tarayıcımı yeniledikten sonra website.devher şey yolunda yüklendi!

PS Zaten kurulum vardı website.devbenim de /etc/hostsdosyaya.

Bonus İpucu: Belirli bir klasörün izinlerini kontrol etmek için komutu kullanabilirsiniz stat -c %a /path/to/file/or/folder. Bir rehber kullanımının her bölümünün izinlerini kontrol etmek için namei -m /path/to/final/folder.

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.