6.x 대에서 어느 날 갑자기 발생한 이상 현상이다.
HTTP request status: Fails 라는 메시지가 관리화면의 상태 보고서에 나타난 것이다.
상태보고서의 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 /> <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 /> 안타깝게도 2009년 1월 기준으로 5.x대 모듈은 없고, 6.x대 모듈 뿐이다. </p>
<p>2. 관리자로 로그인한 후, http://드루팔 사이트/admin/logs/status/run-cron<br /> 을 이용, 정기적인 크론 작업을 1회 수행한다.<br /> <br /> 수정) 위 URL은 Clean URL을 이용가능한 드루팔에서만 사용할 수 있다.<br /> 관리 > 보고서 > 상태보고 화면에 있는 "정기작업을 수동으로 실행" 링크를 클릭해도 된다.</p>
<p>3. 그리고 나서 상태 보고서를 보라. 문제가 사라졌는가? (우리는 이렇게 해서 해결했었다.)
그로부터 며칠 뒤, 또다시 똑같은 현상이 발생했다.
역시나... 정확한 원인을 모르고 임시 대응한 것이 화근이었다.
이번에는 더 근본적인 원인을 찾아 많이도 헤맸다.
그러던 중 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 />가능하면 해결해 주는 것이 좋겠다. 혹시 아나... 내부망에서 내부망으로의 참조가 필요할지.
* 그 이외에도 온갖 해결책들이 예로 나와 있었으나 각각의 상황이 달라 해결되지 않을 수 있다.
예를 들자면,
- .htaccess 파일의 수정
- php.ini 파일의 설정 수정
- 드루팔 코어 파일의 수정, 특히 includes/commons.inc
- mainternance(정비용 안내 화면) 설정을 오프/온으로 해 본다든지...
정말이지 정확한 원인을 모른다는 건... 안타까운 일이다.
내용을 자세히 써 드리지 못해 죄송합니다. 다시 상세히 써 드리자면,
드루팔 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 입니다.
2. 관리자로 로그인한
익명 Posted at 01:38 on 목, 02/05/20092. 관리자로 로그인한 후, 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.