Установка Strapi + PostgreSQL на Ubuntu
Strapi — это headless CMS, которая работает на JavaScript и позволяет создавать структуру контента, а затем получать его по API. А еще он неплохо работает в связке с фронтед фреймворками, например Next.js.
Мы установим Strapi на Ubuntu, настроим Nginx, установим бесплатный SSL-сертификат Let’s Encrypt и сделаем, чтобы все стабильно работало с помощью менеджера процессов PM2. В качестве базы данных будем использовать PostgreSQL, т.к. стандартная база данных SQLite имеет некоторые недостатки, например, проблемы с регистронезависимым поиском по русским символам.
Требования
- Node.js: v18 или v20
- Менеджер пакетов Node.js: npm (v6 и выше) или yarn
- Сервер со следующими характеристиками
Рекомендуемые | Минимальные | |
---|---|---|
CPU | 2+ ядра | 1 ядро |
Память | 4GB+ | 2GB |
Диск | 32GB+ | 8GB |
- база данных PostgreSQL 11.0 - 14.0
- Ubuntu (LTS) 20.04 - 22.04
Если ищете быстрый и удобный хостинг для ваших проектов, то рекомендую Timeweb Cloud.
Устанавливаем npm и Node.js
Устанавливаем npm
Устанавливаем Node.js
Установка и настройка PostgreSQL
Обновляем индекс локальных пакетов
Устанавливаем пакет Postgres и -contrib
Ура, мы установили PostgreSQL. Давайте теперь настроим ее.
Создаем базу данных
или таким образом с нужной кодировкой
Создаем базу данных
Создаем пользователя базы данных
Получим такое сообщение в консоли.
Вводим имя роли и делаем его суперпользователем
Открываем командную строку PostgreSQL
Обновляем профиль и указываем пароль
Чтобы выйти из пользователя PostgreSQL, введите: \q
Смена локали
Вам может понадобиться установить локаль, для корректного преобразования букв в верхний и нижний регистр в функциях upper, lower. Это может пригодиться, например, при реализации регистронезависимого поиска.
Смотрим какая локаль установлена
Если видим подобное сообщение, то нужно поменять локаль.
Ожидали получить следующее сообщение:
Выполняем команду:
В диалоговом окне выбираем ru_RU.UTF-8 UTF-8
, перезагружаем систему командой reboot
и проверяем установились ли локали командой locale
.
Установка Strapi
Вводим команду для установки Strapi
Далее нажимаем y
и запускаем установку. В консоли будут появляться вопросы, рекомендую ответить следующим образом. Только не забудьте ввести свои параметры подключения к базе данных.
Ответы на вопросы
SSL мы настроим позже.
Перейдите в папку проекта и выполните сборку.
Переходим в папку проекта
Запускаем сборку
В консоли наблюдаем следующее
Сборка готова, запускаем Strapi.
Команда для запуска Strapi
При успешном запуске вы увидите следующее сообщение и сможете перейти в админ панель.
Команда для запуска Strapi
Сейчас Strapi запустился в режиме разработки. Далее мы пропишем запуск в режиме production в диспетчере процессов PM2.
Установка Nginx
Устанавливаем nginx
Сконфигурируем файрвол, разрешив некоторые виды трафика.
Сконфигурируем файрвол
Открыли два порта: 80 и 443, на них приходят http и https запросы к серверу и 22 порт для соединения по SSH.
Включаем файрвол
Включаем nginx и добавляем в автозапуск
Редактируем файл конфигурации nginx
Конфиг Nginx вы можете посмотреть в официальной документации и настроить под свои нужды: https://docs.strapi.io/dev-docs/deployment/nginx-proxy#nginx-virtual-host
В конфигурации мы будем сопоставлять псевдоним strapi c localhost:1337, настроим это в файле upstream.conf.
Nginx Upstream
Конфигурация для поддомена выглядит так
После обновления конфигурации обязательно проверьте ее на ошибки.
Проверяем конфигурацию на ошибки
Если все ок, то в консоли будет следующее сообщение
Если ошибок нет, то можно перезагрузить nginx
Можно пробовать открывать свой api.example.com
Установка PM2
PM2 будет автоматически запускать Strapi после перезагрузки сервера и обеспечивать бесперебойную работу.
Переходим в корневой каталог
Устанавливаем PM2
Создаем файл конфигурации PM2
Не забудьте указать свои параметры подключения к базе данных.
Добавляем в файл настройки
Запускаем Strapi в фоновом режиме
Устанавливаем запуск Strapi при запуске сервера
В консоли видим следующее
Сохраняем список процессов PM2
Если прейти на страницу Strapi, то мы увидим, что он теперь запущен в режиме production, на это будет указывать соответствующая надпись.
Установка Let’s Encrypt
Устанавливаем certbot
Устанавливаем certbot
Открываем на текущей машине два порта: 80 и 443
Удаляем разрешение профиля HTTP
Получаем сертификат
Вместо my_domain укажите свой домен. При установке нужно будет указать почту и согласиться с условиями в консоли.
В итоге мы установили Strapi с базой данных PostgreSQL и настроили все необходимое для работы сервера.
Больше информации в официальной документации Strapi: https://docs.strapi.io/dev-docs/setup-deployment
Следующим шагом может быть деплой frontend приложения. Как это сделать на примере Next.js смотрите тут: Деплой приложения Next.js на Ubuntu VPS