Ghost upgrade

Fiquei 2 semanas sem blogar e ao entrar na tela de admin vejo que tem updates disponíveis para a minha plataforma de blog, como é meu primeiro update eu não tinha idéia de qual era o processo… Tive que ler o manual.

Estou escrevendo este post para eu me lembrar de como fiz para os próximos serem mais rápidos já que não posso confiar na minha memória:

0. Comparar as instruções daqui com as oficiais

Veja em https://docs.ghost.org/docs/upgrade se o que consta lá é basicamente a mesma coisa que aqui.

Editar este post para mante-lo atualizado /ghost/editor/9/

1. Download

https://ghost.org/download/ → botão Download Ghost

2. Copiar o zip pro servidor

scp -P MINHA_PORTA ~/Downloads/ghost-MAJOR.MINOR.PATCH.zip blog.fabricio.org:/home/fabricio

3. Fazer backups

ssh -pMINHA_PORTA blog.fabricio.org
cd /var/www
sudo cp -R ghost ghost-backup-ANO-MES-DIA

Depois, no navegador: /ghost/settings/labs/ (ou http://URL_DE_ADMIN/debug/ se o ghost for mais antigo que 0.5.6) → botão Export

Copiar este json local para o servidor tb:

scp ~/Downloads/egoismo-duplicado.ghost.2016-02-13.json USER@IP.DA.MAQUINA:/var/www/.  

3.b. (opcional) Caso use o tema Casper, mudar o nome do folder antigo

Ver a versão do tema:

cat /var/www/ghost/content/themes/casper/package.json

Com este dado em mãos, renomear o folder para deixar o nome casper livre para uma cópia limpa do tema que vem com a instalação.

cd /var/www/ghost/content/themes/
sudo mv casper Casper-MAJOR-MINOR-PATCH

3.c. Apagar o folder "core" e os arquivos index.js e package.json

Esta etapa eu inclui depois que tive que fazer o upgrade de 0.5.1 para 0.5.2 e falhou devido a um erro.

cd /var/www/ghost
sudo rm index.js
sudo rm *.json
sudo rm *.md
sudo rm -rf core

4. Sobrescrever novos arquivos e instalar

cd /var/www
unzip ghost-X.Y.Z.zip -d ghost-X.Y.Z
sudo cp -R ghost-X.Y.Z/core ghost
sudo cp ./ghost-X.Y.Z/index.js ./ghost/.
sudo cp ./ghost-X.Y.Z/*.json ./ghost/.
sudo cp ./ghost-X.Y.Z/*.md ./ghost/.    
sudo cp -R ghost-X.Y.Z/content/themes/casper ghost/content/themes/.
cd ghost
sudo sudo chown -R ghost:ghost *
sudo npm install --production

OBS pré 5. Como o serviço estava configurado

Eu tinha instalado o processo que roda o blog como um serviço em /etc/init no meu server (Ubuntu).

Para fins de documentação:

cat /etc/init/ghost.conf
description "Ghost: Just a blogging platform"

start on (local-filesystems and net-device-up IFACE=eth0)  
stop on runlevel [!12345]

# If the process quits unexpectadly trigger a respawn
respawn

setuid ghost  
setgid ghost  
env NODE_ENV=production  
chdir /var/www/ghost

exec /usr/bin/npm start --production

pre-stop exec /usr/bin/npm stop --production  

5. Cruzar os dedos e restartar o serviço do blog

sudo service ghost restart

E para ver no log se a versão que subiu é a que eu instalei de fato:

cat /var/log/blog.fabricio.org.log | grep ">" | tail

Algo tipo

> ghost@MAJOR.MINOR.PATCH start /var/www/ghost

Com os valores que eu espero tem que estar nas últimas linhas.

6. Copiar o footer para o tema novo

sudo vim -O content/themes/Casper-1.3.3/post.hbs content/themes/casper/post.hbs  

6. Enjoy!

Esta deu certo, se algum dia não rolar e eu precisar resgatar o backup eu dou um update aqui neste post para documentar o procedimento… vamos torcer para que não haja necessidade :P

7. Resumo

cat /var/www/ghost/content/themes/casper/package.json

copy/paste trocando A.B.C pela versão do Casper e X.Y.Z pela versão do Ghost

cd /var/www/ghost/content/themes/
sudo mv casper Casper-A.B.C

cd /var/www
ls -la

cd /var/www
sudo curl -LOk https://ghost.org/zip/ghost-latest.zip
sudo unzip ghost-latest.zip -d ghost-temp
cat ghost-temp/package.json |grep version

cd /var/www/ghost
sudo rm -rf core
sudo rm index.js
sudo rm *.json

cd /var/www/ghost-temp/
sudo cp -R core ../ghost
sudo cp index.js *.json ../ghost/.
sudo cp -R content/themes/casper ../ghost/content/themes

cd ../ghost
sudo chown -R ghost:ghost *
sudo npm install --production

sudo service ghost stop
sudo service ghost start