Цель работы: познакомиться с сервисом Amazon RDS и понятием headless CMS.
Варианты развертывания СУБД:
Преимущества облачного сервиса:
Недостатки облачного сервиса:
Облачные СУБД:
Реляционные
Нереляционные (NoSQL)
Перед началом работы войдите в веб-консоль
Откройте сервис RDS (в регионе Hong Kong, Seoul или Tokyo), нажмите Create database
Оставьте остальные параметры по умолчанию и нажмите Create database.
Откройте в том же регионе сервис EC2 и нажмите Launch instance
Оставьте остальные параметры по умолчанию и нажмите Launch instance.
Откройте на локальном компьютере терминал и подключитесь к серверу по SSH.
ssh -i <файл с ключом> ubuntu@<адрес сервера>
Установите на сервере пакет mysql-client
sudo apt update && sudo apt install -y mysql-client
Откройте созданную в сервисе RDS базу данных и сохраните endpoint для дальнейшего использования.
Подключитесь к СУБД MySQL
mysql -u strapi_user -p -h <RDS-endpoint>
с помощью команды SHOW DATABASES; перечислите имеющиеся базы данных.
Создайте базу данных для приложения:
CREATE DATABASE strapi_db;
с помощью команды SHOW DATABASES; проверьте что база данных была успешно создана.
с помощью команды exit закройте клиент MySQL.
Установите Node.js LTS (инструкция)
sudo apt-get install -y curl
curl -fsSL https://deb.nodesource.com/setup_22.x -o nodesource_setup.sh
sudo -E bash nodesource_setup.sh
sudo apt-get install -y nodejs
проверьте что Node.js установился: node -v
проверьте что NPM установился: npm -v
Создайте проект books на базе CMS Strapi:
npx create-strapi-app@latest --skip-cloud --no-example --no-git-init books
Вместо sqlite выберите mysql, введите параметры созданной ранее БД (endpoint сервера СУБД, имя базы данных созданной в клиенте MySQL, имя и пароль пользователя СУБД). Значения остальных параметров оставьте по умолчанию.
Войдите в каталог приложения и измените в конфигурационном файле порт на 8080. Перепроверьте параметры подключения к базе данных.
cd books
nano .env
скомпилируйте и запустите приложение
npm run build
npm run develop
Откройте админку в браузере CMS Strapi (вместо localhost используйте публичный IP-адрес EC2-инстанса), создайте нового администратора.
Перейдите в Content-Types Builder и создайте новую коллекцию Books с полями:
После сохранения изменений в структуре БД дождитесь перезапуска сервера.
Вернитесь на домашнюю страницу, перейдите в Content Manager, откройте созданную коллекцию Books и создайте несколько записей.
Перейдите в Settings, API Tokens, откройте токен с полными правами, заново сгенерируйте и скопируйте его.
Откройте клиент для REST API HTTPie, перейдите в приложение (Go to App), на вкладке Auth выберите вариант аутентификации Token Bearer и выполните запрос:
Если HTTPie не удается открыть тогда откройте терминал на локальном компьютере и выполните запрос с помощью cURL:
curl -H "Authorization: Bearer <токен>" http://<IP-адрес сервера>:/api/books
{
"data": {
"author": "Введите имя автора книги",
"title": "Введите название книги"
}
}
выполните запрос по предыдущему адресу, в ответе сервера должны присутствовать новые поля (id, documentId, createdAt, updatedAt, publishedAt) которые свидетельствуют о записи в БД.
Если в предыдущем пункте вы использовали cURL в терминале, тогда сохраните JSON с данными новой книги в файле и в терминале выполните следующую команду:
curl -X POST -H "Authorization: Bearer <токен>" -H "Content-Type: application/json" -d @<имя JSON-файла> http://<IP-адрес сервера>:/api/books
Проверьте, что введенные данные появились в менеджере контента в CMS Strapi.
Ctrl+C. Подключитесь к СУБД MySQL
mysql -u strapi_user -p -h <RDS-endpoint>
выполните запросы:
USE strapi_db;
SHOW TABLES;
SELECT * FROM books;
Проверьте что введенные в приложение данные сохранены в БД.