Apache2 config değişkeni tanımlanmadı


65

Apache2'yi ubuntu 13.10'a yükledim. Kullanarak yeniden başlatmayı denersem

sudo /etc/init.d/apache2 restart

Bu mesajı alıyorum:

AH00558: apache2: Sunucunun tam etki alanı adı 127.0.1.1 kullanılarak güvenilir bir şekilde belirlenemedi. Bu mesajı gizlemek için global olarak 'ServerName' yönergesini ayarlayın

Bu yüzden dosyamı düzenlemeliyim httpd.conf. Ancak, onu /etc/apache2/klasörde bulamadığım için bu komutu kullanarak bulmaya çalıştım:

/usr/sbin/apache2 -V

Ama elde ettiğim çıktı şu:

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

Buradaki 74. satır /etc/apache2/apache2.conf:

Mutex file:${APACHE_LOCK_DIR} default

Dosyama bir göz attım /etc/apache2/envvar, fakat ne yapacağımı bilemiyorum.

Ne yapmalıyım?


Envvars dosyanızda ne var?
etagenklo

Yanıtlar:


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

Bu mesaj, doğrudan apache2 ikilisini yürüttüğünüz için görüntülenir. Ubuntu / Debian'da apache config sadece aktif olan envvar dosyasına dayanır.

Eğer apiteyi init betiği veya apachectl ile başlatırsanız.

Asıl sorun, makineniz için uygun bir ana bilgisayar adınız (fqdn) olmamasıdır.

Bunu değiştiremiyorsanız, değiştirmek ServerNamede değişkeni /etc/apache2/apache2.confiçin localhostveya tercih ettiğiniz FQDN.


1
Init betiği hakkında haklısın. Sonra ekledi ServerName localhostiçin apache2.conf(çünkü httpd.confher zaman Ubuntu üzerinde kullanılmaz) ve şimdi her şey olması gerektiği gibi çalışır. Lütfen kabul ettiğiniz gibi işaretleyebilmem için cevaplarınıza ayrıntı ekleyebilir misiniz?
Kurt Bourbaki,

1
ile başlayan apache2ctlbenim için işe yaramadı, ben zorunda servisini kullanmak :sudo service apache2 restart
Edouard Lopez

Ama neden apache2ilk başta emri kırdılar?
reinierpost 16:16

2
Bu çözümler sadece çözer AH00558: apache2: Could not reliably determine the server's fully qualified domain name, çözmez Config variable ${APACHE_LOCK_DIR} is not defined.
Vladimir Vukanac,

benim için de aynı sorunu görüyorum.
indianwebdevil

84

Bu şekilde çalıştırarak envvarlarınızı kaynaklayın:

source /etc/apache2/envvars

ve sonra

/usr/sbin/apache2 -V

Almalısın:

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"

/etc/apache2/envvarsyok
Mark Richman

6
Dosya, ubuntu sistemimde var, ancak kabuk bir kabuk betiği olarak tanımıyor, bu yüzden buna ihtiyacım var: source / etc / apache2 / envvars; apache2 -V
Ben Crowell

6
apachectl -VOrtam değişkenlerine manuel olarak yüklemek yerine sadece kullanılabilir .
Sam Sehnert

Hala çalışmıyorsa, yukarıdaki cevaba göre deneyin source /etc/apache2/envvars && sudo -E apache2 -Vveya giriş yapın rootve yapın . Apache2 env dosyasını sudo kullanması gereken normal bir kullanıcıya sağlamak "-E" ile çalışmaz. Düzenli kullanıcı izinleri, diğer sorunların yanı sıra sertifika özel klasörünü okuyamaz. Bir hata alırsınız. -Sudo yapmanız ya da tamamen root hesabı altında çalıştırmanız gerekiyor.
bshea

Bu, Apache'yi bir docker ön plan cmd'si olarak çalıştırmak için çok kullanışlıdır. ÖrneğinCMD . /etc/apache2/envvars; /usr/sbin/apache2 -DFOREGROUND
Alastair McCormack

7

/etc/apache2/envvarsAPACHE_LOCK_DIR adresini kontrol edin . Benim Ubuntu 12.04, bu /var/lock/apache2$SUFFIXSUFFIX normalde boş olmasıdır.

Dizinin var olup olmadığını ve yazılabilir olup olmadığını kontrol edin.

Envvars dosyasının doğru kaynaklanmadığı olabilir mi? Bir göz /etc/init.d/apache2attıysanız, kaynak olduğunu görebilirsiniz.

Benim (varsayılan) /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'

Hiçbir şey işe yaramazsa, paketleri yeniden denerim.


2

Diğerlerinin de dediği gibi, doğrudan çalıştırmadan önce ortamınızı yüklemelisiniz (kaynak) gerekir Başka bir seçenek kullanmaktır: apache2ctlörn.

sudo apache2ctl -S

ev sahiplerimi terk etmek


2

TL; DR; Sahip olduklarınızı kullanarak apache2'yi başlatmalısınız:

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

Detaylı:

AH00558: apache2: Sunucunun tam etki alanı adı 127.0.1.1 kullanılarak güvenilir bir şekilde belirlenemedi. Bu mesajı gizlemek için global olarak 'ServerName' yönergesini ayarlayın

Bu mesaj, sunucu adınızı / etki alanı adınızı tanımlamanız gerektiği anlamına gelir. Yerel bir ev sahibi / üretim testi için yapmanız şart değildir, endişelenmenize gerek yoktur.

Başka bir şekilde çalıştırmayı denediğinizde, yalnızca kullanarak apache2, daha önce söylenenlerden dolayı bu hata mesajlarını alırsınız: ortam değişkenleri, varsayılan betiği kullanmaya başladığınızda tanımlanır init.d.


-1

Belki bu probleminizi çözecektir

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

1
ilk önce tam olarak bu satır zaten sağlanmış ve neden doğru bir cevap olmadığı da açıklanmıştır.
asdmin

-2

DocumentRoot’u adresinden güncellemeniz gerekir /var/www/html./var/www

/Etc/apache2/sites-available/000-default.conf dosyasını aşağıdaki gibi düzenleyin.

DocumentRoot /var/www

-2

Bu benim için çalışıyor

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

Soruda, bir sorun (SunucuAdı ile ilgili bir hata mesajı) ve başarısız olan bir hata ayıklama yöntemi (ortam değişkenlerinin kaynaklanmamasının neden olduğu) vardı.
asdmin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.