Question 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 à l'aide de 127.0.1.1. Définissez la directive 'ServerName' globalement pour supprimer ce message

Alors j'ai lu que je devrais éditer 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 le résultat obtenu 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 est-ce:

Mutex file:${APACHE_LOCK_DIR} default

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

Que devrais-je faire?


54
2017-11-29 16:49


origine


Qu'y a-t-il dans votre fichier envvars? - etagenklo


Réponses:


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

ce message est affiché car vous avez directement exécuté le binaire apache2. Dans Ubuntu / Debian, la configuration d’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 initial est que vous n'avez pas un nom d'hôte correct (fqdn) pour votre ordinateur. si vous ne pouvez pas le changer, changez le ServerName variable dans /etc/apache2/apache2.conf à localhost ou votre nom de domaine complet préféré.


51
2017-11-29 17:50



Vous avez raison à propos du script init. Puis j'ai ajouté ServerName localhost à apache2.conf (parce que httpd.conf n’est pas toujours utilisé sur Ubuntu) et maintenant tout fonctionne comme il se doit. Pourriez-vous s'il vous plaît ajouter des détails à vos réponses, afin que je puisse le marquer comme accepté? - Kurt Bourbaki
commençant par apache2ctl n'a pas fonctionné pour moi, j'ai dû utiliser le service: sudo service apache2 restart - Édouard Lopez
Mais pourquoi ont-ils brisé le apache2 commande en premier lieu? - reinierpost
Cette solution ne résout que AH00558: apache2: Could not reliably determine the server's fully qualified domain name mais ça ne résout pas Config variable ${APACHE_LOCK_DIR} is not defined. - Vladimir Vukanac
pour moi aussi je vois le même problème. - nepsdotin


Source vos envvars en le lançant 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"

72
2018-06-28 10:51



/etc/apache2/envvarsn'existe pas - Mark Richman
Le fichier existe sur mon système Ubuntu, mais le shell ne le reconnaît pas comme un script shell. J'ai donc besoin de ceci: source / etc / apache2 / envvars; apache2 -V - Ben Crowell
Cela devrait être la réponse acceptée !! Merci! - VaTo
Pourrait juste utiliser apachectl -V au lieu de charger manuellement les variables d’environnement. - Sam Sehnert
Si cela ne fonctionne toujours pas, essayez source /etc/apache2/envvars && sudo -E apache2 -V ou connectez-vous en tant que root et faire par réponse ci-dessus. Faire passer l’environnement apache2 à un utilisateur régulier qui doit ensuite utiliser sudo ne fonctionnera pas sans "-E". Les utilisateurs permanents ne peuvent pas lire le dossier privé du certificat parmi d'autres problèmes. Vous obtiendrez une erreur. Vous devez exécuter sudo -E ou exécuter le compte root complètement. - bshea


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

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

Le fichier envvars n’est-il pas correctement acheté? 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, je tenterais de réinstaller le (s) paquet (s).


7
2017-11-29 17:49





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

sudo apache2ctl -S 

jeter mes hôtes


2
2018-02-24 22:38





TL; DR; Vous devriez commencer 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 / des tests de production, vous n'avez pas à vous en préoccuper.

Lorsque vous essayez de l'exécuter dans l'autre sens, utilisez uniquement apache2, vous obtiendrez ces messages d’erreur en raison 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
2018-06-02 11:07





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

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

-1
2018-04-13 14:44



lire en premier, c’est exactement cette ligne qui a déjà été fournie et qui explique également pourquoi ce n’est pas une réponse correcte. - asdmin


Vous devez mettre à jour DocumentRoot à partir de /var/www/html à /var/www

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

DocumentRoot /var/www

-2
2018-05-12 10:31





Ça marche pour moi

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

-2
2018-06-06 08:15



Dans la question, il y avait un problème (un message d'erreur à propos de ServerName) et une méthode de débogage défaillante (qui est provoquée par l'absence de recherche des variables d'environnement). Votre réponse concerne la méthode de débogage et non la question. - asdmin