PHP 웹 개발에(혹은 그외 웹개발) 있어서 일종의 전형적이고 스마트한 방법이 있어서 정리하고 공유할까 한다. 협업을 할때 팀원들 간에 상이한 개발환경에 문제가 있거나, 개인 개발시에도 테스팅, 배포, 패키징 환경을 정형화 함으로써 개발시간을 줄일수 있기 때문이다.
이 방법에는 다음의 오픈소스 소프트웨어를 사용한다.
- VirtualBox : https://www.virtualbox.org/
- Vagrant : https://www.vagrantup.com/
- Atom : https://atom.io/
- Homestead : http://laravel.com/docs/homestead
기본 셋팅 환경은 Xcode가 인스톨 된 Mac OSX 환경이다.
0. PHP, NodeJS, Composer (My Desktop)
# after install homebrew brew --version brew update brew install nodejs php56 php56-mcrypt php56-xdebug brew list
php를 설치후 composer를 설치한다.
curl -sS https://getcomposer.org/installer | php mkdir bin chmod 755 composer.phar && mv composer.phar bin/composer composer selfupdate composer --version echo 'export PATH="~/bin:~/.composer/vendor/bin:vendor/bin:$PATH"' >> ~/.profile
homestead에 사용할 개인키를 만든다.
ssh-keygen -t rsa -C "your@email.com" mkdir key mv ~/.ssh/id_rsa ~/key/your-151007.pem mv ~/.ssh/id_rsa.pub ~/key/your-151007.pub
1. VirtualBox (My Desktop)
Virtaul Box는 오픈소스 가상머신 관리툴이다. 다음 링크를 이용해 OS에 맞게 설치한다.
VirtualBox --help
2. Install Vagrant (My Desktop)
vagrant 는 가상머신에 command-line 명령어로 간단히 VM을 띄울수 있는 툴이다. 다음 링크를 이용해서 OS에 맞게 설치한다.
vagrant --version
테스트로 Ubuntu 14.04 LTS 를 설치해 보도록하자. 터미널에서 다음과 같은 순서로 폴더를 만들고 명령어를 실행하면 간단히 VM이 만들어진다.
vagrant box add ubuntu/trusty64 vagrant box list mkdir ubuntu_trusty64 cd ubuntu_trusty64 vagrant init ubuntu/trusty64 vagrant up --provider=virtualbox
만들어진 VM에 다음과 같은 방법으로 간단히 서버 접근 가능하다.
vagrant ssh
vagrant 기반의 VM은 Vargrantfile이 있는 폴더 중심으로 작동하게 된다. VM의 상태는 해당 폴더위치에서 status 명령어로 상태를 볼수 있고, 전체 띄어져있는 VM 상태는 global-status를 이용해서 볼 수 있다. destroy 명령어로 간단히 VM을 삭제할 수 있다.
vagrant status vagrant global-status vagrant destroy
혹여나 Virtualbox 의 이미지가 지워지지 않거나 문제가 있을때에는 다음의 명령어를 이용해 VM을 지우거나 리셋한다.
VBoxManage list runningvms VBoxManage controlvm <uuid> poweroff VBoxManage unregistervm <uuid>
3. Atom (My Desktop)
Atom 에디터는 오픈소스 기반이고, Windows, Mac OSX, Linux등에 설치 운영이 가능하며, 패키지, 테마등이 많은 개발자들의 자발적인 참여로 이뤄진다. 첫 페이지의 설치 파일 다운로드를 해서 설치한다.
에디터 설치 후 ‘메뉴 Atom’ → ‘Install Shell Commands’ 로 쉘 커멘드도 설치한다.
apm 명령어로 기본적인 php, javascript linter 를 설치한다.
composer global require squizlabs/php_codesniffer # for phpcs phpcs --version npm -g install jshint csslint jshint --version csslint --version gem install pep8
apm install linter linter-php linter-phpcs linter-jshint linter-csslint linter-pep8
vi ~/.atom/config.cson "linter-csslint": executablePath: "/usr/local/bin/csslint" "linter-jshint": executablePath: "/usr/local/bin/jshint" lintInlineJavaScript: false "linter-phpcs": codeStandardOrConfigFile: "PSR2" executablePath: "/usr/local/bin/phpcs" "linter-pep8": pep8ExecutablePath: "/usr/local/bin/pep8"
- Remote-FTP : 원격 에디팅 SFTP, SFTP
- file-icons : TreeView의 아이콘 지원
- minimap : 에디터 우측 미니맵
- open-recent : 최근 수정 파일 / 디렉토리
- pretty-json
- highlight-selected
- todo-show
- editconfig
- terminal-plus : 에디터내 console 창 지원
- auto-detect-indentation : 자동 indent 지원
apm install Remote-FTP file-icons hide-files minimap open-recent pretty-json highlight-selected todo-show editconfig terminal-plus auto-detect-indentation
4. Homestead (My Desktop)
vagrant box add laravel/homestead composer global require laravel/homestead=~2 laravel/installer # show installed-package vagrant box list composer global show -i homestead --version
homestead 를 초기화 시키면 ~/.homestead/Homestead.yaml 파일 생성된다. 그리고 VM과 코드 공유를 할 기본 디렉토리는 ~/Sites/homestead
mkdir -p ~/Sites/homestead homestead init atom ~/.homestead/Homestead.yaml
Homestead.yaml 파일을 다음과 같이 수정한다.
--- ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox authorize: ~/key/your-151007.pub keys: - ~/key/your-151007.pem folders: - map: ~/Sites/homestead to: /home/vagrant/homestead sites: - map: homestead.app to: /home/vagrant/homestead/homestead/public databases: - homestead variables: - key: APP_ENV value: local
그리고 파일 하나 더 수정해주는데 VM이 설치될때 provisioning을 하는 것이다.
atom ~/.homestead/after.sh
다음의 구문은 git 버젼을 최신으로 바꾸고, zip, colordiff, git을 새로 까는 스크립트다.
apt-get purge -y -qq git add-apt-repository ppa:git-core/ppa -y apt-get update apt-get upgrade -y -qq apt-get install -y -qq zip colordiff git
그리고 Homestead 2.1.8의 경우 에러가 나는 부분이 있어서 다음을 추가/수정한다. 혹은 자신만의 셋팅이 있다면 추가해도 된다.
atom ~/.homestead/aliases
alias serve=serve-laravel function serve-laravel() { if [[ "$1" && "$2" ]] then sudo dos2unix /vagrant/scripts/serve-laravel.sh sudo bash /vagrant/scripts/serve-laravel.sh "$1" "$2" 80 else echo "Error: missing required parameters." echo "Usage: " echo " serve-laravel domain path" fi }
파일을 저장하고 다음과 같은 명령어로 VM을 띄우고, VM에 접근한다.
homestead up homestead ssh
Homestead VM
homestead ssh로 VM 서버에 접근했으면 ~/Sites/homestead/test 를 웹서버에 연결한다.
mkdir ~/homestead/test echo '<?php phpinfo();' > ~/homestead/test/index.php serve test.app ~/homestead/test
My Desktop의 hosts 파일을 수정한다.
atom /etc/hosts
~/Sites/homestead/ 폴더 안의 폴더대로 .app를 도메인에 붙여서 각각 서비스 하도록 한다.
192.168.10.10 homestead.app test.app
http://test.app URL에 브라우저로 확인하면 제대로 웹 개발 환경이 셋팅 된 것을 확인 할 수 있다.
vagrant + vbox 조합은 shared folder가 워낙 느려서 vagrant-vbguest 플러그인을 깔아서 쓰도록 한다.
reference : https://github.com/dotless-de/vagrant-vbguest
vagrant plugin install vagrant-vbguest # after vagrant up vagrant vbguest --status