개발환경

개요
Devilbox is a modern and highly customizable dockerized PHP stack supporting full LAMP and MEAN and running on all major platforms. 로컬 개발시 필요한 모든 버전들 간에 쉽게 전환하거나 결합할 수 있도록 하는 것이 주 목표입니다. 가상호스트, SSL인증서와 DNS레코드가 자동으로 생성되는 환경을 지원하기 위해 지원하는 프로젝트 갯수에 제한이 없습니다. NodeJS 같은 리스닝서버도 문제없이 사용 할 수 있도록 프로젝트별 리버스 프록시 또한 지원하고 있습니다. Catch-all 이메일과 인기있는 개발도구들 또한 준비되어 있습니다. 모든 것들이 사전 설정되어 있기 때문에 별도의 설정이 필요없습니다.
게다가, Devilbox 는 상이한 운영체제 들 간에도 동일하고 재현가능한 개발환경을 제공하고 있습니다.
이 예제는 Devilbox PHP 컨테이너 내에 Phalcon을 설치하기 위해 phalcon
을 사용합니다. 아래의 단계들을 완료하고 나면, http와 https 로 서비스 할 준비가 완료된 유효한 Phalcon 셋업을 가지게 될 것입니다.
구성
다음의 설정이 사용됩니다:
Setting |
Value |
Project name |
my-phalcon |
VirtualHost directory |
/shared/httpd/my-phalcon |
데이터베이스 |
n.a. |
TLD_SUFFIX |
loc |
Project URL |
http://my-phalcon.loc , https://my-phalcon.loc |
- Devilbox PHP 컨테이너 내에서, 프로젝트는 항상
/shared/httpd/
폴더에 존재하게 됩니다.
- 호스트 운영체제에서, 프로젝트는 Devilbox git 디렉토리 내
./data/www/
에 존재하게 됩니다(기본값). 이 경로는 HOST_PATH_HTTPD_DATADIR
값을 수정하여 변경할 수 있습니다.
Activation
간단한 6단계만으로 개발환경이 준비완료됩니다.
- PHP 컨테이너로 진입
- 신규 가상호스트 디렉토리 생성
- Phalcon 설치
- Webroot 디렉토리를 심링크
- DNS 레코드 셋업
- 브라우저로
http://my-phalcon.loc
주소를 여세요
- (Nginx) 커스텀 vhost 설정파일 생성
PHP 컨테이너로 진입
필요한 모든 도구를 PHP컨테이너가 제공하기 때문에 모든 작업은 PHP 컨테이너 내에서 진행됩니다. Devilbox git 디렉토리로 이동해서 ./shell.sh
(윈도우 환경에서는 shell.bat
)를 실행시켜서 PHP 컨테이너로 진입합니다.
신규 가상호스트 디렉토리 생성
가상호스트(vhost) 디렉토리는 프로젝트가 저장될 위치의 이름입니다. (<가상호스트 디렉토리명>.TLD_SUFFIX
가 최종 URL이 됩니다 ).
Phalcon 설치
새로 만들어진 가상호스트 디렉토리로 이동해서 phalcon
cli 로 Phalcon을 설치합니다.
설치 후 디렉토리 구조는 다음과 유사합니다:
[email protected] in /shared/httpd/my-phalcon $ tree -L 1
.
└── phalconphp
1 directory, 0 files
웹루트(webroot) 심링크
실제 웹루트 디렉토리를 htdocs
로 심링크 하는 것은 중요한 부분입니다. 웹서버는 모든 프로젝트의 문서 루트가 <가상호스트 디렉토리명>/htdocs/
에 있다고 판단합니다. 서버는 이 경로에서 파일을 읽어 서비스 하게 됩니다. 이 경로에는 어플리케이션의 진입점(보통 index.php
)이 있어야 할 곳이기도 합니다.
그러나 일부 프레임워크에서는 파일과 컨텐츠를, 몇단계까지 내려가는지 알수 없는 하위 디렉토리에 저장하기도 합니다. 그래서 이 부분은 개발환경에 대해 사전설정하는 것이 불가능합니다. 그런 이유로 직접 수작업으로 프레임워크가 요구하는 해당 폴더로 심링크를 걸어야 합니다.
설치 후 디렉토리 구조는 다음과 유사합니다:
[email protected] in /shared/httpd/my-phalcon $ tree -L 1
.
├── phalconphp
└── htdocs -> phalconphp/public
2 directories, 0 files
위의 리스트에서도 볼 수 있듯이, 웹서버에서 필요로 하는 htdocs
폴더는 이제 프레임워크의 진입점을 가르키게 됩니다.
NOTE: When using Docker Toolbox, you need to explicitly allow the usage of symlinks.
DNS 레코드
If you have Auto DNS configured already, you can skip this section, because DNS entries will be available automatically by the bundled DNS server.
If you do not have Auto DNS configured, you will need to add the following line to your host operating system /etc/hosts
file (or C:\Windows\System32\drivers\etc
on Windows):
브라우저 실행
브라우저를 실행해서 http://my-phalcon.loc
혹은 https://my-phalcon.loc
으로 이동
별도의 가상호스트용 Config 파일 생성 (Nginx 인 경우만)
Nginx를 사용중이시라면 기본값으로 동작하지 않습니다. 이 부분을 해결하려면, 별도의 vhost 설정파일을 생성해야 합니다.
.env
파일의 HTTPD_TEMPLATE_DIR
값을 수정하지 않았다면, 프로젝트 폴더에 안에 .devilbox
폴더를 생성하세요.
./cfg/vhost-gen/nginx.yml-example-vhost
에서 디폴트 nginx 설정값들을 ./data/www/my-project/.devilbox/nginx.yml
파일로 복사해 넣으세요
복사해서 만든 nginx.yml 파일을 다른건 건드리지 않도록 조심스럽게 수정합니다:
try_files $uri $uri/ /index.php$is_args$args;
부분을
try_files $uri $uri/ /index.php?_url=$uri&$args;
and
location ~ \.php?$ {
부분을
location ~ [^/]\.php(/|$) {
으로 변경하고 nginx.yml
을 저장합니다. 탭이 한칸이라도 들어가 있으면 devilbox 는 이 별도설정값을 사용하지 않으니 주의해주세요. Devilbox를 재시작 하기 전 Devilbox 쉘에서 yamllint nginx.yml
명령을 사용해서 파일 유효성을 체크하실 수 있습니다.
참조