¿Por qué mi Apache no funciona después de actualizar a Ubuntu 14.04?


36
[aman@aman-Inspiron-1440:~$ apache2
[Mon Apr 21 17:36:38.019213 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Mon Apr 21 17:36:38.019345 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Mon Apr 21 17:36:38.019370 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Mon Apr 21 17:36:38.019385 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Mon Apr 21 17:36:38.019414 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.028756 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029032 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029056 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}

Este es el contenido del /etc/apache2/apache2.confarchivo.


3
No funciona porque tiene un error de sintaxis en la línea 74 de /etc/apache2/apache2.conf . Por favor, suba el contenido de ese archivo para ver qué está mal.
Lucio

2
Buscando en Google desde ayer,
Amandeep Singh



¿Necesito mover / var / www a / var / www / html?
Amandeep Singh

Respuestas:


31

Tuve este problema: la causa está en el archivo

/etc/apache2/sites-available/000-default.conf 

donde la raíz ha cambiado:

antes de actualizar = /var/www
después de actualizar =/var/www/html

Así que edite para modificar este archivo

sudo gedit /etc/apache2/sites-available/000-default.conf

Y reiniciar apache

sudo service apache2 restart

Como este es un problema que el OP podría enfrentar, este no es el problema que está teniendo en este momento. En cualquier caso, como expliqué en esta respuesta , no recomiendo editar el 000-default.confarchivo.
Dan

Está funcionando después de pasar a / var / www / html
Amandeep Singh

2
+1 No pude resolver esto tampoco. ¡Eres el hombre!
gion_13

2
En mi caso, todavía tengo este problema y la htmlsubcarpeta ya existe, lo que en mi caso es irrelevante ya que todos mis sitios usan VirtualHosts
jhbsk

44
¡Esta no puede ser la respuesta! El error anterior no está relacionado con la DocumentRootconfiguración.
Reinier Post

50

Tuve este problema a pesar de que apache funcionaba para mí. Simplemente quería hacer un rápido

$ /usr/sbin/apache2 -V

para encontrar el valor de SERVER_CONFIG_FILE. Como esa no es la forma de iniciar apache2, falla con los errores que publica el OP. Una solución rápida y sucia es simplemente establecer primero los entornos que faltan:

$ source /etc/apache2/envvars
$ /usr/sbin/apache2 -V

Esto establece la variable APACHE_LOCK_DIR y todo está bien ( -D SERVER_CONFIG_FILE="apache2.conf").


1
Esto funcionó para mí. El mismo problema, Apache se estaba ejecutando y operando, pero la ejecución apache2 -Sfalló. Todo arreglado.
Twisty

Extraño. Esto no pareció funcionar para mí. Sin embargo, tiene sentido por qué debería hacerlo .
Tyler Crompton

@TylerCrompton - ¿Cómo falló? ¿Cuál fue el error?
carril

No hizo ninguna diferencia. Todavía estaba experimentando el problema que tenía OP. Sin apache2embargo, ejecutarse como root solucionó el problema.
Tyler Crompton

44
Una alternativa más fácil:apache2ctl -V
Reinier Post

14

Síntomas y solución.

En muchos sitios web o foros de preguntas y respuestas, las personas confunden síntomas y causas reales. Acabo de actualizar un servidor ubuntu de 13.10 a 14.04.1 y encontré exactamente los mismos síntomas descritos por el OP, incluyendo:
1- apache aparentemente no funciona. 2- variable de configuración de apache indefinida. 3- el error de sintaxis mencionado por el OP.

El problema es que no todos estos síntomas están realmente relacionados con el problema real y solo sirven como una distracción para aquellos que hacen todo lo posible por ayudar.

Diferentes problemas de raíz pueden hacer que los administradores visiten sitios como este con aproximadamente la misma descripción: "Actualicé el sistema operativo y ahora Apache no funciona ..."

Una causa específica

Teniendo exactamente los mismos síntomas aparentes que el OP, me atrajo esta pregunta. ¡Desafortunadamente, la única respuesta que contenía una pista válida de la causa raíz real de mi problema fue rechazada (-1), publicada por el usuario 1469291 con un representante de 1 !! Así que busqué más en otros sitios web hasta que encontré una explicación clara del problema (y, por lo tanto, de la solución).

La solución que sigue puede que no resuelva el verdadero problema del OP, pero estoy seguro de que ayudará a otros que puedan sentirse atraídos por esta pregunta por las mismas razones que yo.

/etc/apache2/apache2.conf contiene:

# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

lo que significa que solo se cargarán los archivos de configuración del sitio en / etc / apache2 / sites-enabled / que terminan en .conf. Los enlaces simbólicos más antiguos en ese directorio serán ignorados.

Solía ​​ser simplemente sitios habilitados / *. Es por eso que todos mis archivos de configuración de host virtual que simplemente llamé ww1.example.com, ww2.example.com, etc., solían funcionar pero de repente e inicialmente inexplicablemente dejaron de funcionar después de la actualización.

Por lo tanto, cambie la directiva anterior y vuelva a cargar apache, o, como hice, elimine manualmente todos los enlaces simbólicos más antiguos en sitios habilitados /, cambie el nombre de todos los archivos en sitios disponibles / para agregar el sufijo .conf y luego vuelva a habilitar cada Sitio individualmente.

Además, la directiva predeterminada en apache.conf es más estricta:

<Directory />
  Options FollowSymLinks
  AllowOverride None
  Require all deny
</Directory>
<Directory /var/www/>
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>

Entonces, si aloja sus sitios virtuales en / home / user / algún lugar, asegúrese de anular la directiva de manera adecuada.


1
Esta es una buena respuesta. Es mejor comprender los cambios antes de apresurarse y quejarse de que las cosas no funcionan bien.
MikeNGarrett

1
Gracias por esto, no me di cuenta de que cambiar el nombre del archivo no eliminó el enlace simbólico de los sitios habilitados.
Benno

Esto no proporciona una solución.
Reinier Post

6

Mirando de cerca su problema, solo está corriendo apache2. Para iniciar apache en Ubuntu, ejecute el siguiente comando:

sudo apache2ctl start

La configuración de Apache se divide en varios archivos, uno de esos archivos son variables de entorno. Cuando está ejecutando solo apache2, estas variables no están establecidas.

El script apache2ctl cargará las variables (y hará algunas otras cosas también cuando sea necesario) antes de comenzar con apache apache2 -k start.


1
#sudo apache2ctl start httpd (pid 1390) ya en ejecución
Amandeep Singh

Entonces, ¿cuál es el problema que tienes entonces?
Dan

@AmandeepSingh: intente en su sudo apache2ctl restartlugar.
scheffield

1
@scheffield Probé este comando varias veces. El problema se debió al cambio de ubicación de la carpeta raíz en la nueva versión de Apache de / var / www a / var / www / html. Moví todos los archivos a una subcarpeta / html y funcionó.
Amandeep Singh

4

Edite la configuración sudo leafpad /etc/apache2/apache2.conf::

# Include the virtual host configurations:

#before upgrade = 
IncludeOptional sites-enabled/*
#after upgrade = 
/IncludeOptional sites-enabled/*.conf

o eliminar el archivo.


+1. La respuesta fue rechazada pero contenía la solución al problema de muchos administradores que pueden visitar esta pregunta.
agosto

2

La respuesta de augustin funcionó para mí cuando todos mis hosts virtuales desaparecieron después de una actualización del servidor de 12.04 LTS a 14.04 LTS. Lo votaría si tuviera la reputación de hacerlo.

El siguiente comando agregará el .confsufijo a todos los enlaces simbólicos /etc/apache2/sites-enabledque aún no lo tienen:

sudo find /etc/apache2/sites-enabled -type l ! -name '*.conf' -exec rename 's/$/.conf/' {} \;

Además, se ha cambiado el uso de la sintaxis Allow from/ en el módulo mod_authz_host ( aquí está el enlace para la documentación 2.2).Deny fromRequire

El siguiente comando editará el uso común de Order allow, denyseguido de Allow from allto be Require all granteden su lugar:

perl -0777 -pi.bak -e 's/Order\s+allow\s*,\s*deny\s*\n\s*Allow\s+from\s+all/Require all granted/sg' /etc/apache2/sites-available/* 

1

De hecho, el docroot cambia entre preciso y confiable de / var / www a / var / www / html. Es pobre que el script do-release-upgrade no retroceda el docroot.

A) Cualquiera de los dos es válido, pero html es más convencional. CentOS es influyente en este sentido. La página "funciona" es más madura ahora también.

B) No tiene que usar / var / www / html, pero si lo hace ...

  • necesita migrar su contenido o alias (no recomendado).
  • necesita actualizar en cualquier lugar donde se haga referencia a la ubicación anterior.
  • especialmente scripts de copia de seguridad / restauración / personalización.

C) Y puede ser más fácil construir desde cero y migrar.

D) Este síntoma ocurrirá si "sudo apache2 -k graceful" fuera de la caja en Trusty, ¿actualiza o no debido a que los envvars no están dentro del alcance? Utilice "sudo apache2ctl start / stop / restart" en su lugar.


0

En mi caso:

  • los html subcarpeta /var/www/ya existía pero aún recibía el error:AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf
  • Ya había decidido alojar mis sitios web en mi raíz de usuario, por ejemplo /home/{user}/sites/ lugar de la predeterminada/var/www/html
  • Estoy usando Apache 2.4.7 (puede verificar su versión con apache2 -v )

Cómo resolví el problema en cinco sencillos pasos:

  1. En /etc/apache2/apache2.confagregué lo siguiente después de la línea 169:

    <Directory /home/{user}/sites/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
  2. Me aseguré de que mi configuración de Virtual Host nombrada website.confen /etc/apache2/sites-availablese copiara del valor predeterminado 000-default.conf, y tenía el siguiente aspecto:

    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName website.dev
        ServerAlias www.website.dev
        DocumentRoot /home/{user}/sites/website
    </VirtualHost>
    
  3. Recargué mi sitio (sudo a2dissite website && sudo a2ensite website ) y mi servidor y el error inicial desapareció. WOOHOO! Pero surgió uno nuevo: "AH00035: acceso a / denegado (ruta del sistema de archivos '/ home / {user} / sites') porque faltan permisos de búsqueda en un componente de la ruta". Esto lo resolví en el paso 4.

  4. El nuevo problema se debió a los permisos, por lo que simplemente configuré cada uno de los directorios que conducen a la websitecarpeta achmod 755 . ¡Todos y cada uno! La homecarpeta, la carpeta {usuario}, la carpeta de sitios e incluso la carpeta de mi sitio web

  5. Después de actualizar mi navegador en website.devtodo cargado bien!

PD ya había configurado website.deven mi/etc/hosts archivo.

Consejo adicional: para verificar los permisos de una carpeta en particular, puede usar el comando stat -c %a /path/to/file/or/folder. Para verificar los permisos de cada parte del uso de un directorio namei -m /path/to/final/folder.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.