Налаштування і запуск LoopBack-проекту у ServBay
Що таке LoopBack?
LoopBack — це потужний та розширюваний open-source фреймворк від IBM для Node.js, спеціально створений для швидкої розробки API та мікросервісів. Він підтримує підхід модельно-орієнтованої розробки (MDD), завдяки чому розробники можуть ефективно описувати моделі даних і автоматично створювати функціональні RESTful API. LoopBack має багато вбудованих інструментів — підключення джерел даних, автентифікацію та авторизацію, API explorer тощо, і легко інтегрується з різними базами даних та протоколами.
Основні переваги та функції LoopBack
- Модельно-орієнтована розробка (MDD): Інтуїтивно задавайте структури даних, і фреймворк автоматично генерує кінцеві точки API та валідатори.
- Підтримка різних джерел даних: Легке підключення популярних БД (MongoDB, MySQL, PostgreSQL, MariaDB тощо), а також RESTful/ SOAP-сервісів.
- Зручний CLI: Консольний інтерфейс LoopBack суттєво спрощує запуск проекту, визначення моделей чи налаштування БД.
- Модульність і розширюваність: Гнучка архітектура, яка дозволяє підключати сторонні бібліотеки та сервіси для задоволення бізнес-потреб.
- Вбудовані засоби безпеки: Автоматизовані механізми автентифікації та авторизації дозволяють швидко будувати безпечні API.
З LoopBack ви можете значно прискорити створення бекендів і API, отримати продуктивні, масштабовані й легкі у супроводі рішення.
Початок роботи з LoopBack у ServBay
Далі покроково описано, як за допомогою Node.js середовища ServBay створити та запустити LoopBack-проект. Ви також дізнаєтеся, як налаштувати «Сайт» у ServBay та скористатися зворотним проксі для зручного локального доступу і відлагодження.
Створення LoopBack-проекту
Встановіть CLI LoopBack
Спочатку переконайтеся, що у ServBay вже інстальовано та активовано Node.js-пакет. Відкрийте термінал і виконайте глобальну установку LoopBack CLI:
bashnpm install -g @loopback/cli
1Ініціалізуйте проект
Перейдіть у рекомендовану директорію сайтів ServBay
/Applications/ServBay/www
і створіть новий проект LoopBack. Рекомендується у назві проекту використовувати маленькі літери та дефіси, напр.servbay-loopback-app
:bashcd /Applications/ServBay/www lb4 app servbay-loopback-app
1
2CLI допоможе обрати фічі (REST API, серіалізація, автентифікація тощо) і структуру проекту — дотримуйтесь підказок та вашого функціоналу.
Встановіть залежності проекту
Зайдіть у новостворену директорію та встановіть необхідні Node.js-залежності:
bashcd servbay-loopback-app npm install
1
2
Зміна вмісту LoopBack-проекту (необов’язково)
Щоб продемонструвати доступ до додатку через ServBay, змінимо стандартний /ping
-інтерфейс так, щоб він віддавав кастомну відповідь.
Редагуйте файл
src/controllers/ping.controller.ts
Знайдіть у проекті файл
src/controllers/ping.controller.ts
, замініть вміст як нижче — так/ping
поверне рядок "Hello ServBay!":typescriptimport {get} from '@loopback/rest'; export class PingController { constructor() {} @get('/ping') ping(): string { // Змінено відповідь на "Hello ServBay!" return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
Запуск проекту у режимі розробки
Під час розробки проект зазвичай працює у локальному дев-сервері для швидкої ітерації. Доступ до цього серверу можна отримати через зворотний проксі в ServBay.
Запуск дев-серверу
У кореневій папці проекту запустіть LoopBack-додаток із встановленим портом (наприклад,
8585
):bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8585 npm start
1
2Якщо все гаразд, в терміналі з’явиться щось подібне до "Server is running at http://[::1]:8585".
Налаштуйте сайт ServBay (зворотний проксі)
Відкрийте панель керування ServBay і перейдіть у розділ "Сайти". Додайте новий сайт типу "Зворотний проксі", щоб зовнішнє доменне ім’я спрямовувало запити на порт додатку:
- Ім'я (Name): напр.
My first LoopBack dev site
(для ідентифікації у ServBay) - Домен (Domain): напр.
servbay-loopback-dev.servbay.demo
(для браузера) - Тип (Type): вибирайте
Зворотний проксі (Reverse Proxy)
- IP-адреса (IP Address):
127.0.0.1
(додаток працює локально) - Порт (Port):
8585
(цей порт слухає LoopBack)
Збережіть і застосуйте зміни. ServBay автоматично налаштує локальний DNS (оновить
/etc/hosts
або через ServBay Helper Tool) та вебсервер (Caddy або Nginx), і сайт стане доступним з вашого назви домену.Більше про додавання сайтів із зворотним проксі: Додавання Node.js сайту для розробки.
- Ім'я (Name): напр.
Відкриття додатку у браузері
У браузері відкрийте адресу вашого домену та шлях до інтерфейсу LoopBack, напр.
https://servbay-loopback-dev.servbay.demo/ping
.ServBay автоматично створює SSL-сертифікати (через ServBay User CA або ServBay Public CA), тож ви маєте безпечний доступ по HTTPS — подібно до реального продакшну і з можливістю вчасно виявити SSL-проблеми. Деталі: Захист сайту за допомогою SSL.
Розгортання у продакшн (опційно)
Коли проект готовий до запуску в продакшн, його прийнято запускати в режимі production для підвищення продуктивності і мінімізації діагностичних повідомлень.
Запуск серверу у production
У каталозі проекту запустіть додаток в режимі production (наприклад, порт
8586
):bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8586 NODE_ENV=production npm start
1
2Налаштуйте сайт ServBay (знову для продакшну)
В розділі "Сайти" додайте або змініть зворотний проксі сайт для продакшн-додатку:
- Ім'я (Name):
My first LoopBack production site
- Домен (Domain):
servbay-loopback-prod.servbay.demo
- Тип (Type): вибирайте
Зворотний проксі (Reverse Proxy)
- IP-адреса (IP Address):
127.0.0.1
- Порт (Port):
8586
(цей порт слухає продакшн сервер)
Збережіть зміни та використовуйте сайт.
- Ім'я (Name):
Відкриття продакшн додатку
У браузері відкрийте адресу, напр.
https://servbay-loopback-prod.servbay.demo/ping
, і переконайтеся, що додаток працює у production-режимі. HTTPS активується автоматично.
Підключення до баз даних
LoopBack підтримує численні джерела даних завдяки різноманітним конекторам. ServBay надає пакети MariaDB, MySQL, PostgreSQL, MongoDB та Redis, які можна швидко запускати та інтегрувати в ваш проект LoopBack.
Нижче наведено приклади, як підключити популярні БД із пакунків ServBay. Обирайте й коригуйте під ваші вимоги.
Важливо! Паролі/логіни у прикладах — лише заглушки. Перед використанням вкажіть справжні імена користувачів та паролі, запроваджені вами у ServBay. Управління користувачами/паролями — у панелі керування ServBay.
Підключення до MongoDB
Переконайтеся, що у ServBay встановлено і запущено MongoDB. Встановіть конектор LoopBack для MongoDB:
bashnpm install --save @loopback/connector-mongodb
1Далі опишіть джерело даних (зазвичай у
src/datasources/mongodb.datasource.ts
):typescript// src/datasources/mongodb.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mongodb', connector: 'mongodb', // За замовчуванням MongoDB у ServBay працює на localhost:27017 url: 'mongodb://localhost:27017/servbay-loopback-app', // замініть на вашу назву БД host: 'localhost', port: 27017, user: '', // якщо використовується автентифікація, вкажіть користувача password: '', // якщо використовується автентифікація, вкажіть пароль database: 'servbay-loopback-app', // замініть на вашу назву БД // Додаткові налаштування... }; export class MongodbDataSource extends juggler.DataSource { static dataSourceName = 'mongodb'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Підключення до Redis
Переконайтеся, що у ServBay встановлено та запущено Redis. Встановіть конектор LoopBack для Redis (зверніть увагу: офіційного
@loopback/connector-redis
нема — користуються пакунками на кшталт communityloopback-connector-redis
чи просто бібліотекоюredis
з обгорткою-сервісом):bashnpm install --save loopback-connector-redis # або іншу сумісну бібліотеку
1Опишіть джерело даних (приклад для
loopback-connector-redis
):typescript// src/datasources/redis.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'redis', connector: 'redis', // За замовчуванням Redis у ServBay працює на localhost:6379 url: 'redis://localhost:6379', // Додаткові налаштування... }; export class RedisDataSource extends juggler.DataSource { static dataSourceName = 'redis'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17Примітка: Підхід до роботи з джерелами даних у LoopBack 4 дещо інший, ніж у LoopBack 3. Вище наведено спрощений варіант у стилі LoopBack 3. У LoopBack 4 доцільно використовувати декоратор
@datasource
та сучасніші конфігурації — детальніше дивіться в офіційній документації LoopBack 4. Однак параметри підключення на кшталтhost
,port
,user
,password
,database
залишаються актуальними.Підключення до MariaDB (або MySQL)
Переконайтеся, що встановлено і запущено MariaDB або MySQL у ServBay. LoopBack-пакет для MySQL зазвичай сумісний і з MariaDB. Встановіть mysql-конектор для LoopBack:
bashnpm install --save @loopback/connector-mysql
1Опишіть конфігурацію джерела даних:
typescript// src/datasources/mariadb.datasource.ts або mysql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mariadb', // або 'mysql' connector: 'mysql', // використовуйте mysql-конектор // url: '', // можна задавати як url, або окремо host/port/database host: 'localhost', // MariaDB/MySQL у ServBay за замовчуванням тут port: 3306, // стандартний порт user: 'root', // найчастіше root, вказуйте вашу конфігурацію password: 'password', // << замініть на фактичний пароль у ServBay >> database: 'servbay_loopback_app', // замініть на вашу назву БД // Додаткові налаштування... }; export class MariaDbDataSource extends juggler.DataSource { static dataSourceName = 'mariadb'; // або 'mysql' constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Примітка:
password: 'password'
— це лише заглушка! Уточніть справжній пароль root-акаунту MariaDB/MySQL у панелі керування ServBay і підставте у конфіг.Підключення до PostgreSQL
Переконайтеся, що PostgreSQL встановлено і запущено у ServBay. Встановіть відповідний пакет LoopBack:
bashnpm install --save @loopback/connector-postgresql
1Далі сконфігуруйте джерело даних:
typescript// src/datasources/postgresql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'postgresql', connector: 'postgresql', // url: '', // або задайте по host/port/database host: 'localhost', // PostgreSQL у ServBay за замовчуванням тут port: 5432, // стандартний порт user: 'user', // << введіть ваш логін PostgreSQL з ServBay >> password: 'password', // << введіть справжній пароль >> database: 'servbay_loopback_app', // вкажіть вашу БД // Додаткові налаштування... }; export class PostgresqlDataSource extends juggler.DataSource { static dataSourceName = 'postgresql'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Примітка: поля
user: 'user'
таpassword: 'password'
— це заглушки. Створіть/знайдіть користувача і пароль PostgreSQL у панелі керування ServBay і пропишіть у налаштуваннях.
Підсумки
Виконавши ці кроки, ви навчились створювати і запускати Node.js-проекти на LoopBack у локальному середовищі ServBay, організовувати зручний доступ до додатку через налаштований сайт зі зворотним проксі, а також підключати проект до різних БД із пакунків ServBay.
ServBay — це стабільна та зручна платформа для локальної розробки на Node.js-фреймворках на кшталт LoopBack, з інтегрованим вебсервером, БД і мовними середовищами, що суттєво спрощує робочий процес розробника. Завдяки зручному керуванню сайтами, підтримці SSL і інтеграції з БД — ви реалізуєте свої задачі швидко, ефективно та безпечно.