Por que meu Apache não está funcionando após a atualização para o Ubuntu 14.04?

35
[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}
Este é o conteúdo do arquivo /etc/apache2/apache2.conf

.     
por Amandeep Singh 21.04.2014 / 14:14

8 respostas

30

Eu tive este problema: A causa está no arquivo

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

em que a raiz foi alterada:

antes da atualização = /var/www
após atualização = /var/www/html

Então edite para modificar este arquivo

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

E reinicie o apache

sudo service apache2 restart
    
por TrackGmao 21.04.2014 / 14:38
47

Eu tive esse problema, embora o apache estivesse funcionando para mim. Eu simplesmente queria fazer um rápido

$ /usr/sbin/apache2 -V

para encontrar o valor de SERVER_CONFIG_FILE . Como essa não é a maneira de iniciar o apache2, ele falha com os erros que o OP envia. Uma solução rápida e suja é simplesmente definir os envios que estão faltando primeiro:

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

Isso define a variável APACHE_LOCK_DIR e está tudo bem ( -D SERVER_CONFIG_FILE="apache2.conf" ).

    
por lane 06.10.2014 / 16:24
14

Sintomas e solução

Em muitos sites ou fóruns da Q & A, as pessoas confundem sintomas e causas reais. Acabei de atualizar um servidor Ubuntu de 13.10 para 14.04.1 e encontrei os mesmos sintomas descritos pelo OP, incluindo: 1- Apache aparentemente não está funcionando. 2- variável de configuração do apache indefinida. 3- o erro de sintaxe mencionado pelo OP.

O problema é que nem todos esses sintomas são realmente pertinentes ao problema real e servem apenas como uma distração para aqueles que tentam o seu melhor para ajudar.

Diferentes problemas de raiz podem fazer com que os administradores acessem sites como este com aproximadamente a mesma descrição: "Eu atualizei o sistema operacional e agora o apache não está funcionando ..."

Uma causa específica

Tendo exatamente os mesmos sintomas aparentes do OP, fui atraído por essa questão. Infelizmente, a única resposta que continha uma dica válida para a verdadeira causa raiz do meu problema foi downvoted (-1), postada por user1469291 com um representante de 1 !! Então eu procurei outros sites até encontrar uma explicação clara do problema (e, portanto, da solução).

A solução a seguir pode não resolver o verdadeiro problema do OP, mas tenho certeza de que ajudará outras pessoas que podem se sentir atraídas por essa questão pelas mesmas razões que eu.

/etc/apache2/apache2.conf contém:

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

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

, o que significa que somente os arquivos de configuração do site em / etc / apache2 / sites-enabled / ending em .conf serão carregados. O link simbólico mais antigo nesse diretório será ignorado.

Costumava ser simplesmente habilitado para sites / *. É por isso que todos os meus arquivos de configuração do host virtual que eu simplesmente nomeei ww1.example.com, ww2.example.com, etc, costumavam funcionar, mas subitamente e inicialmente inexplicavelmente pararam de funcionar após a atualização.

Portanto, altere a diretiva acima e recarregue o apache ou, como eu fiz, remova manualmente todos os links simbólicos antigos em sites habilitados /, renomeie todos os arquivos em sites disponíveis / para adicionar o sufixo .conf e, em seguida, habilitado para cada site individualmente.

Além disso, a diretiva padrão no apache.conf é mais rigorosa:

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

Portanto, se você hospedar seus sites virtuais em / home / user / em algum lugar, certifique-se de substituir a diretiva adequadamente.

    
por augustin 17.09.2014 / 12:42
6

Olhando atentamente para o seu problema, você está executando apenas apache2 . Para iniciar o apache no Ubuntu, execute o seguinte comando:

sudo apache2ctl start

A configuração do Apache é dividida em vários arquivos, um desses arquivos são variáveis de ambiente. Quando você está executando apenas apache2 , essas variáveis não estão definidas.

O script apache2ctl carregará as variáveis (e fará outras coisas também, quando necessário) antes de iniciar o apache com apache2 -k start .

    
por Dan 21.04.2014 / 14:39
4

Edite a configuração: sudo leafpad /etc/apache2/apache2.conf :

# Include the virtual host configurations:

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

ou remova o arquivo.

    
por Mauro Leites 20.08.2014 / 20:56
2
A resposta de augustin funcionou para mim quando todos os meus hosts virtuais desapareceram após uma atualização do servidor de 12.04 LTS para 14.04 LTS. Eu votaria positivamente se tivesse a reputação de fazê-lo.

O comando a seguir adicionará o sufixo .conf a todos os links simbólicos em /etc/apache2/sites-enabled que ainda não o possuem:

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

Além disso, houve uma mudança de usar a sintaxe Allow from / Deny from para Require no mod_authz_host ( aqui é o link para a documentação do 2.2) .

O comando a seguir editará o uso comum de Order allow, deny seguido de Allow from all como 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/* 
    
por TobyLL 04.02.2015 / 14:46
1

Na verdade, o docroot muda entre preciso e confiável de / var / www para / var / www / html. É ruim que o script do-release-upgrade não gere o docroot de volta.

A) é válido, mas html é mais convencional. O CentOS é influente nesse aspecto.    A página "funciona" também está mais madura agora.

B) Você não precisa usar / var / www / html, mas se você fizer isso ...

  • você precisa migrar seu conteúdo ou alias (não recomendado).
  • você precisa atualizar em qualquer lugar onde o local antigo é mencionado.
  • especialmente scripts de backup / restauração / personalização.

C) E pode ser mais fácil construir a partir do zero e migrar.

D) Este sintoma ocorrerá se você "sudo apache2 -k graceful" fora da caixa no Trusty, atualizando ou não devido ao envvars não estar no escopo? Use "sudo apache2ctl start / stop / restart".

    
por mckenzm 15.12.2014 / 10:08
0

No meu caso:

  • A subpasta html em /var/www/ já existia, mas mesmo assim eu estava recebendo o erro: AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf
  • Eu já decidi hospedar meus sites na minha raiz do usuário, por exemplo, /home/{user}/sites/ em vez do padrão /var/www/html
  • Estou usando o Apache 2.4.7 (você pode verificar sua versão com apache2 -v )

Como resolvi o problema em cinco etapas fáceis:

  1. Em /etc/apache2/apache2.conf , adicionei o seguinte após a linha 169:

    <Directory /home/{user}/sites/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
  2. Assegurei-me de que minha configuração do host virtual denominada website.conf at /etc/apache2/sites-available fosse copiada do padrão 000-default.conf e se parecesse com:

    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName website.dev
        ServerAlias www.website.dev
        DocumentRoot /home/{user}/sites/website
    </VirtualHost>
    
  3. Eu recarreguei meu site ( sudo a2dissite website && sudo a2ensite website ) e meu servidor e o erro inicial desapareceu. WOOHOO! Mas um novo surgiu: "AH00035: acesso a / negado (caminho do sistema de arquivos '/ home / {user} / sites') porque as permissões de pesquisa estão faltando em um componente do caminho". Isso eu resolvi no passo 4.

  4. O novo problema foi devido às permissões, então eu apenas configurei cada um dos diretórios que levam à pasta website para chmod 755 . Cada um! A pasta home , a pasta {user}, a pasta de sites e até a pasta do meu site

  5. Depois de atualizar meu navegador em website.dev , tudo foi bem carregado!

P.S. Eu já tinha configurado website.dev no meu arquivo /etc/hosts .

Dica de bônus: Para verificar as permissões de uma determinada pasta, você pode usar o comando stat -c %a /path/to/file/or/folder . Para verificar as permissões de cada parte de um diretório, use namei -m /path/to/final/folder .

    
por jhbsk 17.04.2015 / 18:35

Tags