2017-11-24 32 views
1

상대 경로를 사용하려고 할 때 아파치 서버 서비스가 모듈 파일을 찾지 못하는 문제가 있습니다.Apache ~ 상대 경로에 대한 서버 루트 구성

문제의 핵심은 내 프로젝트에 Apache 서비스 하위 폴더가 있고, Apache 서비스가 사용자가 프로그램을 설치하기로 결정한 위치와 상관없이 실행할 수 있어야한다는 것입니다. 다음과 같이 아파치 파일이 프로젝트에서 찾을 수 있습니다

파일은 다음과 같습니다

  • 아파치 루트 : [APPDIR] /Apache2.4
  • 서비스 파일 (xxx.exe이며) : APPDIR] /Apache2.4/bin

이제 올바른 root를 인식하도록 httpd.conf의 ServerRoot를 구성 할 수 있습니까?

내 현재 설정은 다음과 같습니다 직접 xxx.exe이며 실행시이 잘 작동

ServerRoot ".." 

. 그러나 서비스로 설치하려고하면 실패합니다. 서비스가 xxx.exe를 직접 실행하지 않고 오히려 다른 디렉토리에서 실행하므로 ServerRoot ".."는 더 이상 작동하지 않습니다. 이 응용 프로그램 로그에서 생산하는 오류 메시지는 다음과 같습니다

>>> xxx.exe: Syntax error on line 81 of C:/Release Static/Apache2.4/conf/httpd.conf: Cannot load modules/mod_access_compat.so into server: The specified module could not be found.  . 

내 첫 번째 방법이 아파치가 파일을 찾기 위해 노력하고 정확한 경로를 기록려고 수정. 이를 위해, 오류를 일으킨 행 앞에 httpd.conf에 LogMessage 지시문을 작성하여 Apache 로그에 오류 로그의 내용을 표시하려고했습니다. 그러나 테스트 메시지만큼 간단한 메시지도 기록 할 수 없었습니다. 사용하려고 시도한 코드는 다음과 같습니다.

LoadModule log_config_module "C:/Release Static/Apache2.4/modules/mod_log_config.so" 
LoadModule log_debug_module "C:/Release Static/Apache2.4/modules/mod_log_debug.so" 
ErrorLog "C:/Release Static/Apache2.4/logs/error.log" 
LogLevel debug rewrite:trace8 
LogMessage "Test" 

이 오류는 상대적 경로가있는 모듈을로드하려고 할 때만 발생하기 때문에 명백하게 작동했습니다. 그러나, 그것은 error.log에 "Test"를 기록하지 않았으므로 분명히 내가 놓친 다른 것이 있습니다.

이 작업이 많은 경우, 다음 단계는 Apache가 사용하려고하는 ServerRoot 디렉토리의 절대 경로를 Apache로 반환하는 방법을 알아 내려고 시도 할 때까지 다음 값을 수정합니다. 솔루션에서 상대 경로는 항상 설치 디렉토리를 가리 킵니다.

어쨌든, 이것에 대한 도움은 매우 감사하겠습니다. 사전에

감사합니다, 키라 Resari

답변

0

좋아, 시행 착오가 많이 나는 작동하는 구성 발견 후 :

방법 중 하나를 상대 경로가 있습니다 사용하는 서버 루트를 구성을 은 ServerRoot를 전혀 설정하지 않았습니다..

이렇게하면 아파치가 서버 파일을 시작하는 디렉토리의 첫 번째 루트에 서버 루트를 기본 설정합니다.

예를 들어, 나는에서 서비스를 시작 :

D:\Unexpected Folder\Totally Unexpected Folder\NBL\Apache2.4\bin 

... 그리고 성공적으로 NBL \ Apache2.4 \ 모듈 폴더에있는 모든 모듈을 발견하고 NBL \ 아파치의 로그 파일을 쓰기 시작했다. 4 \ logs 폴더에 있습니다.