O que aconteceu é que a sintaxe dos arquivos de configuração no apache2.4 mudou.
Fonte: Isso aconteceu comigo também depois que eu atualizei para a 13.10
arquivos conf.d
Todos os arquivos que estavam dentro /etc/apache2/conf.d
devem ser movidos para /etc/apache2/conf-available
.
Eles agora funcionam da mesma maneira sites
e mods
funcionam. Basta colocar seus arquivos conf na conf-available
pasta e ativar o que você deseja a2enconf <config-file-name>
.
Exemplo:
Eu tinha um arquivo conf.d/httpd.conf
que tinha a diretiva ServerName.
Para fazer isso funcionar, tive que movê-lo para o conf-available
diretório e habilitá-lo manualmente.
sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd
arquivos de sites
Anteriormente, os arquivos /etc/apache2/sites-available
não tinham extensão. Por exemplo /etc/apache2/sites-available/default
. Agora .conf
é necessária uma extensão.
Exemplo:
Se você tivesse /etc/apache2/sites-available/some-site
, no 13.04, você pode apenas ativá-lo usando sudo a2ensite some-site
. Agora, você receberá um erro dizendo
ERRO: O site de algum site não existe!
Para corrigir isso, anexe a .conf
a todos os seus arquivos de configuração em sites-available
. Você pode fazer o mesmo sites-enabled
ou excluir todos os arquivos e reativá-los manualmente.
Eu recomendo fazê-los manualmente, pois você provavelmente precisará corrigir cada VHost (próxima etapa).
sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;
se você decidiu fazê-los manualmente:
sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name
Diretivas de host virtual:
permitir / negar vs exigir
Se você tivesse o seguinte:
<Directory /path/to/your/site/>
order allow,deny
allow from all
</Directory>
Deve tornar-se:
<Directory /path/to/your/site/>
Require all granted
</Directory>
Para mais informações, verifique os comentários de DaveRandom em uma resposta no Stack Overflow.
Simplificando, se você atualizou para o apache2.4 e manteve o antigo httpd.conf
apache2.2, a diretiva allow deve continuar funcionando bem. Se você atualizou o seu httpd.conf
(o que eu sugeriria), você receberá 403 erros até alterar as diretivas Order
/ Allow
/ Deny
para o equivalente Require
.
Opções de Diretório
Se você tivesse opções Directory, nota que todos eles têm de ser precedidas por uma +
ou -
ou nenhum deles em tudo. Uma mistura de ambos não é permitida:
Exemplo:
Isso é permitido:
<Directory /path/to/your/site/>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
Então é isso (observe que esses exemplos não fazem a mesma coisa, o anterior desativa a MultiViews
opção, o próximo não):
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks MultiViews
</Directory>
Isso não é mais permitido:
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks -MultiViews
</Directory>
A última opção de configuração lançará o erro de sintaxe a dizer:
Todas as opções devem começar com + ou -, ou nenhuma opção pode.
Reinicie o apache
Depois que tudo estiver pronto, você precisará reiniciar o servidor apache para que as alterações entrem em vigor:
sudo apache2ctl restart
Você pode encontrar um guia de atualização detalhado de 2.2 a 2.4 na documentação oficial.
httpd.conf
arquivo ouconf.d
diretório. Mas há umapache2.conf
arquivo. Tentei movê-lo para oconf-available
diretório e obtive o seguinte erro ao reiniciar o apache2: apache2: Não foi possível abrir o arquivo de configuração /etc/apache2/apache2.conf: Esse arquivo ou diretório não existe - Qual poderia ser o motivo?