Strapi - отличная CMS без головы для фронтенд-разработчиков. У него открытый исходный код, он гибкий и простой в настройке. После бесконечного разочарования в Wordpress без головы использование Strapi стало глотком свежего воздуха.

Настроить было легко. Развертывание было запутанным. Мне нравится Heroku, потому что он может бесплатно размещать мои побочные проекты. Однако при развертывании Strapi на Heroku возникли некоторые уникальные проблемы. Вот что вам нужно знать.

1. Не тратьте слишком много времени на добавление контента локально.

Изначально я запускал Strapi локально на localhost: 1337, что было идеально, пока я разрабатывал интерфейс Gatsby для своего приложения. Когда я развернулся в Heroku, я обнаружил, что мои типы коллекций были переданы, но не мои данные.

Миграция данных между средами в настоящее время находится на стадии планирования в дорожной карте Strapi. На данный момент мне пришлось повторно добавить свои данные.

Знайте это с первого взгляда. Если у вас много контента, сохраните его, когда вы его развернете.

2. Вам понадобится база данных, и это не может быть SQLite.

Если бы вы не указали базу данных при локальной настройке проекта Strapi, вам по умолчанию был бы предоставлен SQLite. Если сомневаетесь, проверьте свой package.json.

Heroku не поддерживает SQLite, но на удивление быстро настроить его с помощью Postgres, установив надстройку Heroku. Инструкции можно найти в этом руководстве.



3. Некоторые руководства устарели.

Пока мы говорим о базах данных, вы можете наткнуться на инструкцию отредактировать database.json по несуществующему пути.

./config/environments/production/database.json

Обнаружив тот же несуществующий путь здесь, здесь и здесь, я подумал, что пропустил шаг во время настройки.

Если это случилось с вами, воспользуйтесь этим учебником. Здесь есть руководство по развертыванию Heroku для текущей версии, а не для бета-версии.



Strapi быстро развивается, а это означает, что некоторые руководства устарели, несмотря на то, что им едва исполнился год. На момент написания текущей версии меньше месяца. Обновление или замена руководств - лишь вопрос времени.

4. Для размещения образов вам понадобится Cloudinary или AWS S3.

Heroku хранит изображения в кеше, который стирается при перезапуске дино. Это означает, что загружаемые вами изображения не останутся там надолго.

По словам Страпи:

Как и в случае с обновлениями проектов на Heroku, файловая система не поддерживает локальную загрузку файлов, так как они будут удалены, когда Heroku циклирует дино. Этот тип файловой системы называется эфемерной, что означает, что файловая система существует только до перезапуска дино (с Heroku это происходит каждый раз при повторном развертывании или во время их обычного перезапуска, который может происходить каждые несколько часов или каждый день).

Чтобы обойти это, мы можем использовать Cloudinary для размещения наших изображений. Это означает, что мы по-прежнему можем загружать изображения через административную панель Strapi, но изображения сохраняются на серверах Cloudinary, а не на серверах Heroku. При получении изображения в вашем интерфейсе Strapi вернет Cloudinary URL вместо пути к файлу.

Cloudinary имеет бесплатный уровень; он может выполнять оптимизацию изображений и доставлять изображения в формате WebP. Это делает его отличным инструментом для повышения производительности вашего сайта.

5. После настройки Cloudinary ничего делать в панели администратора Strapi не нужно.

Если вы следите за Youtube video, чтобы настроить Cloudinary, вы увидите инструкцию войти в административную панель Strapi, найти плагин Загрузить и указать Cloudinary в качестве поставщика изображений.

Этот шаг больше не требуется.

Настройки теперь определяются в extensions/upload/config/settings.js, а не в административной панели Strapi. Это означает, что после того, как вы нажали settings.js на Heroku, все готово.

6. Не забудьте настроить параметры конфигурации!

Я знаю, это само собой разумеющееся, но если вы не часто развертываете проекты, об этом шаге легко забыть.

Конфиденциальная информация, такая как ключи API, не должна передаваться в Heroku или Github вместе с остальной частью вашего проекта. Если вы установили и настроили Cloudinary, но не можете загружать изображения, проверьте параметры конфигурации в настройках Heroku.

Ресурсы

Репозиторий Github для приложения с интерфейсом Gatsby и серверной частью Strapi. Код был недавно обновлен до текущей версии:



Руководство Strapi по развертыванию Heroku (текущая версия):



Серия руководств по YouTube. Видео по развертыванию ссылаются на более старую версию Strapi. В целом серия по-прежнему стоит того: