HTTP request status: Fails 라는 메시지가 관리화면의 상태 보고서에 나타나는 경우

6.x 대에서 어느 날 갑자기 발생한 이상 현상이다.
HTTP request status: Fails 라는 메시지가 관리화면의 상태 보고서에 나타난 것이다.

상태보고서의 HTTP Request Fails Reset상태보고서의 HTTP Request Fails Reset

조사해 보니,
http://drupal.org/node/337673
http://drupal.org/node/359049
등에서 원인을 마이너 버전 업그레이드로 지목하고 있었다.

특히 6.8에서 6.9로의 업그레이드가 문제가 많은 듯 했다.
(수정 : 잘못된 원인 추정으로 판명됐다. 우리의 경우, 다른 원인이 있었다...)

하지만 드루지기가 관리하고 있는 6.8 사이트에서 6.9로 전부 동시에 업그레이드했을 때
위 문제가 발생하는 사이트는 딱 하나가 있었다. 나머지는 정상이었다.
어떤 특정 조건에서 발생하는 문제인 것 같은데... 시간이 없어서 더 분석은 못하고,
일단은 해결 조치에 들어갔다. (정확한 원인도 모르면서 해결 조치라니... 별로 좋은 패턴은 아니다)

해결 시도 하나.</p>
<p>1. Http Request Fail Reset 모듈을 설치/활성화 한다.<br />&nbsp;&nbsp;&nbsp; <a href="http://drupal.org/project/http_request_fail_reset" title="http://drupal.org/project/http_request_fail_reset">http://drupal.org/project/http_request_fail_reset</a> <br />&nbsp;&nbsp;&nbsp; 안타깝게도 2009년 1월 기준으로 5.x대 모듈은 없고, 6.x대 모듈 뿐이다.&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>2. 관리자로 로그인한 후, http://드루팔 사이트/admin/logs/status/run-cron<br />&nbsp;&nbsp;&nbsp; 을 이용, 정기적인 크론 작업을 1회 수행한다.<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 수정) 위 URL은 Clean URL을 이용가능한 드루팔에서만 사용할 수 있다.<br />&nbsp;&nbsp;&nbsp; 관리 &gt; 보고서 &gt; 상태보고 화면에 있는 &quot;정기작업을 수동으로 실행&quot; 링크를 클릭해도 된다.</p>
<p>3. 그리고 나서 상태 보고서를 보라. 문제가 사라졌는가? (우리는 이렇게 해서 해결했었다.)&nbsp;

 

그로부터 며칠 뒤, 또다시 똑같은 현상이 발생했다.
역시나... 정확한 원인을 모르고 임시 대응한 것이 화근이었다.
이번에는 더 근본적인 원인을 찾아 많이도 헤맸다.
그러던 중 http://drupal.org/node/333345#comment-1112556 에 적혀있는
도메인 관련 언급에 아! 하고 무릎을 쳤다.

나의 모든 홈페이지들은 홈서버로 DNS의 설정 부족? 혹은 보안상 이유로 내부망에서는
서로를 볼 수 없게 돼 있었다. 아아... 혹시나 해서 /etc/resolv.conf 파일
(윈도우즈에서는 /windows/system32/drivers/etc/hosts 파일 )에다가
해당 사이트를 IP로 직접 입력해서 Domain Name 을 정의했다. 그랬더니...
보라. 문제 현상이 사라졌다!!!

해결 시도 둘째. 이것은 특효약이었다.</p>
<p>1. 문제 현상이 발생하는 드루팔이 홈서버나 호스팅으로 운영되면서,<br />DNS의 설정 부족으로 내부적으로 자체 홈서버에 접속하지 못하는 경우에는...</p>
<p>2. 드루팔이 설치된 서버의 /etc/resolv.conf 파일<br />(윈도우즈에서는 /windows/system32/drivers/etc/hosts 파일 )에다가<br />해당 사이트를 IP로 직접 입력해서 Domain Name 을 정의하라. </p>
<p>3. 그리고 나서 상태 보고서를 보라. 문제가 사라졌는가? (우리는 이렇게 해서 또 해결했었다.)</p>
<p>[만일 이 방법으로 해결됐다면 원인!을 제시할 수 있다]<br />드루팔에서 HTTP Request를 체크하는 system_check_http_request() 함수에서<br />제대로 된 경고/에러를 보여주는 것(위 문제 현상)이다. 하지만 실제로는 문제가 없는 것이다.<br />자기 자신의 서버에서만 내부의 홈페이지로 접근이 안될 뿐, 실제로는 외부로의 웹 Request는 잘 된다.<br />그래도 관리자로 상태보고 화면을 봤을 때, 위 문제 현상의 메시지가 아주 신경이 쓰이므로,<br />가능하면 해결해 주는 것이 좋겠다. 혹시 아나... 내부망에서 내부망으로의 참조가 필요할지.&nbsp;&nbsp;&nbsp;

 

* 그 이외에도 온갖 해결책들이 예로 나와 있었으나 각각의 상황이 달라 해결되지 않을 수 있다.

예를 들자면,

- .htaccess 파일의 수정
- php.ini 파일의 설정 수정
- 드루팔 코어 파일의 수정, 특히 includes/commons.inc
- mainternance(정비용 안내 화면) 설정을 오프/온으로 해 본다든지...

정말이지 정확한 원인을 모른다는 건... 안타까운 일이다.

Your rating: None 평균 : 5 (1 vote)

댓글

2. 관리자로 로그인한

2. 관리자로 로그인한 후, http://드루팔 사이트/admin/logs/status/run-cron
을 이용, 정기적인 크론 작업을 1회 수행한다.

정기크론작업은 어떻게 수행하는지요 ??
주소로 들어가니 다음과같은 페이지가 나타낫습니다...

Page not found

* By task
* By module

Welcome to the administration section. Here you may control how your site functions.
The requested page could not be found.

내용을 자세히 써

내용을 자세히 써 드리지 못해 죄송합니다. 다시 상세히 써 드리자면,

드루팔 6.x대에서는 관리자로 로그인후,
관리 > 보고서 메뉴 > 상태 보고를 클릭했을 때 나오는 화면을 보면,
"정기 작업을 직접 실행"이라는 링크가 보일 겁니다.

바로 그 링크의 주소가 http://드루팔 사이트/admin/logs/status/run-cron 입니다.
"정기 작업을 직접 실행"이라는 링크를 직접 클릭해도 같은 효과입니다.

아! 혹시 Clean URL 기능이 활성화 돼 있지 않으면 말씀하신 에러가 날지도 모르겠네요.
Clean URL을 사용하지 않는 드루팔의 경우, 웹 주소창에 ?q=어쩌구저쩌구 하는 형태일 겁니다.

------------

드루팔 5.x대에서는 관리자로 로그인후,
관리 > 로그 > 상태 보고를 클릭했을 때 나오는 화면을 보면,
"정기 작업을 직접 실행"이라는 링크가 보일 겁니다.

Clean URL 기능을 사용하는 5.x대 드루팔의 경우,
그 링크의 주소도 역시나 http://드루팔 사이트/admin/logs/status/run-cron 입니다.