메뉴 건너뛰기

Docker 컨테이너에 xe3 설치시 오류에 대해 문의 드립니다.

안녕하세요. 오늘 세미나에 참석하기 전에 XE3 개발환경을 세팅하려 시도하던 중에 막히는 부분이 있어서 글 남깁니다.

제 로컬환경에서는 동일한 방법으로 세팅했을 경우 이상없이 작동했는데 도커 컨테이너에 설치할 경우에 문제가 있습니다. 도커 컨테이너 환경은 리눅스입니다.

 

==========

1. 로컬환경

  - Mac OSX El Capitan 10.11.6

  - apache2, php5.5, mysql 5.0 (좀 구식입니다.ㅜㅜ)

2. 도커 컨테이너

  - ubuntu 16.04 LTS

  - apache2, php7, mariadb10.0

==========

 

컨테이너에 XE1은 이상없이 설치/작동하는 걸 확인했으나, XE3는 500에러가 발생합니다.

여러 가지 경우의 수를 두고 테스트 하던 중에 .htaccess의 rewrite를 수정해서 임의로 추가한 "index.html"로 접속하도록 설정해보니 브라우저에서 페이지가 잘 떴습니다만, XE3를 실행하기 위해 다시 아래처럼 바꾸면 다시 500 에러를 발생시킵니다.

 

==========

# Standard routes
RewriteRule ^ index.php [L]

==========

 

디버깅을 활성화 하면 compiled.php에서 오류가 발생하네요. 아래는 디버깅 활성화했을 때의 오류 메시지 입니다.

 

==========

NotFoundHttpException in compiled.php line 8313:
in compiled.php line 8313
at RouteCollection->match(object(Request)) in compiled.php line 7547
at Router->findRoute(object(Request)) in compiled.php line 7512
at Router->dispatchToRoute(object(Request)) in compiled.php line 7504
at Router->dispatch(object(Request)) in compiled.php line 2310
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in compiled.php line 9642
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in FreezeSEO.php line 26
at FreezeSEO->handle(object(Request), object(Closure))
at call_user_func_array(array(object(FreezeSEO), 'handle'), array(object(Request), object(Closure))) in compiled.php line 9634
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Purifying.php line 30
at Purifying->handle(object(Request), object(Closure))
at call_user_func_array(array(object(Purifying), 'handle'), array(object(Request), object(Closure))) in compiled.php line 9634
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in LangPreprocessor.php line 48
at LangPreprocessor->handle(object(Request), object(Closure))
at call_user_func_array(array(object(LangPreprocessor), 'handle'), array(object(Request), object(Closure))) in compiled.php line 9634
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in compiled.php line 2925
at VerifyCsrfToken->handle(object(Request), object(Closure)) in ExceptAppendableVerifyCsrfToken.php line 21
at ExceptAppendableVerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ExceptAppendableVerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in compiled.php line 9634
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in compiled.php line 12993
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in compiled.php line 9634
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in compiled.php line 11585
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in compiled.php line 9634
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in compiled.php line 12730
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in compiled.php line 9634
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in compiled.php line 12667
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in compiled.php line 9634
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in compiled.php line 2982
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in compiled.php line 9634
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in compiled.php line 9624
at Pipeline->then(object(Closure)) in compiled.php line 2257
at Kernel->sendRequestThroughRouter(object(Request)) in compiled.php line 2240
at Kernel->handle(object(Request)) in index.php line 55

==========

 

해결하기 위해 아래의 방법들을 해봤습니다.

1. 폴더 권한 변경

최초 설치시 storage와 bootstrap/cache의 권한을 707로 설정했는데요, 혹시 도커 환경이라 뭔가 다른가 싶어서 777로 설정해봤으나 동일했습니다. 쓸데없는 짓 같아서 다시 707로 전환했습니다.;; 

2. 도커 환경내 hosts파일 수정

다른 분의 글을 참고해서 hosts 파일에 두 문장을 추가했습니다.

==========

127.0.0.1 xe3.dev

127.0.0.1 192.168.99.101

==========

hosts파일에 포트는 적을 수 없다고 해서 양쪽 포트는 80으로 맞췄습니다. 

3. 설치시 site url 지정

처음 리눅스 인스톨러로 설치시에는 http://xe3.dev로, 두 번째 git을 통해 설치할 때는 http://xe3.dev/xpressengine으로 지정해서 설치했다가 이 부분에서 문제가 발생하나 싶어서 ip주소인 http://192.168.99.101로 설치해봤습니다. XE1을 설치했을 때는 문제가 없는 걸로 보아 dev도메인 연결 문제는 아닌 것 같습니다. 로컬의 hosts에 192.168.99.101 xe3.dev는 추가해둔 상태고, xe1을 설치했을 때는 해당 도메인으로 접속이 가능했습니다.  

이 외에도 도커 이미지를 다시 만들어보기도 하고, 이런저런 방법을 해봤는데 별다른 영향을 주지 않는 삽질이었던 것 같아 적지 않습니다. ;

 

오전에 일정이 있어서 일찍 가서 개발환경 세팅 도움을 받기 어려울 것 같아 빠듯한 시간임에도 불구하고 글 남기게 됐습니다. 양해 부탁드리겠습니다.

고맙습니다.

 

포럼의 다른 글