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?