본 문서는 ghost를 설치하는 간단한 가이드를 기록합니다. 기존의 문서를 정리하는 2차 문서이며 시간이 지나면 유효하지 않을 수 있습니다.
설치 노트1)에 따르면 node.js는 0.10.X
버전을 지원하며 node.js는 0.10.36을 npm은 2.5.0 버전을 권장한다. 나는 node.js는 0.10.9를, npm은 2.7.3버전을 설치했다. 문제가 발생하면 추후 기술하도록 하겠습니다.
node.js 0.10.9는 직접 소스 컴파일로 마련했습니다. http://nodejs.org/dist/v0.10.9/에서 소스를 받아 설치하면 됩니다.
$ ./configure $ make # make install
이 정도로 설치는 끝납니다.
npm은 https://www.npmjs.com/package/npm에서 권하는 방법으로 설치했습니다.
# curl -L https://npmjs.org/install.sh | sh
node -v
, npm -v
로 명령이 실행되는지 체크합니다.
ghost 라는 계정을 임시로 생성했습니다.
# useradd -s /bin/bash -m ghost # passwd -l ghost
ghost가 설치되는 path는 /media/storage/nodejs-deploy/ghost
가 된다.
# cd /media/storage/nodejs-deploy # mkdir ghost # curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip # unzip ghost.zip -d ghost
# cd /media/storage/nodejs-deploy/ghost # chown ghost:ghost -R * # su ghost # 여기서 유저 'ghost'로 변경 $ npm install --production
여기까지 하면 ghost 설치가 끝납니다. 이제 ghost를 동작시킵니다.
$ npm start --production
위 명령으로 ghost를 동작합니다. 최초 설정이므로 sqlite 데이터베이스를 기본적으로 만들어집니다. 또한 기본 설정을 바탕으로 config.js 설정 파일을 생성합니다. 현재 로컬에서만 접속 가능합니다. 기본 포트는 2368번입니다.
config.js 파일을 살짝 수정합니다. config 변수에 설정 내역이 기록되어 있습니다. 실전에서 쓰는 production, 개발을 위한 development 설정, 테스팅을 위한 testing 설정이 각각 마련되어 있습니다. 서버에서 돌릴 ghost이므로 production 설정을 사용합니다.
production: { url: 'http://ghost.changwoo.pe.kr', mail: {}, database: { client: 'mysql', connection: { socket : '/var/run/mysqld/mysqld.sock', user : 'ghost', password : '', database : 'ghost', charset : 'utf8' } }, server: { host: '127.0.0.1', port: '2370' }, logging: false }
서버로는 기본인 sqlite에서 mysql로 변경했습니다. socket 설정 등등을 맞춰 줍니다. server의 host는 npm start –production
명령을 사용했을 경우, 외부에서 확인 할 때는 '0.0.0.0'으로 변경해야 접속이 될 겁니다. 하지만 이후 아파치에서 프록시를 이용해 접속할 것이므로 host는 최종적으로 127.0.0.1로 맞춰 두어도 됩니다.
npm start --production
위 명렁으로 ghost가 동작할 때,
http://<server-ip>:2370
으로 접속해 봅니다.http://<server-ip>:2370/ghost
로 접속해서 관리자를 생성합니다.
아무래도 서버가 실행될 때 ghost도 자동으로 실행되는 것이 바람직합니다. npm start –production
명령을 매번 입력할 수는 없습니다. 그러므로 supervisor를 이용해 자동화합니다.
# sudo apt-get install supervisor # service supervisor start # vi /etc/supervisor/conf.d/ghost.conf
[program:ghost] command = node /media/storage/nodejs-deploy/ghost/index.js directory = /media/storage/nodejs-deploy/ghost user = ghost autostart = true autorestart = true stdout_logfile = /var/log/supervisor/ghost.log stderr_logfile = /var/log/supervisor/ghost_err.log environment = NODE_ENV="production"
supervisorctl start ghost
명령으로 ghost를 실행해 봅니다.
# apt-get install libapache2-mod-proxy-html libxml2-dev # a2enmod proxy # a2enmod proxy_balancer # a2enmod proxy_http # a2enmod proxy_html # a2enmod xml2enc # a2enmod deflate # a2enmod headers # a2enmod proxy_connect # a2enmod proxy_ajp
아파치 가상호스트 설정
<VirtualHost *:80> ProxyPreserveHost On ProxyPass / http://0.0.0.0:2370/ ProxyPassReverse / http://0.0.0.0:2370/ ServerName ghost.changwoo.pe.kr </VirtualHost>
혹시 작동되지 않는다면 도메인과 포트를 다시 한 번 잘 체크하여 봅니다. 기본 포트는 2368이지만 이 예에서는 2370으로 변경했음을 주지하세요.