Ubuntu 14.04로 업그레이드 한 후 Apache가 작동하지 않는 이유는 무엇입니까?


36
[aman@aman-Inspiron-1440:~$ apache2
[Mon Apr 21 17:36:38.019213 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Mon Apr 21 17:36:38.019345 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Mon Apr 21 17:36:38.019370 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Mon Apr 21 17:36:38.019385 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Mon Apr 21 17:36:38.019414 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.028756 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029032 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029056 2014] [core:warn] [pid 4134] 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}

이것은/etc/apache2/apache2.conf 파일 의 내용입니다 .


3
74 행에서 /etc/apache2/apache2.conf의 구문 오류가 있기 때문에 작동하지 않습니다 . 해당 파일의 내용을 업로드하여 무엇이 잘못되었는지 확인하십시오.
Lucio

2
어제부터 Google 검색
Amandeep Singh



/ var / www를 / var / www / html로 이동해야합니까 ??
Amandeep Singh

답변:


31

나는이 문제가 있었다 : 원인은 파일에있다.

/etc/apache2/sites-available/000-default.conf 

루트가 변경된 곳 :

업그레이드 전 = 업그레이드 /var/www
후 =/var/www/html

이 파일을 수정하려면 편집하십시오

sudo gedit /etc/apache2/sites-available/000-default.conf

그리고 아파치를 다시 시작하십시오

sudo service apache2 restart

이것이 OP가 직면 할 수있는 문제이기 때문에 현재이 문제가 아닙니다. 어느 쪽이든, 이 답변 에서 설명했듯이 000-default.conf파일을 편집하지 않는 것이 좋습니다 .
Dan

/ var / www / html로 이동 한 후 작동
Amandeep Singh

2
+1 나는 이것을 알아낼 수 없었다. 당신은 남자입니다!
gion_13 April

2
내 경우에는 내가 아직이 문제에 봉착하고 html하위 폴더는 이미 내 경우에는 내 모든 사이트에서 VirtualHost 사용하기 때문에 실제로 관련이있는 존재
jhbsk

4
이것은 대답이 될 수 없습니다! 위의 오류는 DocumentRoot설정 과 관련이 없습니다 .
Reinier Post

50

아파치가 나를 위해 일하고 있지만이 문제가 발생했습니다. 나는 단순히 빨리하고 싶었다

$ /usr/sbin/apache2 -V

의 값을 찾을 수 있습니다 SERVER_CONFIG_FILE. 이것이 더 이상 apache2를 시작하는 방법이 아니기 때문에 OP 게시 오류로 실패합니다. 빠르고 더러운 해결 방법은 먼저 누락 된 환경을 설정하는 것입니다.

$ source /etc/apache2/envvars
$ /usr/sbin/apache2 -V

이것은 APACHE_LOCK_DIR 변수를 설정하며 모두 양호합니다 ( -D SERVER_CONFIG_FILE="apache2.conf").


1
이것은 나를 위해 일했습니다. 같은 문제로 Apache가 실행 중이면서 실행에 apache2 -S실패했습니다. 모두 고정되었습니다.
Twisty

이상한. 이것은 나를 위해 작동하지 않는 것 같습니다. 왜 그래야 하는지 이해가됩니다 .
Tyler Crompton

@TylerCrompton-어떻게 실패 했습니까? 오류가 무엇입니까?
레인

차이가 없었습니다. 여전히 OP에 발생한 문제가 발생했습니다. apache2루트로 실행 하면 문제가 해결되었습니다.
Tyler Crompton

4
더 쉬운 대안 :apache2ctl -V
Reinier Post

14

증상 및 해결책

많은 Q & A 웹 사이트 나 포럼에서 사람들은 증상과 실제 원인을 혼동합니다. 방금 우분투 서버를 13.10에서 14.04.1로 업그레이드하고 OP에 설명 된 것과 동일한 증상이 나타났습니다.
1- 아파치가 작동하지 않는 것 같습니다. 2- 아파치 구성 변수가 정의되지 않았습니다. 3- OP에서 언급 한 구문 오류.

문제는 이러한 증상이 모두 실제 문제와 밀접한 관계가있는 것은 아니며 최선을 다해 도움을 청하는 사람들에게만 방해가됩니다.

다른 루트 문제로 인해 관리자가 대략 같은 설명으로 이와 같은 사이트를 방문하게 될 수 있습니다. "OS를 업그레이드했는데 아파치가 작동하지 않습니다 ..."

특정한 원인

OP와 똑같은 명백한 증상을 모두 보았 으므로이 질문에 끌 렸습니다. 불행히도, 내 문제의 실제 근본 원인에 대한 유효한 힌트를 포함하는 유일한 대답은 downvoted (-1), user1469291에 의해 1의 담당자로 게시되었습니다! 그래서 문제 (및 그에 대한 해결책)에 대한 명확한 설명을 찾을 때까지 다른 웹 사이트를 더 검색했습니다.

다음의 해결책은 OP의 실제 문제를 해결하지 못할 수도 있지만,이 질문에 관심이있는 다른 사람들이 저와 같은 이유로 도움이 될 것이라고 확신합니다.

/etc/apache2/apache2.conf는 다음을 포함합니다 :

# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

이는 / etc / apache2 / sites-enabled /의 .conf로 끝나는 사이트 구성 파일 만로드됨을 의미합니다. 해당 디렉토리의 이전 심볼릭 링크는 무시됩니다.

예전에는 사이트에서 사용 가능 했었습니다 *. 이것이 바로 ww1.example.com, ww2.example.com 등의 모든 가상 호스트 구성 파일이 작동하는 데 사용되었지만 업그레이드 후 갑자기 처음에는 예기치 않게 작동을 멈춘 이유입니다.

따라서 위의 지시문을 변경하고 아파치를 다시로드하거나, 내가했던 것처럼 sites-enabled /의 모든 이전 심볼릭 링크를 수동으로 제거하고 sites-available /의 모든 파일 이름을 바꾸어 접미사 .conf를 추가 한 다음 각각을 다시 활성화하십시오 개별적으로 사이트.

또한 apache.conf의 기본 지시문은 더 엄격합니다.

<Directory />
  Options FollowSymLinks
  AllowOverride None
  Require all deny
</Directory>
<Directory /var/www/>
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>

따라서 / home / user / somewhere에서 가상 사이트를 호스팅하는 경우 지시문을 적절히 재정의해야합니다.


1
이것은 좋은 대답입니다. 서두르고 일이 제대로 작동하지 않는다고 불평하기 전에 변경 사항을 이해하는 것이 가장 좋습니다.
MikeNGarrett

1
이 덕분에 파일 이름을 변경해도 사이트 사용 가능 심볼릭 링크가 제거되지는 않았습니다.
Benno

이것은 해결책을 제공하지 않습니다.
Reinier Post

6

문제를 면밀히 살펴보면 실행 중 apache2입니다. 우분투에서 아파치를 시작하려면 다음 명령을 실행하십시오.

sudo apache2ctl start

아파치 설정은 여러 파일로 나뉘며, 그중 하나는 환경 변수입니다. 그냥 실행하면 apache2이러한 변수가 설정되지 않습니다.

apache2ctl 스크립트는로 아파치를 시작하기 전에 변수를로드하고 (필요한 경우 다른 작업도 수행합니다) apache2 -k start.


1
#sudo apache2ctl start httpd (pid 1390) 이미 실행 중
Amandeep Singh

그렇다면 당신이 겪고있는 문제는 무엇입니까?
Dan

@AmandeepSingh : sudo apache2ctl restart대신 시도하십시오 .
scheffield

1
@scheffield이 명령을 여러 번 시도했습니다. 새 버전의 Apache에서 루트 폴더 위치가 / var / www에서 / var / www / html로 변경 되었기 때문에 문제가 발생했습니다. 모든 파일을 하위 폴더 / html로 옮겼습니다.
Amandeep Singh

4

구성을 편집하십시오. sudo leafpad /etc/apache2/apache2.conf:

# Include the virtual host configurations:

#before upgrade = 
IncludeOptional sites-enabled/*
#after upgrade = 
/IncludeOptional sites-enabled/*.conf

또는 파일을 제거하십시오.


+1. 답은 하향 조정되었지만이 질문을 방문 할 수있는 많은 관리자의 문제에 대한 솔루션이 포함되어 있습니다.
augustin

2

서버가 12.04 LTS에서 14.04 LTS로 업그레이드 된 후 모든 가상 호스트가 사라 졌을 때 augustin의 답변 이 효과적이었습니다. 평판이 좋으면 찬성합니다.

다음 명령은 이미없는 .conf모든 심볼릭 링크에 접미사를 추가 /etc/apache2/sites-enabled합니다.

sudo find /etc/apache2/sites-enabled -type l ! -name '*.conf' -exec rename 's/$/.conf/' {} \;

또한 Allow from/ Deny from구문 사용 Require에서 mod_authz_host 모듈 로 변경되었습니다 ( 여기서는 2.2 설명서 링크).

다음 명령의 일반적인 사용 편집합니다 Order allow, deny다음에 Allow from all일하기 Require all granted를 대신 :

perl -0777 -pi.bak -e 's/Order\s+allow\s*,\s*deny\s*\n\s*Allow\s+from\s+all/Require all granted/sg' /etc/apache2/sites-available/* 

1

실제로 docroot는 / var / www에서 / var / www / html로 정확하고 신뢰할 수있게 변경됩니다. do-release-upgrade 스크립트가 docroot를 다시 되 돌리지 않는 것은 좋지 않습니다.

A) 유효하지만 html이 더 일반적입니다. CentOS는 이와 관련하여 영향력이 있습니다. "작동합니다"페이지도 더욱 발전했습니다.

B) / var / www / html을 사용할 필요는 없지만 그렇게하면 ...

  • 콘텐츠 또는 별칭을 마이그레이션해야합니다 (권장되지 않음).
  • 이전 위치가 참조 된 모든 위치를 업데이트해야합니다.
  • 특히 백업 / 복원 / 사용자 정의 스크립트.

C) 처음부터 구축하고 마이그레이션하는 것이 더 쉬울 수 있습니다.

D)이 증상은 Trusty의 업그레이드 상자에서 "sudo apache2 -k graceful", 업그레이드 또는 envvar가 범위 내에 있지 않아 발생하는 경우 발생합니다. 대신 "sudo apache2ctl start / stop / restart"를 사용하십시오.


0

나의 경우에는:

  • html하위 폴더가 /var/www/이미 존재하지만 여전히 오류가 발생했습니다.AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf
  • 예를 들어 /home/{user}/sites/기본값 대신 사용자 루트에 내 웹 사이트를 호스팅하기로 이미 결정했습니다./var/www/html
  • Apache 2.4.7을 사용하고 있습니다 (버전을 확인할 수 있습니다 apache2 -v)

5 단계로 문제를 해결하는 방법 :

  1. 에서 /etc/apache2/apache2.confI 라인 169 후 다음과 같은 추가 :

    <Directory /home/{user}/sites/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
  2. 내 가상 호스트 구성라는 확신했다 website.conf에서 /etc/apache2/sites-available기본에서 복사 000-default.conf및처럼 보였다 :

    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName website.dev
        ServerAlias www.website.dev
        DocumentRoot /home/{user}/sites/website
    </VirtualHost>
    
  3. 내 사이트 ( sudo a2dissite website && sudo a2ensite website)와 서버를 다시로드했는데 초기 오류가 사라졌습니다. 우와! 그러나 "AH00035 : 경로의 구성 요소에 대한 검색 권한이 없기 때문에 파일 시스템 경로 '/ home / {user} / sites'에 대한 액세스가 거부되었습니다." 이것은 4 단계에서 해결되었습니다.

  4. 새로운 문제는 권한 때문에 발생했기 때문에 website폴더로 연결되는 각 디렉토리를로 설정 했습니다 chmod 755. 모든 하나! home폴더에서 {사용자} 폴더 사이트 폴더, 심지어 내 웹 사이트 폴더

  5. website.dev모든 것이 잘로드 된 상태 에서 브라우저를 새로 고친 후 !

추신 : 나는 이미 파일에 설치 website.dev했다 /etc/hosts.

보너스 팁 : 특정 폴더의 권한을 확인하려면 명령을 사용할 수 있습니다 stat -c %a /path/to/file/or/folder. 디렉토리의 모든 부분에 대한 권한을 확인하려면을 사용하십시오 namei -m /path/to/final/folder.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.