Ghost Update. Устранение ошибки с Node.js
Если вы используете достаточно старую версию Ghost и решили обновится на последнюю версию, то здесь не так все просто.
Раньше Ghost требовал Node.js версии 16.x, сейчас же необходима версия 18.12.1 и при попытке обновления выводится следующая ошибка:
Ghost v5.74.5 is not compatible with the current Node version. Your node version is 16.20.2, but Ghost v5.74.5 requires ^18.12.1
Процесс обновления Node.js достаточно простой и занимает всего лишь несколько минут. Подключаемся к серверу по SSH и вводим следующие команды:
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
NODE_MAJOR=18 # Use a supported version
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt update
sudo apt install nodejs -y
Но здесь возникает еще пара проблем. Первая - сайт перестает открываться, отдавая 502 ошибку (Error 502 Bad Gateway). Вторая - все равно не получится обновить Ghost. Это связано с тем, что Node.js 18.x перестает работать с localhost (а при установке указывается именно localhost для базы данных, это даже в официальной документации есть).
И что же делать? Просто запустить заново настройку Ghost вот этой командой:
ghost setup
И ответить на несколько вопросов:
Enter your blog URL: - просто нажать Enter оставив все по умолчанию
Enter your MySQL hostname: - Ввести 127.0.0.1 (вот это исправит ошибки)
Enter your MySQL username: - просто нажать Enter оставив все по умолчанию your
Enter your MySQL password (skip to keep current password): - просто нажать Enter оставив все по умолчанию
Enter your Ghost database name: - просто нажать Enter оставив все по умолчанию
- Enter your blog URL: - просто нажать Enter оставив все по умолчанию
- Enter your MySQL hostname: - Ввести 127.0.0.1 (вот это исправит ошибки)
- Enter your MySQL username: - просто нажать Enter оставив все по умолчанию your
- Enter your MySQL password (skip to keep current password): - просто нажать Enter оставив все по умолчанию
- Enter your Ghost database name: - просто нажать Enter оставив все по умолчанию
И последнее:
- Do you want to start Ghost? - ввести Y и нажать Enter.
После этого все заработает и можно будет обновить Ghost до последней версии.