Erro 403 após atualizar para o apache2.4

34

Após a atualização do servidor Ubuntu 13.04, as páginas www não serão exibidas.

Erro 403 Proibido Você não tem permissão para acessar / neste servidor.

Alterei o controle de acesso salva de apache2.2 para apache2.4, mas isso não funcionou. O que mais eu poderia fazer?

user205336
fonte

Respostas:

59

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.ddevem ser movidos para /etc/apache2/conf-available.

Eles agora funcionam da mesma maneira sitese modsfuncionam. Basta colocar seus arquivos conf na conf-availablepasta e ativar o que você deseja a2enconf <config-file-name>.

Exemplo:

Eu tinha um arquivo conf.d/httpd.confque tinha a diretiva ServerName.
Para fazer isso funcionar, tive que movê-lo para o conf-availablediretó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-availablenã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 .confa todos os seus arquivos de configuração em sites-available. Você pode fazer o mesmo sites-enabledou 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.confapache2.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/ Denypara 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 MultiViewsopçã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.

Dan
fonte
11
No meu sistema, não há httpd.confarquivo ou conf.ddiretório. Mas há um apache2.confarquivo. Tentei movê-lo para o conf-availablediretó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?
Amal Murali
@AmalMurali O httpd.conffoi apenas um exemplo. É possível que você não tenha nenhum arquivo de configuração no conf.ddiretório; nesse caso, apenas pule essa etapa. Quanto a apache2.conf, não deve ser movido para o conf-availablediretório. É o principal arquivo de configuração do apache, e seu caminho deve ser /etc/apache2/apache2.conf e não deve ser alterado.
Dan
11
Uau. Esta é praticamente a única visão lúcida encontrada em qualquer lugar. Obrigado.
Russ Bateman
não existe config.dou sites availablepasta. veja todos os arquivos de configuração aqui: imgur.com/WczXp3v
diEcho
11
@EdwardBlack Não poderia haver outra razão, se você ainda está usando o host virtual padrão como explicar as respostas da seguinte pergunta: Apache não VirtualHosts de funcionar após atualização para 13.10
Dan
0

Presumo que os sites estejam sendo executados no seu servidor Ubuntu.

Verifique o httpd.conf para garantir que a configuração do DocumentRoot esteja apontando para o lugar certo.

Verifique se as permissões de arquivo na pasta referenciada pelo DocumentRoot podem ser lidas pelo usuário em que o servidor da web é executado.

Verifique se você possui um index.html / index.htm etc adequado e se o servidor da web não está tentando fazer uma listagem de diretório.

Matt
fonte
0

Eu tive problemas semelhantes.

Eu não conseguia executar o apache 2.4 a menos que eu usasse 'Permitir de todos', isso era irritante, pois eu queria fornecer uma pausa limpa das versões <2.4. Depois de muitas tentativas e erros e muita pesquisa, vi uma referência ao access_compat e percebi que isso estava lá apenas por compatibilidade. Embora a documentação do apache indique que ambos podem ser usados, recomenda que você não deva.

Eu removi este módulo do arquivo de carregamento / etc / sysconfig / apache2, isso resolveu meu problema imediatamente.

Atenciosamente Liam

Liam O Donnell
fonte
-1

Estou servindo arquivos de um diretório não padrão, para que a atualização funcione, tive que editar o arquivo /etc/apache2/apache2.conf e adicionar: Opções Índices FollowSymLinks AllowOverride Nenhum Exigir tudo o que é concedido

Após isso, e as alterações recomendadas acima, o erro 403 desapareceu.

kupy filhote
fonte