들어가며
프로젝트에서 PhantomJS를 사용하기 때문에 개발환경에 PhantomJS를 설치할 필요가 있었다. 사실 윈도우에서는 이미 빌드된 바이너리 실행파일만 PATH에 걸리도록 설정하면 모든 설치가 끝나지만 우분투에서는 약간 달랐기 때문에 혹시나 고생할 다른 누군가를 위해 블로그 포스팅으로 정리해둔다.
우분투에서 PhantomJS를 설치하는 방법은 세 가지 정도로 압축될 수 있다. 직접 빌드해서 설치하는 방법(최신 버전을 설치할 수 있는 장점이 있다), 빌드된 바이너리를 설치하는 방법, apt-get 으로 설치하는 방법 이렇게 세가지이다.
뒤로 갈수록 더 간단한 설치방법이다. 차례대로 하나씩 살펴보도록 하자.
Ubuntu 에서 PhantomJS를 직접 빌드해서 설치하는 방법
직접 빌드하게 되면 아직 바이너리가 등록되지 않은 최신 버전을 사용할 수 있는 장점이 있다. 여기에서는 이제막 출시된 2.0.0 버전을 빌드해서 설치해보자.
PhantomJS 사이트에서는 우분투 환경에서 PhnatomJS를 빌드하는 방법에 대해 친절하게 안내해주고 있다. 사실 그 방법 그대로 빌드하면 된다. 터미널을 열고 아래와 같이 입력하면 소스를 다운받고 빌드가 시작된다.
$ sudo apt-get install build-essential g++ flex bison gperf ruby perl libsqlite3-dev libfontconfig1-dev libicu-dev libfreetype6 libssl-dev libpng-dev libjpeg-dev python libX11-dev libxext-dev $ git clone git://github.com/ariya/phantomjs.git $ cd phantomjs $ git checkout 2.0 $ ./build.sh
build.sh 스크립트를 실행할 때, 일반적으로 빌드는 모든 코어를 다 쓰도록 되어있는데, 갯수를 제한하려면 아래와 같이 jobs 옵션을 추가한다.
$ ./build.sh --jobs 2
직접 빌드하는 것은 짧게는 30분 길게는 수 시간이 걸린다. 내 경우에는 2시간 정도 기다리다가 다음날 출근해보니 빌드가 완료되어 있었다. AWS 에서 가장 낮은 수준의 환경에서 빌드할 경우 10시간이 넘게 걸렸다는 이야기도 있다.
빌드가 끝나면, 하위에 bin 폴더가 생기고 여기에 phantomjs 실행 파일이 만들어진다.
이제 패키징된 형태로 만들기 위해 deploy 폴더에서 아래와 같이 package.sh 를 실행한다.
$ ./package.sh
package.sh 스크립트를 실행하면, 배포용으로 패키징된 phantomjs-2.0.0-linux-x86_64 폴더와 이 폴더를 압축한 phantomjs-2.0.0-linux-x86_64.tar.bz2 가 만들어진다. 이제 패키징된 phantomjs-2.0.0-linux-x86_64 폴더를 /usr/local/share 폴더로 이동한다.
$ sudo mv phantomjs-2.0.0-linux-x86_64 /usr/local/share/
어디에서나 phantomjs를 실행가능하도록 심볼릭 링크를 생성한다.
$ sudo ln -sf /usr/local/share/phantomjs-2.0.0-linux-x86_64/bin/phantomjs /usr/local/share/phantomjs $ sudo ln -sf /usr/local/share/phantomjs-2.0.0-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs $ sudo ln -sf /usr/local/share/phantomjs-2.0.0-linux-x86_64/bin/phantomjs /usr/bin/phantomjs
최신 버전의 PhantomJS를 사용하고 싶다거나, 현재 시스템에 맞게 빌드된 PhantomJS를 사용해보고 싶은 사람은 위와 같은 방법으로 빌드해서 사용할 수 있다. 다시 한번 말하지만, 상당한 시간이 소모되기 때문에 처음부터 그냥 바이너리를 가져다가 설치하는 것이 더 나을 수도 있다.
Ubuntu 에서 PhantomJS 바이너리를 다운로드 받아서 설치하는 방법
PhantomJS의 빌드된 바이너리는 bitbucket 저장소에 꾸준히 올라오고 있다. 하지만 소스 오픈보다는 조금더 늦게 바이너리가 올라오기 때문에 최신 버전을 사용하려면 기다림이 필요하다.
https://bitbucket.org/ariya/phantomjs/downloads/
위의 경로에서 바이너리를 다운로드 받아서 하는 것은, 1.9.8버전을 기준으로 하면 아래와 같다.
# wget으로 1.9.8 버전을 다운로드 받는다. $ wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2 # 압축을 해제한다. $ sudo tar -xvjf phantomjs-1.9.8-linux-x86_64.tar.bz2 # 압축 해제된 phantomjs 폴더를 /usr/local/share 폴더로 이동한다. $ sudo mv phantomjs-1.9.8-linux-x86_64 /usr/local/share/ # 실행가능하도록 심볼릭 링크를 생성한다. $ sudo ln -sf /usr/local/share/phantomjs-1.9.8-linux-x86_64/bin/phantomjs /usr/local/share/phantomjs $ sudo ln -sf /usr/local/share/phantomjs-1.9.8-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs $ sudo ln -sf /usr/local/share/phantomjs-1.9.8-linux-x86_64/bin/phantomjs /usr/bin/phantomjs
직접 빌드하는 것에 비하면 상당히 간편한 것을 알 수 있다. wget으로 바이너리를 받아서 압축을 풀고, /usr/local/share 폴더로 이동시킨 뒤 심볼릭 링크만 추가하면 되는 것이다. 별다른 패키지 관리도구가 설치되어 있지 않은 경우에도 위의 순서대로 따라가면 PhantomJS를 설치하는 것은 어렵지 않다.
apt-get 으로 설치하는 방법
패키지 관리도구를 사용하면 설치는 비약적으로 쉬워진다. 터미널에서 아래와 같이 입력하면 PhantomJS가 설치된다.
$ suto apt-get install phantomjs
시스템에 한글 폰트가 설치되어 있지 않은 경우
우분투에는 한글 폰트가 설치되어 있지만, 한글 폰트가 없는 경우에는 아래의 명령으로 설치해줄 수 있다. 한글 폰트가 없는 경우, PhantomJS로 스크린샷 기능 등을 사용할 때 한글이 깨져서 나오게 된다.
$ sudo apt-get install fonts-unfonts-core $ sudo apt-get install fonts-unfonts-extra
마치며
지금까지 우분투 환경에서 PhantomJS를 설치하는 세 가지 방법을 살펴보았다. 최신 버전을 사용해야하는 경우에는 직접 빌드가 필요하고 시간은 오래 걸리지만 생각보다 어렵지 않게 설치할 수 있다. 그 외에는 간단하게 패키지 관리도구로 설치하면 향후 버전 업그레이드 등에도 좀 더 유연하게 대처할 수 있기 때문에 패키지 관리도구로 설치하는 것도 좋은 선택이다.