Por que meu Apache não está funcionando após a atualização para o 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}

Este é o conteúdo do /etc/apache2/apache2.confarquivo.


3
Não está funcionando porque você tem um erro de sintaxe na linha 74 do /etc/apache2/apache2.conf . Faça o upload do conteúdo desse arquivo para ver o que está errado.
Lucio

2
Pesquisando no Google desde ontem,
Amandeep Singh



Preciso mover / var / www para / var / www / html ??
Amandeep Singh

Respostas:


31

Eu tive este problema: A causa está no arquivo

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

onde a raiz mudou:

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

Como esse é um problema que o OP pode enfrentar, esse não é o problema que ele está tendo no momento. Em qualquer um dos casos, como expliquei nesta resposta , não recomendo editar o 000-default.confarquivo.
21414 Dan

O seu funcionamento depois de se mudar para / var / www / html
Amandeep Singh

2
+1 Também não consegui descobrir isso. Você é o cara!
gion_13

2
No meu caso eu ainda estou tendo esta questão e a htmlsubpasta já existe, que no meu caso é realmente irrelevante, uma vez todos os meus sites usam VirtualHosts
jhbsk

4
Esta não pode ser a resposta! O erro acima não está relacionado à DocumentRootconfiguração.
Reinier Publicar

50

Eu tive esse problema mesmo que o apache estivesse funcionando para mim. Eu simplesmente queria fazer uma rápida

$ /usr/sbin/apache2 -V

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

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

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


11
Isso funcionou para mim. Mesmo problema, o Apache estava em execução e em operação, mas a execução apache2 -Sfalhou. Tudo fixo.
Twisty

Estranho. Isso não pareceu funcionar para mim. Faz sentido o porquê disso deveria .
Tyler Crompton

@TylerCrompton - Como isso falhou? Qual foi o erro?
Lane

Não fez nenhuma diferença. Eu ainda estava enfrentando o problema que o OP tinha. A execução apache2como root corrigiu o problema.
Tyler Crompton

4
Uma alternativa mais fácil:apache2ctl -V
Reinier Post 16/06

14

Sintomas e solução

Em muitos sites ou fóruns de perguntas e respostas, as pessoas confundem sintomas e causas reais. Acabei de atualizar um servidor ubuntu de 13.10 para 14.04.1 e encontrei exatamente os mesmos sintomas descritos pelo OP, incluindo:
1- apache aparentemente não está funcionando. 2- variável de configuração 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 se esforçam ao máximo para ajudar.

Problemas de raiz diferentes podem fazer com que administradores acessem sites como este com aproximadamente a mesma descrição: "Atualizei o sistema operacional e agora o apache não está funcionando ..."

Uma causa específica

Tendo exatamente os mesmos sintomas aparentes do OP, fiquei atraído por essa pergunta. Infelizmente, a única resposta que continha uma dica válida para a causa raiz real do meu problema foi diminuída (-1), postada por user1469291 com um representante de 1 !! Por isso, procurei em 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 problema real do OP, mas tenho certeza de que ajudará outras pessoas que possam se sentir atraídas por essa pergunta pelos mesmos motivos 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 apenas os arquivos de configuração do site em / etc / apache2 / sites-enabled / terminando em .conf serão carregados. O link simbólico mais antigo nesse diretório será ignorado.

Costumava ser simplesmente ativado por sites / *. É por isso que todos os meus arquivos de configuração de host virtual que eu simplesmente chamei de ww1.example.com, ww2.example.com, etc. costumavam funcionar, mas de repente e inicialmente inexplicavelmente parou 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 mais antigos em sites habilitados /, renomeie todos os arquivos em sites disponíveis / para adicionar o sufixo .conf e, em seguida, reative cada site individualmente.

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

<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 / algum lugar, substitua a diretiva adequadamente.


11
Esta é uma boa resposta. É melhor entender as mudanças antes de entrar e reclamar que as coisas não funcionam direito.
MikeNGarrett #

11
Obrigado por isso, não percebi que renomear o arquivo não removeu o link simbólico dos sites habilitados.
Benno 01/01

Isso não fornece uma solução.
Reinier Publicar

6

Olhando atentamente para o seu problema, você está apenas executando 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 quando necessário) antes de iniciar o apache apache2 -k start.


11
#sudo apache2ctl iniciar httpd (PID 1390) já em execução
Amandeep Singh

Então, qual é o problema que você está tendo?
21414 Dan

@AmandeepSingh: tente em sudo apache2ctl restartvez disso.
Scheffield

11
@scheffield Tentei este comando várias vezes. O problema ocorreu devido à alteração do local da pasta raiz na nova versão do Apache de / var / www para / var / www / html. Mudei todos os arquivos para uma subpasta / html e funcionou.
Amandeep Singh

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 remover arquivo.


+1. A resposta foi reduzida, mas continha a solução para o problema de muitos administradores que podem visitar esta pergunta.
agosto

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 o aprovaria se tivesse a reputação de fazê-lo.

O comando a seguir adicionará o .confsufixo a todos os links simbólicos /etc/apache2/sites-enabledque ainda não o possuem:

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

Além disso, houve uma alteração do uso da sintaxe Allow from/ no módulo mod_authz_host ( aqui está o link para a documentação 2.2).Deny fromRequire

O comando a seguir editará o uso comum de Order allow, denyseguido por Allow from allto be 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/* 

1

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

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

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

  • você precisa migrar seu conteúdo ou aliasá-lo (não recomendado).
  • você precisa atualizar em qualquer lugar em que o local antigo seja referenciado.
  • especialmente scripts de backup / restauração / personalização.

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

D) Esse sintoma ocorrerá se você "sudo apache2 -k gracioso" fora da caixa no Trusty, atualizar ou não devido a envvars que não estão no escopo? Use "sudo apache2ctl start / stop / restart" em seu lugar.


0

No meu caso:

  • A htmlsubpasta em /var/www/já existia, mas ainda estava recebendo o erro:AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf
  • Eu já tinha decidido hospedar meus sites na raiz do usuário, por exemplo, em /home/{user}/sites/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.confEu adicionado o seguinte depois linha 169:

    <Directory /home/{user}/sites/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
  2. Certifiquei-me de que minha configuração de host virtual nomeada website.confem /etc/apache2/sites-availablefosse copiada do padrão 000-default.confe parecesse:

    <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 se foi. WOOHOO! Mas surgiu um novo: "AH00035: acesso a / negado (caminho do sistema de arquivos '/ home / {usuário} / sites') porque faltam permissões de pesquisa em um componente do caminho". Isso eu resolvi na etapa 4.

  4. O novo problema foi devido a permissões, então apenas defina cada um dos diretórios que antecederam a websitepasta chmod 755. Cada um! A homepasta, a pasta {user}, a pasta sites e até a pasta do meu site

  5. Depois de atualizar o meu navegador em website.devtudo carregado bem!

PS Eu já tinha configurado website.devno meu /etc/hostsarquivo.

Bônus Dica: Para verificar as permissões de um determinado pasta que você pode usar o comando stat -c %a /path/to/file/or/folder. Para verificar as permissões de todas as partes de um diretório, use namei -m /path/to/final/folder.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.