Error 403 después de actualizar a apache2.4

34

Después de actualizar desde el servidor Ubuntu 13.04, las páginas www no se mostrarán.

Error 403 Prohibido No tiene permiso para acceder / en este servidor.

He cambiado los controles de acceso guardados de apache2.2 a apache2.4, pero eso no funcionó. ¿Qué más puedo hacer?

usuario205336
fuente

Respuestas:

59

Lo que sucedió es que la sintaxis de los archivos de configuración en apache2.4 ha cambiado.

Fuente: Esto también me ha sucedido después de actualizar a 13.10

conf.d archivos

Todos los archivos que estaban en se /etc/apache2/conf.ddeben mover a /etc/apache2/conf-available.

Ahora trabajan de la misma manera sitesy modstrabajan. Simplemente coloque sus archivos conf en la conf-availablecarpeta y active el que desee a2enconf <config-file-name>.

Ejemplo:

Tenía un archivo conf.d/httpd.confque tenía la directiva ServerName.
Para que eso funcione, tuve que moverlo al conf-availabledirectorio y habilitarlo manualmente.

sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd

archivos de sitios

Anteriormente, los archivos /etc/apache2/sites-availableno tenían extensión. Por ejemplo /etc/apache2/sites-available/default. Ahora .confse requiere una extensión.

Ejemplo:

Si lo hubiera hecho /etc/apache2/sites-available/some-site, en 13.04 puede habilitarlo usando sudo a2ensite some-site. Ahora te dará un error diciendo

ERROR: ¡El sitio en algún sitio no existe!

Para solucionar esto, agregue un .confa todos sus archivos de configuración sites-available. Puede hacer lo mismo en sites-enabled, o puede eliminar todos los archivos y volver a habilitarlos manualmente.
Recomiendo hacerlo manualmente, ya que probablemente necesite arreglar cada VHost (siguiente paso).

sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;

si decidiste hacerlo manualmente:

sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name

Directivas de host virtual:

permitir / negar vs requerir

Si tuvieras lo siguiente:

<Directory /path/to/your/site/>
    order allow,deny
    allow from all
</Directory>

Debería convertirse en:

<Directory /path/to/your/site/>
    Require all granted
</Directory>

Para obtener más información, consulte los comentarios de DaveRandom sobre una respuesta en Stack Overflow.

En pocas palabras, si actualizó a apache2.4 y mantuvo la httpd.confversión anterior de apache2.2, la directiva allow debería seguir funcionando bien. Si actualizó su httpd.conf(lo que sugeriría), obtendrá 403 errores hasta que cambie las directivas Order/ Allow/ Denya su equivalente Require.

Opciones de directorio

Si usted tenía opciones de directorio, tenga en cuenta que todos ellos tienen que ser precedidas por una +o -o ninguno de ellos en absoluto. No se permite una mezcla de ambos:

Ejemplo:

Esto está permitido:

<Directory /path/to/your/site/>
    Options +Indexes +FollowSymLinks -MultiViews
</Directory>

Así es esto (tenga en cuenta que estos ejemplos no hacen lo mismo, el anterior desactiva la MultiViewsopción, el siguiente no):

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks MultiViews
</Directory>

Esto ya no está permitido:

<Directory /path/to/your/site/>
    Options Indexes FollowSymLinks -MultiViews
</Directory>

La última opción de configuración arrojará un error de sintaxis que dice:

O todas las opciones deben comenzar con + o -, o ninguna opción puede.

Reiniciar apache

Una vez que todo esté hecho, debe reiniciar su servidor apache para que los cambios surtan efecto:

 sudo apache2ctl restart

Puede encontrar una guía de actualización detallada de 2.2 a 2.4 en la documentación oficial.

Dan
fuente
1
En mi sistema, no hay httpd.confarchivo o conf.ddirectorio. Pero hay un apache2.confarchivo. Intenté moverlo al conf-availabledirectorio y obtuve el siguiente error cuando reinicié apache2: apache2: No se pudo abrir el archivo de configuración /etc/apache2/apache2.conf: No existe tal archivo o directorio . ¿Cuál podría ser la razón?
Amal Murali
@AmalMurali El httpd.conffue solo un ejemplo. Es posible que no tenga ningún archivo de configuración en el conf.ddirectorio, en ese caso, simplemente omita ese paso. En cuanto a apache2.conf, no se debe mover al conf-availabledirectorio. Es el archivo de configuración principal de apache, y su ruta debe ser /etc/apache2/apache2.conf y no debe cambiarse.
Dan
1
Guau. Esta es prácticamente la única descripción lúcida que se puede encontrar en cualquier lugar. Gracias.
Russ Bateman
no hay config.do sites availablecarpeta. ver todos los archivos de configuración aquí: imgur.com/WczXp3v
diEcho
1
@EdwardBlack Podría haber otra razón si todavía está utilizando el host virtual predeterminado como se explica en las respuestas de la siguiente pregunta: Apache virtualhosts ya no funciona después de la actualización a 13.10
Dan
0

Supongo que los sitios web se ejecutan en su servidor Ubuntu.

Verifique su httpd.conf para asegurarse de que su configuración de DocumentRoot esté apuntando al lugar correcto.

Compruebe que los permisos de los archivos en la carpeta a la que hace referencia DocumentRoot pueden ser leídos por el usuario que ejecuta el servidor web.

Compruebe que tiene un index.html / index.htm, etc. adecuado y que el servidor web no está intentando hacer una lista de directorios.

Mate
fuente
0

Me encontré con problemas similares.

No podía ejecutar Apache 2.4 a menos que usara 'Permitir de todos', esto era molesto ya que quería proporcionar un descanso limpio de las versiones <2.4. Después de muchas pruebas y errores y muchas búsquedas, descubrí una referencia a access_compat y me di cuenta de que esto estaba allí solo por compatibilidad. Aunque la documentación de apache dice que se pueden usar ambos, recomienda que no se debe.

Eliminé este módulo del archivo de carga / etc / sysconfig / apache2, esto resolvió mi problema de inmediato.

Saludos Liam

Liam O Donnell
fuente
-1

Estoy sirviendo archivos de un directorio no estándar, por lo que para que la actualización funcione, tuve que editar /etc/apache2/apache2.conf y agregar: Opciones Índices FollowSymLinks AllowOverride Ninguno Requiere que todo esté otorgado

Después de esto, y los cambios recomendados anteriormente, el error 403 desapareció.

kupy pupy
fuente