A DigitalOcean oferece uma oneclick droplet com o Ghost ja instalado e configurado para ir direto para produção, mas a droplet vem com o Ubuntu 14.04, prefiro usar o CentOs para produção.

O post Configurando o Centos 7 depois de instalado mostra como fazer as primeiras configuraçõs no nosso servidor lab.

O ghost é feito em nodejs, para rodarmos ele iremos instalar os seguintes pacotes:

yum install nodejs npm unzip git -y

Nos utilizaremos o nginx como proxy reverso para receber as conexões, ele rodara na porta 80 e passara as requisições para o nodejs.

yum install nginx -y

Nos iremos baixar e extrair o arquivo zip do ghost na pasta /var/www:

curl -L https://ghost.org/zip/ghost-latest.zip -o /var/www/ghost.zip

Agora para extrair

cd /var/www

unzip -uo ghost.zip -d ghost

Para instalarmos o ghost nos iremos para a pasta que foi criada após a extração:

cd /var/www/ghost

Para instalar rode o comando:

npm install -production

Configurando o acesso web

Agora temos que configurar a parte de acesso web do ghost para isso iremos copiar um arquivo que vem como exemplo e editar a copia:

cp config.example.js config.js

vi config.js

Nos iremos configurar a parte de produção, exemplo:

 production: {
        url: 'http://dnsdoblog',
        mail: {},
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost.db')
            },
            debug: false
        },

        server: {
            // Host to be passed to node's `net.Server#listen()`
            host: '127.0.0.1',
            // Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
            port: '2368'
        }
    },

Apos mudar a configuração do url é necessario validar se o campo host esta com o endereço 127.0.0.1. Agora nos iremos configurar o ghost para rodar em modo “forever”, para isso iremos usar o pm2:

Para instalar:

npm install pm2 -g

Para rodar no modo forever:

echo "export NODE_ENV=production" >> ~/.profile

NODE_ENV=production pm2 start index.js --name "Ghost"

pm2 dump

pm2 startup centos

Iremos comentar 2 linha no arquivo /etc/init.d/pm2-init.sh

super $PM2 dump
super $PM2 delete all

Para

#super $PM2 dump
#super $PM2 delete all

Para parar o processo do ghost

pm2 stop Ghost

Para reiniciar o processo do ghost

pm2 restart Ghost

Configurando o Nginx

Agora iremos configurar o nginx para funcionar como um proxy reverso:

git clone https://gist.github.com/b282f795c8308b52871d.git /etc/nginx/conf.d/

Com esse arquivo como base podemos editalo para que ele funcione no seu dns:

vi /etc/nginx/conf.d/ghost.conf

No campo server_name coloque o DNS do seu blog

Agora temos que inicar o nginx:

systemctl start nginx.service

E configurar para que ele inicie com o SO:

systemctl enable nginx.service