Как установить Ghost на VPS
Где еще как не на сайте, работающем на Ghost CMS рассказать про установку этой системы? Для этого потребуется совсем немного времени, денег и кофе.
Почему не Wordpress?
Wordpress за последнее время разросся до каких-то монструозных размеров. Для небольших сайтов он стал слишком избыточным. Да, для WP написано огромное количество тем и плагинов, а инструкций, наверное, еще больше, но это тоже своего рода проблема. Какой плагин выбрать? Какую тему? А что произойдет при обновлении Wordpress? Не сломается ли что-то, так как автор темы не обновил ее под новую версию? Проходили знаем. А отказываться от обновлений WP не вариант, так как он то еще решето и уязвимости находят в нем регулярно.
А Ghost - легкий движок для небольшого сайта. Да и попробовать что то новое всегда интересно.
Подготовка к установке.
Для установки Ghost буду использовать VPS от Timeweb Cloud. Для этого подойдет и минимальная конфигурация за 188 рублей в месяц с 1 x 3.3 ГГц, 1 Гб оперативной памяти и 15 Гб NVME SSD. Для пробы и тренировки самое то, но если точно настроены серьезно, то лучше выбрать старшие конфигурации. На младшем VPS, например, при обновлении Ghost могут возникнуть проблемы из-за нехватки оперативки (но обойти при желании их можно).
После регистрации в Timeweb Cloud попадаете в панель управления.
Выбираем «Облачный сервер», необходимую конфигурацию. Если просто пробуете и тренируетесь, то бекапы можно пока что не подключать. А так всегда лучше их использовать (но подключить можно будет и потом, при желании и необходимости).
В качестве операционной системы Ubuntu 22.04. Просто привычнее, да и официальная инструкция также предлагает использовать эту ОС.
Для дальнейших действий необходимо «привязать» домен к приобретенному серверу, прописав необходимые DNS-записи.
Как настроить DNS-записи
Вот неплохая инструкция от Timeweb для разных регистраторов. После того, как все сделаете необходимо подождать какое то время, для того, чтобы DNS обновился.
Если домена еще нет, то вот как это можно сделать.
Как зарегистрировать домен
Инструкция. Тыц.
Настройка VPS
После того как купили VPS и привязали домен можно перейти к настройке сервера. Для этого понадобится PowerShell, который умеет работать по SSH.
Открываем окно PowerShell и набираем следующую команду:
После успешного подключения первым делом надо обновить ОС, так как не всегда используются самые свежие образы операционок с обновлением до последних версий пакетов.
sudo apt update && sudo apt upgrade -y
Теперь необходимо сменить пароль для root-пользователя. Естественно лучше использовать как можно более сложный пароль и стоит его сохранить (в идеале в менеджере паролей, да и для генерации пароля лучше использовать тот же менеджер паролей).
sudo passwd root
Для смены пароля его необходимо ввести дважды.
Теперь перейдем к смене порта для SSH:
sudo nano /etc/ssh/sshd_config
Открывается конфиг-файл в редакторе nano. Ищем строчку «#Port 22» и над ней печатаем:
Перезапускаем SSH, чтобы новые настройки вступили в силу.
Теперь перейдем к настройке firewall'а.
Включаем firewall:
sudo ufw enable
И проверяем статус:
sudo ufw status
Теперь необходимо создать нового пользователя.
Дважды вводим пароль для нового пользователя. Он должен отличаться от пароля для root. Остальные поля можно оставить пустыми. Теперь добавим созданному пользователю sudo права.
Переключаемся на этого пользователя и продолжим настройку сервера из-под него.
su - user_name
Установка необходимого софта и создание директорий
Nginx
Устанавливаем веб-сервер Nginx:
sudo apt install nginx
И открываем доступ для Nginx в firewall'е.
sudo ufw allow 'Nginx Full'
При желании можно проверить настройки firewall'а (это необязательно).
sudo ufw status
MySQL
Теперь перейдем к установке MySQL. Именно из-за этого у меня не получалось установить Ghost по официальному мануалу, возникала ошибка с настройкой базы данных.
sudo apt install mysql-server
Заходим в MySQL.
sudo mysql
Задаем пароль для root-пользователя.
Теперь добавим пользователя MySQL для Ghost:
Создаем базу данных для будущего сайта
И даем новому пользователю полный доступ к созданной базе данных.
GRANT ALL PRIVILEGES ON database_name.* TO 'user_name'@'localhost';
FLUSH PRIVILEGES;
И выходим из MySQL:
exit
Node.js
Ghost рекомендует использовать Node.js 16 версии. Ее и поставим.
Скачиваем и устанавливаем GPG-ключ.
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
Создаем deb-репозиторий:
NODE_MAJOR=18 # Указывается необходимая версия. В данном случае - 18
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
Обновляем пакеты и устанавливаем Node.js
sudo apt update
sudo apt install nodejs -y
Ghost CLI
Ghost CLI - это инструмент командной строки, который автоматически установит Ghost и необходимые зависимости.
sudo npm install ghost-cli@latest -g
Создание директории для сайта
Меняем владельца созданной папки на нашего пользователя:
И задаем необходимые разрешения:
Переходим в директорию сайта:
Установка и настройка Ghost
Вот и подошли к последним шагам по установке. Для ее начала вводим команду:
Blog URL - ввести адрес сайта: https://example.com Именно с «https», это необходимо для получения SSL-сертификата.
MySQL hostname - так как БД располагается локально, то просто все оставляем по умолчанию и нажимаем Enter.
MySQL username / password - имя пользователя БД, которого создали ранее, и его пароль.
Ghost database name - имя базы данных, которую создавали для сайта.
Set up NGINX? - Соглашаемся, y, Enter.
Set up SSL? - Соглашаемся, y, Enter. Здесь будет необходимо ввести email.
Set up systemd? - Соглашаемся, y, Enter.
Start Ghost? - Соглашаемся, y, Enter.
Переходим по адресу https://example.com/ghost и завершаем установку, создав свой аккаунт на сайте.
Даже котик с лапками справился с установкой Ghost.