83 votes

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 pleinement qualifié du serveur, en utilisant 127.0.1.1. Définissez la directive 'ServerName' de manière globale pour supprimer ce message.

Donc j'ai lu que je devais modifier mon httpd.conf fichier. Mais, puisque je ne peux pas le trouver dans /etc/apache2/ J'ai essayé de le localiser en utilisant cette commande :

/usr/sbin/apache2 -V

Mais le résultat que j'obtiens est le suivant :

[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 c'est ça :

Mutex file:${APACHE_LOCK_DIR} default

J'ai jeté un coup d'oeil à mon /etc/apache2/envvar mais je ne sais pas quoi en faire.

Que dois-je faire ?

0 votes

Que contient votre fichier envvars ?

110voto

linuxfreebird Points 657

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

source /etc/apache2/envvars

et ensuite

/usr/sbin/apache2 -V

Tu devrais avoir :

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"

0 votes

/etc/apache2/envvars n'existe pas

6 votes

Le fichier existe bien sur mon système ubuntu, mais le Shell ne le reconnaît pas comme un Shell Shell, j'ai donc besoin de ceci : source /etc/apache2/envvars ; apache2 -V

8 votes

Il suffirait d'utiliser apachectl -V au lieu de charger manuellement les variables d'environnement.

76voto

lyricat Points 1480
[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 d'apache repose sur le fichier envvar qui est seulement activé.

Si vous démarrez apache avec la commande init script ou apachectl.

Votre problème initial est que vous n'avez pas de nom d'hôte (fqdn) approprié pour votre machine.

Si vous ne pouvez pas le changer, changez le nom de l'entreprise. ServerName variable dans /etc/apache2/apache2.conf a localhost ou votre FQDN préféré.

1 votes

Vous avez raison pour l'init script. Ensuite, j'ai ajouté ServerName localhost a apache2.conf (parce que httpd.conf n'est pas toujours utilisé sur Ubuntu) et maintenant tout fonctionne comme il se doit. Pourriez-vous ajouter des détails à vos réponses, afin que je puisse les marquer comme acceptées ?

1 votes

En commençant par apache2ctl n'a pas fonctionné pour moi, j'ai dû utiliser le service : sudo service apache2 restart

1 votes

Mais pourquoi ont-ils rompu la apache2 de l'Union européenne en premier lieu ?

7voto

Mary Coles Points 1

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

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

Se peut-il que le fichier envvars ne soit pas correctement sourcé ? Si vous jetez un coup d'œil à /etc/init.d/apache2 vous pouvez voir que ça a sourd.

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'essaierai de réinstaller le(s) paquet(s).

3voto

amd Points 131

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

sudo apache2ctl -S

d'abandonner mes hôtes

3voto

George Points 121

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 pleinement qualifié du serveur, en utilisant 127.0.1.1. Définissez la directive 'ServerName' de manière globale 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 localhost/testing de production, vous n'avez pas besoin de vous en soucier.

Lorsque vous essayez de l'exécuter dans l'autre sens, en utilisant seulement apache2 vous obtiendrez ces messages d'erreur à cause 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 en init.d .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X