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.d
deben mover a /etc/apache2/conf-available
.
Ahora trabajan de la misma manera sites
y mods
trabajan. Simplemente coloque sus archivos conf en la conf-available
carpeta y active el que desee a2enconf <config-file-name>
.
Ejemplo:
Tenía un archivo conf.d/httpd.conf
que tenía la directiva ServerName.
Para que eso funcione, tuve que moverlo al conf-available
directorio 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-available
no tenían extensión. Por ejemplo /etc/apache2/sites-available/default
. Ahora .conf
se 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 .conf
a 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.conf
versió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
/ Deny
a 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 MultiViews
opció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.
httpd.conf
archivo oconf.d
directorio. Pero hay unapache2.conf
archivo. Intenté moverlo alconf-available
directorio 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?httpd.conf
fue solo un ejemplo. Es posible que no tenga ningún archivo de configuración en elconf.d
directorio, en ese caso, simplemente omita ese paso. En cuanto aapache2.conf
, no se debe mover alconf-available
directorio. Es el archivo de configuración principal de apache, y su ruta debe ser /etc/apache2/apache2.conf y no debe cambiarse.config.d
osites available
carpeta. ver todos los archivos de configuración aquí: imgur.com/WczXp3vSupongo 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.
fuente
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
fuente
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ó.
fuente