Aktualizace Ghost blogu

Postupuji dle tohoto návodu.

Předpoklady

Aktualizace blogu vyžaduje pro bezproblémový průběh aspoň 150 MB volné RAM. Zkontrolovat lze pomocí:

free -h

Pokud Ghost žere hodně RAM, je vhodné jej zrestartovat.

cd /var/www/dolezel.net
ghost restart

Kontrola verzí je možná takto:

ghost check-update
Current version: 5.9.1
Latest version: 5.12.0
Minor update available!

ghost version
Ghost-CLI version: 1.22.0
Ghost version: 5.9.1 (at /var/www/dolezel.net)

Před vlastní aktualizací Ghost blogu na nějakou major verzi je doporučeníhodné zkontrolovat, že použité téma (šablona) je podporovaná v nejnovější verzi Ghostu a člověka nic později nepřekvapí. Postup je docela jednoduchý. Přihlásím se do admin rozhraní.
Settings -> 2. Design -> 3. Change theme -> 4. Advanced -> ... -> 5. Download.
Otevřu v prohlížeči stránku https://gscan.ghost.org, zvolím "Choose File", nechám poslední verzi 5.x a stisknu "Start scanning". Stránka mi nahlásí všechny případné nalezené problémy. V ideálním případě to dopadne takto:

Systémové aktualizace, node.js

V rámci aktualizací Ubuntu Serveru dochází k aktualizaci Node.js:

sudo -i -u <user>
apt-update
apt list --upgradable

Když vidím, že je ve výpisu i nodejs, tak je dobré zkontrolovat, které Node.js verze Ghost podporuje. Pokud je to OK, tak spustím:

sudo apt upgrade

Po aktualizaci Node.js je potřeba reinstalovat Ghost. A je více než doporučeno reinstalovat stávající Ghost verzi, aby byla jistota, že vše šlape, jak má, s novou verzí Node.js. A teprve poté, kdy je vše ok, tak je doporučeno přistoupit k aktualizaci ghost-cli a vlastní Ghost instalace.

ghost version
ghost update [version] --force

Ghost je fakt pojat hodně robustně. Při první reinstalaci mi příkaz ghost update nahlásil chyby, ale zároveň mi také napsal, co mám spustit pro opravu.

One or more errors occurred.

1) Checking file permissions
Run sudo find ./ ! -path "./versions/*" -type f -exec chmod 664 {} \; and try again.

2) Checking content folder ownership
Run sudo chown -R ghost:ghost ./content and try again.

Po těchto dvou opravách již reinstalace proběhla bez chyby, blog byl automaticky restartnut.

Aktualizace ghost-cli, Ghost blogu

Nejdříve je záhodno provést zálohu.

ghost backup

Ale pozor. Zálohování se nezdařilo a skončil jsem na chybě:

✖ Backing up site
An error occurred.
Message: 'connect ETIMEDOUT 1.2.3.4:443'

1.2.3.4 je příklad veřejné IPv4 adresy, kterou sám Ubuntu Server resolvuje pro FQDN dolezel.net. Jelikož je schován za firewallem v DMZ, tak musím vytvořit falešný lokální DNS záznam, abych nemusel řešit hairpin NAT (aneb z vnitřku ven a hned zase zpět).

sudo nano /etc/hosts
# do souboru /etc/hosts doplnit
5.6.7.8 dolezel.net
# kde 5.6.7.8 je privátní IPv4 adresa Ubuntu serveru v DMZ

# a nyni jiz ghost backup projde
ghost backup
# skript bude vyzadovat e-mail Ghost admina a jeho heslo

Poté je možné provést aktualizaci ghost-cli v poslední verzi a na závěr vlastní aktualizaci Ghost blogu.

sudo npm install -g ghost-cli@latest
ghost update

Kontrola DB back-endu

Tohle je už jen pro doplnění - kontrola, zdali je na blogu použit SQLite nebo MySQL. A v případě MySQL ještě kontrola aktuální verze.

ghost config database.client
mysql --version