A variável de configuração do Apache2 não está definida

56

Eu instalei o apache2 no Ubuntu 13.10. Se eu tentar reiniciar usando

sudo /etc/init.d/apache2 restart

Eu recebo esta mensagem:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

Então eu li que deveria editar meu arquivo httpd.conf . Mas, como não consigo encontrá-lo na pasta /etc/apache2/ , tentei localizá-lo usando este comando:

/usr/sbin/apache2 -V

Mas a saída que recebo é esta:

[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}

A linha 74 de /etc/apache2/apache2.conf é esta:

Mutex file:${APACHE_LOCK_DIR} default

Dei uma olhada no meu arquivo /etc/apache2/envvar , mas não sei o que fazer com ele.

O que devo fazer?

    
por Kurt Bourbaki 29.11.2013 / 17:49

8 respostas

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

esta mensagem é exibida porque você executou diretamente o binário apache2. No Ubuntu / Debian, a configuração do apache depende do arquivo envvar que é ativado apenas se você iniciar o apache com o script de inicialização ou o apachectl.

seu problema original é que você não possui um hostname (fqdn) apropriado para sua máquina. Se você não puder alterá-lo, altere a variável ServerName em /etc/apache2/apache2.conf para localhost ou seu FQDN preferido.

    
por 29.11.2013 / 18:50
74

Fonte do seu envambiente, executando-o assim:

source /etc/apache2/envvars

e depois

/usr/sbin/apache2 -V

Você deve receber:

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"
    
por 28.06.2014 / 12:51
7

Verifique seu /etc/apache2/envvars para o APACHE_LOCK_DIR. No meu Ubuntu 12.04, isso é /var/lock/apache2$SUFFIX , sendo SUFFIX normalmente vazio.

Verifique se o diretório existe e é gravável.

Pode ser que o arquivo envvars não tenha sido originado corretamente? Se você der uma olhada em /etc/init.d/apache2 , poderá ver que ela foi obtida.

Meu (padrão) /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'

Se nada funcionar, tentarei reinstalar o (s) pacote (s).

    
por 29.11.2013 / 18:49
2

Como dito anteriormente, você precisa carregar (fonte) seu ambiente antes de executá-lo diretamente Outra opção é usar: apache2ctl , por ex.

sudo apache2ctl -S

para despejar meus hosts

    
por 24.02.2015 / 23:38
2

TL; DR; Você deve iniciar o apache2 usando o que você já tem:

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

Detalhado:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message

Esta mensagem significa que você precisa definir seu nome de servidor / nome de domínio. Não é essencial fazer isso para um localhost / teste de produção, você não precisa se preocupar com isso.

Quando você tenta executá-lo de outra maneira, usando apenas apache2 , você receberá essas mensagens de erro por causa do que foi dito antes: as variáveis de ambiente são definidas quando você começa a usar o script padrão em init.d .

    
por 02.06.2016 / 13:07
-1

Talvez isso resolva seu problema

sudo bash -c '. /etc/apache2/envvars ; apache2'
    
por 13.04.2016 / 16:44
-2

Você precisa atualizar o DocumentRoot de /var/www/html para /var/www

Edite o arquivo /etc/apache2/sites-available/000-default.conf da seguinte forma

DocumentRoot /var/www
    
por 12.05.2014 / 12:31
-2

Isso funciona para mim

sudo -u root bash -c "source /etc/apache2/envvars; apache2 -V"
    
por 06.06.2016 / 10:15