====== ghost 설치 ======
본 문서는 [[https://ghost.org|ghost]]를 설치하는 간단한 가이드를 기록합니다. 기존의 문서를 정리하는 2차 문서이며 시간이 지나면 유효하지 않을 수 있습니다.
===== node.js, npm =====
설치 노트((http://support.ghost.org/installing-ghost-linux/))에 따르면 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 소스 =====
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
===== 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://:2370'' 으로 접속해 봅니다.
* 접속이 된다면 ''http://:2370/ghost''로 접속해서 관리자를 생성합니다.
===== supervisor를 사용한 자동 시작 =====
아무래도 서버가 실행될 때 ghost도 자동으로 실행되는 것이 바람직합니다. ''npm start --production'' 명령을 매번 입력할 수는 없습니다. 그러므로 [[http://supervisord.org/ |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를 실행해 봅니다.
===== proxy 모듈로 아파치에서 연결 =====
# 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
아파치 가상호스트 설정
ProxyPreserveHost On
ProxyPass / http://0.0.0.0:2370/
ProxyPassReverse / http://0.0.0.0:2370/
ServerName ghost.changwoo.pe.kr
혹시 작동되지 않는다면 도메인과 포트를 다시 한 번 잘 체크하여 봅니다. 기본 포트는 2368이지만 이 예에서는 2370으로 변경했음을 주지하세요.
===== 출처 및 참고 사이트 =====
* [[http://support.ghost.org/getting-started/ | Getting Started with Ghost]]
* [[http://support.ghost.org/deploying-ghost | Deploing Ghost]]
* [[http://support.ghost.org/config | Configuring Ghost]]
* [[https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension | How To Use Apache HTTP Server As Reverse-Proxy Using mod_proxy Extension]]