web-dev-qa-db-fra.com

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

J'ai installé Apache2 sur Ubuntu 13.10. Si j'essaye 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 à l'aide de 127.0.1.1. Définissez la directive 'ServerName' globalement pour supprimer ce message

J'ai donc lu que je devais modifier mon httpd.conf fichier. Mais comme je ne le trouve pas dans /etc/Apache2/ dossier, j'ai essayé de le localiser en utilisant cette commande:

/usr/sbin/Apache2 -V

Mais la sortie que j'obtiens 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}

Ligne 74 de /etc/Apache2/Apache2.conf est-ce:

Mutex file:${Apache_LOCK_DIR} default

J'ai jeté un œil à mon /etc/Apache2/envvar fichier, mais je ne sais pas quoi en faire.

Que devrais-je faire?

68
Kurt Bourbaki
[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 exécuté directement le binaire Apache2. Dans Ubuntu/Debian, la configuration Apache repose sur le fichier envvar qui est uniquement activé.

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 à localhost ou votre nom de domaine complet préféré.

62
ah83

Sourcez 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"
89
nadavkav

Vérifier votre /etc/Apache2/envvars pour Apache_LOCK_DIR. Dans mon Ubuntu 12.04, c'est /var/lock/Apache2$SUFFIX, SUFFIX étant normalement vide.

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

Se peut-il que le fichier envvars ne soit pas correctement approvisionné? Si vous regardez /etc/init.d/Apache2 vous pouvez voir qu'il 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'essaierais de réinstaller le ou les packages.

7
erny

Comme d'autres l'ont dit, vous devez charger (source) votre environnement avant de l'exécuter directement. Une autre option consiste à utiliser: Apache2ctl par exemple.

Sudo Apache2ctl -S

vider mes hôtes

2
amd

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 à l'aide de 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ôte 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 obtiendrez ces messages d'erreur à cause de ce qui a été dit auparavant: les variables d'environnement sont définies lorsque vous commencez à utiliser le script par défaut dans init.d.

2
George