이제 VirtualBox를 이용하여 가상 머신을 생성하고 이 안에 운영체제를 설치하고 개발 환경을 만들 차례입니다.
vagrant 는 위의 작업을 자동화 해주는 기능을 제공하며 홈스테이드는 이 기능을 이용하여 라라벨의 개발 환경을 가상 머신에 미리 구성해 놓은 애플리케이션입니다.
vagrant 는 커맨드 방식으로 사용해야 하므로 시작 메뉴에서 실행을 선택하여 cmd.exe 를 입력하여 윈도의 커맨드 창을 띄워서 진행합니다. Mac OS X 나 리눅스 사용자는 터미널을 띄우면 됩니다.
라라벨 box 생성
Box 는 vagrant 에서 사용할 수 있는 패키지 포맷으로 특정 목적에 맞도록 미리 생성된 가상 머신 이미지를 의미합니다.
필요한 박스를 검색하려면 vagrant 제작사의 박스 공유 페이지(https://atlas.hashicorp.com/boxes/search)에서 할 수 있습니다.
독자들의 PC내 vagrant 에 박스를 추가하려면 box add 명령어를 사용하면 됩니다. cmd.exe 에 다음 vagrant 명령어를 입력하여 라라벨 박스를 만듭니다.
vagrant box add laravel/homestead
|
가상 머신의 종류를 물어보면 1번 virtualbox 를 선택하고 엔터를 입력합니다.
다운로드가 시작되는데 꽤 오랜 시간(30분 이상)이 소요되므로 차를 한잔 하고 와도 됩니다.
설치가 완료되면 "box : Successfully addedd box 'laravel/homestead' 라는 메시지가 표시됩니다.
환경 구성
이제 가상 머신 생성과 설정은 끝났고 Homestead 로 개발 환경을 구성할 순서입니다. 윈도 사용자는 시작 메뉴에서 Git 프로그램 그룹을 찾아서 Git-Bash 를 실행하며 OS X 사용자는 터미널을 열어서 bash 쉘을 띄웁니다.
cd 명령어로 homestread 프로젝트를 다운받을 경로로 이동합니다. 이 디렉터리에서 앞으로 가상 머신을 구동하고 종료하게 되며 저는 사용자 홈 디렉터리인 c:\Users\lesstif\ 폴더에서 작업을 진행하였으며 사용자의 홈 디렉터리는 ~/ 로 표현할수 있습니다.
다운받을 경로로 이동했다면 git 으로 소스를 체크 아웃 합니다.
이제 cd Homestead 명령으로 폴더로 이동하고 릴리스 태그를 확인하기 위해 다음 명령어를 실행합니다.
git tag -l
v4. 0.1
v4. 0.2
v4. 0.3
v4. 0.4
v4. 0.5
v5. 0.0
v5. 0.1
|
마지막 버전(예: v5.0.1) 을 확인하고 해당 버전을 체크아웃합니다.
이제 bash init.sh 명령어를 입력하면 사용자의 홈 디렉터리에 .homestead 폴더가 생성되고 초기 설정 파일이 생성됩니다.
이제 에디터로 사용자의 홈 디렉터리의 .homestead 폴더에 있는 Homestead.yaml 를 열어 봅시다.
IP 와 메모리 설정
먼저 맨 위를 보면 다음과 같은 내용이 있습니다.
memory: 2048
cpus: 1
provider: virtualbox
|
- ip : 가상 머신의 ip 주소으로 웹 브라우저로 테스트할 때나 가상 머신에 ssh 로 연결할 때 이 ip에 연결하면 되며 기본 값은 192.168.10.10 입니다.
- memory : 가상 머신이 사용하는 메모리로 메가 단위이며 기본 설정은 2G입니다.
- cpus : 가상 머신에 할당한 cpu 의 갯수로 기본 설정은 1입니다.
- provider : 가상 머신에 연결하기 위한 vagrant provider 로 virtualbox 를 사용하고 있습니다.
ssh 키 쌍 설정
가상 머신에 연결할 때 사용할 ssh 키쌍을 설정하며 기본 값은 .ssh폴더내에 id_rsa(개인키) 공개키(id_rsa.pub) 파일입니다.
키 쌍이 없는 독자들은 git-bash 에서 다음 명령어를 사용하여 키 쌍을 생성하면 되며 -C 옵션 뒤에는 사용자의 이메일 주소를 입력하면 됩니다.
"Enter passphrase :" 프롬프트에는 개인키를 보호할 암호를 입력하며 그냥 엔터를 치면 개인키를 암호로 보호하지 않으므로 유출될 경우 보안 문제가 발생할 수 있습니다.
ssh-keygen -t rsa -C "you@homestead"
|
공유 폴더 지정
folders 키워드는 가장 중요한 설정중 하나로 가상 머신과 공유할 디렉터리를 지정합니다. 기본 값인 ~/Code 는 사용자의 홈 디렉터리 밑에 Code 디렉터리를 의미하며 윈도 사용자일 경우 C:\Users\로그인명\Code 가 됩니다.
map 에 설정한 디렉터리가 to 에 지정된 가상 머신의 디렉터리 경로와 매핑한다는 의미로 탐색기에서 C:\Users\로그인명\Code 에 laravel 이라는 디렉터리를 생성하면 자동으로 가상 머신의 /home/vagrant/Code/laravel 가 생성이 됩니다.
이 기능을 사용하여 윈도에서 에디터로 작성한 파일은 저장과 동시에 가상 머신에 반영되므로 FTP 나 git 등으로 웹 서버에 파일을 반영할 필요가 없습니다.
folders:
- map: ~/Code
to: /home/vagrant/Code
|
웹 사이트 설정
sites:
to: /home/vagrant/Code/Laravel/ public
|
sites 키워드는 웹 서버의 가상 호스트(Virtual Host)와 DocumentRoot 를 지정하는 중요한 키워드입니다. map 에 있는 도메인 이름으로 요청이 들어오면 to 에 있는 경로로 서비스를 하겠다는 의미입니다.
즉 브라우저에서 http://homestead.app 로 연결하면 웹 서버는 /home/vagrant/Code/Laravel/public 에 있는 컨텐츠를 서비스하게 됩니다.
homestead.app 은 DNS(Domain Name Service) 에 없으므로 웹 브라우저가 찾을 수 있도록 고정 hosts 파일에 등록해야 합니다. OS X와 리눅스는 /etc/hosts, 윈도는 C:\Windows\System32\drivers\etc\hosts 파일을 열어서 다음 내용을 추가해 줍니다. (관리자 권한이 필요합니다.)
sites 항목에서는 또 페이스북이 개발한 PHP 가상 머신인 HHVM 의 설정 여부를 지정할 수 있으며 다음과 같이 hhvm : true 를 설정하면 php-fpm 엔진대신 HHVM 을 사용하게 됩니다.
sites:
to: /home/vagrant/Code/Laravel/ public
hhvm : true
|
여러 개의 가상 호스트가 있을 경우 가상 호스트별로 HHVM 또는 php-fpm 사용 여부를 지정할 수 있습니다.
sites:
to: /home/vagrant/Code/Laravel/ public
hhvm : true
to: /home/vagrant/Code/service2/ public
hhvm : false
|
HHVM 사용시 phpinfo(); 함수를 호출하면 HipHop 이라는 문자만 출력하게 되므로 자세한 정보를 얻고 싶은 독자는 github 에서 hhvminfo.php (http://git.io/3dQYYg) 를 다운받으면 됩니다.
Box 구동/중지
이제 설정이 완료되었습니다. 박스를 구동하려면 먼저 Homestead 폴더로 이동합니다.
이제 Homestead 폴더에서 vagrant up 명령어를 사용하면 됩니다.
[c:\Users\lesstif\Homestead]vagrant up
Bringing machine 'default' up with 'virtualbox' provider... ==> default : Checking if box 'laravel/homestead' is up to date... ==> default : Setting the name of the VM: homestead
default : Adapter 1 : nat
default : Adapter 2 : hostonly
default : 80 => 8000 (adapter 1 )
default : 443 => 44300 (adapter 1 )
default : 3306 => 33060 (adapter 1 )
default : 5432 => 54320 (adapter 1 )
default : 22 => 2222 (adapter 1 )
==> default : Booting VM... ==> default : Waiting for machine to boot. This may take a few minutes... default : SSH address: 127.0 . 0.1 : 2222
default : SSH username: vagrant
==> default : php5-fpm start/running, process 1981
==> default : Running provisioner: shell... default : Running: inline script
==> default : Updating to version 1cb427ff5c0b977468643a39436f3b0a356fc8eb.
==> default : Downloading: 100 %
==> default : Use composer self-update --rollback to return to version b296e654eb
3e136ca6fa08fa3bcb1d4782c13f8b
==> default : Running provisioner: shell... default : Running: C:/Users/lesstif/AppData/Local/Temp/vagrant-shell20150429-
|
박스를 일시 중지하려면 vagrant suspend 명령어를 사용하면 됩니다.
[c:\Users\lesstif\Homestead]vagrant suspend
|
중지된 박스를 재개하려면 vagrant up 명령어를 사용할 수 있습니다.
[c:\Users\lesstif\Homestead]vagrant up
Bringing machine 'default' up with 'virtualbox' provider... ==> default : Checking if box 'laravel/homestead' is up to date... ==> default : Resuming suspended VM... ==> default : Booting VM... ==> default : Waiting for machine to boot. This may take a few minutes... default : SSH address: 127.0 . 0.1 : 2222
default : SSH username: vagrant
default : SSH auth method: private key
==> default : Machine booted and ready!
|
박스를 종료시키고 가상 머신을 끄려면 vagrant halt 명령어를 사용하면 됩니다.
[c:\Users\lesstif\Homestead]vagrant halt
==> default : Attempting graceful shutdown of VM... |
구동/중지 스크립트
vagrant up 과 vagrant halt 명령어는 Homestead 폴더에서 명령행 방식으로 실행해야 하므로 불편할 수 있으므로 윈도 사용자라면 다음과 같이 batch 파일을 작성하여 편리하게 사용할 수 있습니다.
독자들의 Homestead 환경에 맞게 경로를 수정한 후에 각각 vup.bat, vhalt.bat 로 저장한 후에 PATH 가 걸린 폴더에 넣어 줍니다.
@ ECHO ON
cd /D C:\Users\lesstif\Homestead
vagrant up
|
이제 cmd.exe 를 열고 임의의 경로에서 vup 명령어로 홈스테드를 구동하고 vhalt 명령어로 홈스테드를 중지할 수 있습니다.
@ ECHO ON
cd /D C:\Users\lesstif\Homestead
vagrant halt
|
가상 머신에 ssh 연결
가상 머신에 ssh 로 연결하려면 vagrant ssh 명령어를 사용하거나 아니면 직접 ssh vagrant@192.168.10.10 에 연결하면 됩니다. ssh 개인키대신 암호를 사용할 경우 로그인 암호는 vagrant 가 됩니다.
[c:\Users\lesstif\Homestead] vagrant ssh
[c:\Users\lesstif\Homestead] ssh vagrant @192 .168. 10.10 |
혹은 SecureCRT 나 putty 같은 GUI 기반의 ssh client 에 위의 로그인 정보를 설정하고 사용해도 됩니다.
이제 홈스테드 설정을 마쳤으니 데이타베이스에 연결해 보도록 하겠습니다.
출처 : https://www.lesstif.com/display/LIFE