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?
[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é.
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"
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.
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
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
.