La variable de configuration Apache2 n'est pas définie

J'ai installé apache2 sur ubuntu 13.10. Si j'essaie de le redémarrer en utilisant

sudo /etc/init.d/apache2 restart 

Je reçois ce message:

AH00558: apache2: Impossible de déterminer de manière fiable le nom de domaine complet du serveur, en utilisant 127.0.1.1. Définissez la directive 'ServerName' globalement pour supprimer ce message

J'ai donc lu que je devrais modifier mon fichier httpd.conf . Mais, comme je ne peux pas le trouver dans le dossier /etc/apache2/ , j'ai essayé de le localiser à l'aide de cette commande:

 /usr/sbin/apache2 -V 

Mais la sortie que je reçois est la suivante:

 [Fri Nov 29 17:35:43.942472 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined [Fri Nov 29 17:35:43.942560 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_PID_FILE} is not defined [Fri Nov 29 17:35:43.942602 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_RUN_USER} is not defined [Fri Nov 29 17:35:43.942613 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined [Fri Nov 29 17:35:43.942627 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOG_DIR} is not defined [Fri Nov 29 17:35:43.947913 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOG_DIR} is not defined [Fri Nov 29 17:35:43.948051 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOG_DIR} is not defined [Fri Nov 29 17:35:43.948075 2013] [core:warn] [pid 14655] 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} 

La ligne 74 de /etc/apache2/apache2.conf est la suivante:

 Mutex file:${APACHE_LOCK_DIR} default 

J'ai regardé mon fichier /etc/apache2/envvar , mais je ne sais pas quoi faire.

Que devrais-je faire?

 [Fri Nov 29 17:35:43.942472 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined 

Ce message s'affiche car vous avez directement exécuté le binôme apache2. Dans Ubuntu / Debian, la configuration apache repose sur le fichier envvar qui n'est activé que si vous démarrez Apache avec le script init ou apachectl.

Votre problème d'origine est que vous n'avez pas de nom d'hôte approprié (fqdn) pour votre machine. Si vous ne pouvez pas le modifier, modifiez la variable ServerName dans /etc/apache2/apache2.conf vers localhost ou votre FQDN préféré.

Saisissez vos envvars en l'exécutant comme ceci:

 source /etc/apache2/envvars 

et alors

 /usr/sbin/apache2 -V 

Tu devrais obtenir:

 el@apollo:/home/el$ apache2 -V Server version: Apache/2.4.7 (Ubuntu) Server built: Apr 3 2014 12:20:28 Server's Module Magic Number: 20120211:27 Server loaded: APR 1.5.1-dev, APR-UTIL 1.5.3 Compiled using: APR 1.5.1-dev, APR-UTIL 1.5.3 Architecture: 64-bit Server MPM: prefork threaded: no forked: yes (variable process count) Server compiled with.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/etc/apache2" -D SUEXEC_BIN="/usr/lib/apache2/suexec" -D DEFAULT_PIDLOG="/var/run/apache2.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="mime.types" -D SERVER_CONFIG_FILE="apache2.conf" 

Vérifiez votre /etc/apache2/envvars pour APACHE_LOCK_DIR. Dans mon Ubuntu 12.04, c'est /var/lock/apache2$SUFFIX , étant SUFFIX normalement vide.

Vérifiez si le répertoire existe et est accessible en écriture.

Est-ce que le fichier envvars n'est pas correctement fourni? Si vous regardez /etc/init.d/apache2 vous pouvez voir que cela provient.

Mon (par défaut) /etc/apache2/envvars :

 # envvars - default environment variables for apache2ctl # this won't be correct after changing uid unset HOME # for supporting multiple apache2 instances if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}" else SUFFIX= fi # Since there is no sane way to get the parsed apache2 config in scripts, some # settings are defined via environment variables and then used in apache2ctl, # /etc/init.d/apache2, /etc/logrotate.d/apache2, etc. export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data export APACHE_PID_FILE=/var/run/apache2$SUFFIX.pid export APACHE_RUN_DIR=/var/run/apache2$SUFFIX export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX # Only /var/log/apache2 is handled by /etc/logrotate.d/apache2. export APACHE_LOG_DIR=/var/log/apache2$SUFFIX ## The locale used by some modules like mod_dav export LANG=C ## Uncomment the following line to use the system default locale instead: #. /etc/default/locale export LANG ## The command to get the status for 'apache2ctl status'. ## Some packages providing 'www-browser' need '--dump' instead of '-dump'. #export APACHE_LYNX='www-browser -dump' ## If you need a higher file descriptor limit, uncomment and adjust the ## following line (default is 8192): #APACHE_ULIMIT_MAX_FILES='ulimit -n 65536' 

Si rien ne fonctionne, j'essayerais de réinstaller le (s) paquet (s).

TL; DR; Vous devez démarrer apache2 en utilisant ce que vous avez déjà:

 sudo /etc/init.d/apache2 {start|stop|restart} 

Détaillé:

AH00558: apache2: Impossible de déterminer de manière fiable le nom de domaine complet du serveur, en utilisant 127.0.1.1. Définissez la directive 'ServerName' globalement pour supprimer ce message

Ce message signifie que vous devez définir votre nom de serveur / nom de domaine. Il n'est pas essentiel de le faire pour un hébergement local / test de production, vous n'avez pas à vous en préoccuper.

Lorsque vous essayez de l'exécuter dans l'autre sens, en utilisant uniquement apache2 , vous recevrez ces messages d'erreur en raison de ce qui a été dit précédemment: les variables d'environnement sont définies lorsque vous commencez à utiliser le script par défaut init.d

Comme autre dit, vous devez charger (source) votre environnement avant de l'exécuter directement Une autre option est d'utiliser: apache2ctl eg

sudo apache2ctl -S

Décharger mes hôtes

Peut-être que cela résoudra votre problème

 sudo bash -c '. /etc/apache2/envvars ; apache2' 

Vous devez mettre à jour le DocumentRoot de /var/www/html vers /var/www

Modifiez le fichier /etc/apache2/sites-available/000-default.conf comme suit

 DocumentRoot /var/www 

Cela fonctionne pour moi

 sudo -u root bash -c "source /etc/apache2/envvars; apache2 -V"