Створення і запуск Koa.js проекту в ServBay
ServBay — це локальне веб-середовище розробки, розроблене спеціально для macOS. Воно інтегрує в себе популярні інструменти для розробників, включаючи Node.js та низку баз даних. У цій статті ви дізнаєтесь, як швидко створити, запустити і керувати Koa.js проектом у зручному середовищі ServBay.
Що таке Koa.js?
Koa.js — це сучасний веб-фреймворк для Node.js, розроблений командою Express.js. Він відомий своєю лаконічністю, виразністю та потужними можливостями, тому ідеально підходить для створення веб-застосунків і API. Koa.js максимально використовує сучасні можливості JavaScript — особливо синтаксис async/await
, що значно спрощує роботу з асинхронністю та дає змогу писати чистий, легкий для підтримки код.
Основні властивості Koa.js
- Заснований на async/await: Фреймворк спроєктовано навколо
async/await
, що робить керування асинхронністю інтуїтивно зрозумілим. - Легке ядро: Koa має невелике ядро з мінімумом функціональності, а інші можливості додаються через модульну систему middleware.
- Потужні middleware: Каскадна система middleware дозволяє гнучко і прозоро організовувати потік обробки запитів.
- Фокус на веб: Призначений саме для веб-розробки та API, без надмірної функціональності.
Використовуючи Koa.js, ви можете ефективно створювати високопродуктивні й легкі для підтримки веб-сервіси.
Налаштування середовища розробки Koa.js у ServBay
ServBay надає готове рішення для Node.js-розробників: інстальований інтерпретатор Node.js і популярні бази даних. Функція Website у ServBay дозволяє без зусиль налаштувати власний домен і SSL-сертифікат для вашого локального Koa.js-проекту.
Необхідна підготовка
Перед початком, переконайтесь, що виконали наступні кроки:
- Встановіть ServBay: Перейдіть на офіційний сайт ServBay, скачайте і встановіть останню версію додатку.
- Встановіть Node.js: Відкрийте додаток ServBay, зайдіть в розділ Packages і переконайтесь, що потрібна версія Node.js встановлена. Якщо ні — оберіть і встановіть її.
- Ознайомтеся з базовою роботою з ServBay: Дізнайтесь, як запускати/зупиняти сервіси і керувати сайтами (Website).
Створення проекту Koa.js
Файли проекту будемо розміщувати в рекомендованій кореневій папці ServBay: /Applications/ServBay/www
.
Ініціалізація директорії проекту
Відкрийте Terminal, перейдіть у кореневу папку сайтів ServBay, створіть нову директорію для проекту (наприклад,
servbay-koa-app
), перейдіть у неї й ініціалізуйте новий Node.js-проект:bashcd /Applications/ServBay/www mkdir servbay-koa-app cd servbay-koa-app npm init -y
1
2
3
4Команда
npm init -y
створить базовийpackage.json
.Встановлення Koa.js
У корені проекту
servbay-koa-app
встановіть Koa.js (і типи, якщо використовуєте TypeScript):bashnpm install koa # Якщо використовуєте TypeScript, встановіть типи # npm install @types/koa --save-dev
1
2
3Створення основного файлу застосунку
Створіть файл
app.js
у папціservbay-koa-app
із наступним простим кодом Koa.js:javascriptconst Koa = require('koa'); const app = new Koa(); // Middleware: логування інформації про запит app.use(async (ctx, next) => { const start = Date.now(); await next(); const ms = Date.now() - start; console.log(`${ctx.method} ${ctx.url} - ${ms}ms`); }); // Middleware: обробка запиту до кореневого шляху app.use(async ctx => { ctx.body = 'Hello from ServBay Koa.js App!'; }); // Вказання порту: якщо є змінна оточення PORT — вона має пріоритет const port = process.env.PORT || 3000; // Запуск HTTP-сервера app.listen(port, () => { console.log(`Koa.js server running on http://localhost:${port}`); console.log(`Project path: ${__dirname}`); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24Цей код створює базовий Koa-додаток із двома middleware: один для логування часу й шляху запиту, другий — для відповіді на запит до
/
("Hello from ServBay Koa.js App!"). Додаток слухає порт зі змінної оточенняPORT
або стандартний порт3000
.
Запуск у режимі розробки
Під час розробки зазвичай запускається локальний процес Node.js, а доступ до Koa.js-застосунку здійснюється через функцію Website у ServBay.
Запуск dev-сервера Koa.js
Відкрийте термінал, перейдіть до папки з проектом і запустіть файл
app.js
за допомогоюnode
. Щоб уникнути портових конфліктів і для зручної інтеграції з ServBay, можна використовувати окремий порт, наприклад,8585
:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8585 node app.js
1
2У терміналі має з’явитись повідомлення
Koa.js server running on http://localhost:8585
, що означає — сервер успішно запущено й він слухає порт8585
. Не закривайте це вікно, щоб сервер працював.Налаштування реверсного проксі (Website) у ServBay
Щоб звертатись до застосунку на
localhost:8585
за кастомним доменом, треба створити у ServBay новий Website з реверсним проксі.- Відкрийте додаток ServBay.
- Перейдіть у розділ Website.
- Натисніть кнопку
+
у лівому нижньому куті для додавання нового сайту. - Заповніть налаштування:
- Name (Назва):
ServBay Koa.js Dev Site
- Domain (Домен):
servbay-koa-dev.servbay.demo
(рекомендуємо використовувати.servbay.demo
— ServBay автоматично створить SSL-сертифікат) - Type (Тип): виберіть
Reverse Proxy
(Реверсний проксі) - IP Address (IP-адреса):
127.0.0.1
(вказує на локальний процес Node.js) - Port (Порт):
8585
(порт, який слухає ваш додаток Koa.js) - Document Root (Коренева папка): для реверсного проксі не важливо, можна залишити порожнім або вказати шлях
/Applications/ServBay/www/servbay-koa-app
.
- Name (Назва):
- Збережіть налаштування.
- Прийміть внесені зміни, якщо ServBay запропонує.
Після цього ServBay автоматично оновить файл hosts, спрямує домен
servbay-koa-dev.servbay.demo
на127.0.0.1
, і через Caddy чи Nginx прокситиме запити на порт8585
. Оскільки використовується домен.servbay.demo
, ServBay User CA автоматично згенерує й довірить SSL-сертифікат — ви зможете відразу працювати по HTTPS.Для детального опису кроків зверніться до документації ServBay із додавання Node.js-сайту для розробки (див. англійську версію).
Відкрити dev-сайт Koa.js
У браузері перейдіть за адресою
https://servbay-koa-dev.servbay.demo
.При коректному налаштуванні ви побачите повідомлення "Hello from ServBay Koa.js App!". Будь-які правки у
app.js
появляться після перезапуску Node.js процесу та оновлення сторінки.
Деплой продакшн-версії (імітація)
Для імітації продакшн-середовища може знадобитись інший порт, налаштування змінних оточення чи відмінний спосіб запуску. Реверсний проксі ServBay і тут актуальний.
Запуск Koa.js у режимі production (імітація)
У новому вікні терміналу зупиніть dev-сервер (якщо ще запущений) і запустіть застосунок, наприклад, на порту
8586
з встановленою змінноюNODE_ENV
:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8586 NODE_ENV=production node app.js
1
2Додаток Koa.js працюватиме як production-інстанс на порту
8586
.Налаштування реверсного проксі для production (імітація)
Додаємо новий сайт у ServBay з параметрами production:
- Відкрийте ServBay, розділ Website.
- Натисніть
+
та створіть новий сайт. - Заповніть дані:
- Name (Назва):
ServBay Koa.js Prod Site
- Domain (Домен):
servbay-koa-prod.servbay.demo
(можна вказати власний домен та отримати безкоштовний SSL через Let's Encrypt) - Type (Тип):
Reverse Proxy
- IP Address (IP-адреса):
127.0.0.1
- Port (Порт):
8586
(production-порт) - Document Root (Коренева папка): можна залишити порожнім або вказати шлях до проекту.
- Name (Назва):
- Збережіть і застосуйте зміни.
Для доменів
.servbay.demo
ServBay продовжить використовувати User CA. Для власних публічних доменів можна підключити безкоштовний SSL-сертифікат через ACME/Let's Encrypt. Див. докладніше у документації щодо використання SSL у ServBay.Перевірка production-сайту Koa.js
Відкрийте в браузері
https://servbay-koa-prod.servbay.demo
.Ви побачите той самий результат, що й у dev-середовищі, тільки тепер запит йде через реверсний проксі на production-порт
8586
.
Підключення до баз даних
ServBay інтегрує найпопулярніші БД: MongoDB, Redis, MariaDB (сумісна з MySQL), PostgreSQL. Всі вони працюють локально, тому їх зручно підключати до Koa.js-проекту через localhost.
Нижче — приклади підключення до БД з Node.js. Переконайтеся, що потрібна база даних уже встановлена й запущена в розділі Packages у ServBay.
Підключення до MongoDB
Спочатку в директорії проекту встановіть драйвер (наприклад,
mongoose
чиmongodb
):bashcd /Applications/ServBay/www/servbay-koa-app npm install mongoose # або npm install mongodb
1
2Додайте код підключення у
app.js
або окремий модуль:javascript// Підключення до MongoDB через mongoose const mongoose = require('mongoose'); // За замовчуванням ServBay не вимагає автентифікації, назва БД довільна mongoose.connect('mongodb://localhost:27017/servbay-koa-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('MongoDB connection error:', err)); // Примітка: у production-застосунках підключення часто виконують під час старту додатку, // і слухання порту починається тільки після успішного з'єднання.
1
2
3
4
5
6
7
8
9
10
11
12
13За замовчуванням MongoDB у ServBay слухає порт
27017
і дозволяє підключення без пароля.Підключення до Redis
Встановіть бібліотеку клієнта для Redis:
bashcd /Applications/ServBay/www/servbay-koa-app npm install redis
1
2Підключення до Redis:
javascript// Підключення до Redis через клієнтську бібліотеку const redis = require('redis'); // Створення клієнта, стандартний порт — 6379 const client = redis.createClient({ url: 'redis://localhost:6379' // Стандартний порт Redis у ServBay }); client.on('connect', () => { console.log('Connected to Redis'); }); client.on('error', (err) => { console.error('Redis connection error:', err); }); // Підключення до Redis client.connect(); // Примітка: у реальних додатках корисно дочекатися підключення через async/await
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20Redis у ServBay слухає порт
6379
і працює без пароля за замовчуванням.Підключення до MariaDB (або MySQL)
MariaDB — це форк MySQL, їхні драйвери та API сумісні. ServBay надає MariaDB, але її можна використовувати як MySQL.
Встановіть драйвер MariaDB:
bashcd /Applications/ServBay/www/servbay-koa-app npm install mariadb # або npm install mysql2 (рекомендовано для кращої сумісності)
1
2Підключення через драйвер
mariadb
:javascript// Підключення до MariaDB через клієнт mariadb const mariadb = require('mariadb'); // Стандартний пароль root — 'password' const pool = mariadb.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // переконайтесь, що БД створено connectionLimit: 5 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB"); conn.release(); // Повернення з'єднання до пулу }) .catch(err => { console.error("MariaDB connection error:", err); }); // Примітка: отримання з'єднання з пулу — асинхронна операція
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Підключення через
mysql2
(рекомендовано):javascript// Підключення до MariaDB/MySQL через mysql2/promise const mysql = require('mysql2/promise'); // Пароль root у ServBay — 'password' за замовчуванням const pool = mysql.createPool({ host: 'localhost', user: 'root', password: 'password', database: 'servbay_koa_app', // переконайтесь, що БД створено waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB/MySQL using mysql2"); conn.release(); // Повернення з'єднання до пулу }) .catch(err => { console.error("MariaDB/MySQL connection error:", err); }); // Примітка: пароль користувача root можна подивитися чи змінити в GUI ServBay. // На продакшн радимо управляти паролями через змінні оточення, а не хардкодити їх у коді.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25За замовчуванням MariaDB слухає порт
3306
. Пароль користувача root можна змінити через інтерфейс ServBay. БДservbay_koa_app
потрібно створити окремо.Підключення до PostgreSQL
Встановіть драйвер PostgreSQL:
bashcd /Applications/ServBay/www/servbay-koa-app npm install pg
1
2Підключення до PostgreSQL:
javascript// Підключення до PostgreSQL через клієнт pg const { Pool } = require('pg'); // Стандартний користувач 'user', пароль 'password', порт 5432 const pool = new Pool({ user: 'user', // Користувач за замовчуванням у ServBay host: 'localhost', database: 'servbay_koa_app', // переконайтесь, що БД створено password: 'password', port: 5432, }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL connection error:', err); return; } console.log('Connected to PostgreSQL'); client.release(); // Повернення з'єднання до пулу }); // Примітка: пароль користувача можна змінити/перевірити в GUI ServBay. // Рекомендуємо управляти паролями через змінні оточення.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23PostgreSQL у ServBay слухає порт
5432
. Дані для входу дивіться в інтерфейсі застосунку. БДservbay_koa_app
потрібно створити вручну.
Керування базами даних у ServBay
Окрім підключення коду, ви можете керувати БД зручними GUI-інструментами. Всі бази даних слухають 127.0.0.1
або localhost
, дані для підключення — у GUI ServBay.
- Паролі: Для перегляду/зміни пароля (наприклад, root для MariaDB або user для PostgreSQL) відкрийте панель налаштувань відповідної БД у GUI ServBay.
- Створення баз, користувачів: Використовуйте клієнти TablePlus, DBeaver, pgAdmin, MongoDB Compass для підключення і створення таблиць, БД та користувачів через SQL чи інтерфейс.
Корисні поради
- Конфлікти портів: Обирайте незайняті порти для Koa.js (наприклад, 8585, 8586).
- Статус сервісів: Переконайтеся, що додаток ServBay, Node.js і потрібні БД-сервіси запущені.
- Файл hosts: ServBay автоматично прописує записи у
/etc/hosts
, перевірте цей файл, якщо виникають проблеми з доменом. - Брандмауер: Упевніться, що macOS firewall або сторонні програми не блокують з’єднання Node.js чи ServBay.
- Перевірка логів: При помилках переглядайте логи у сервісі ServBay і вивід у Terminal з Node.js — це допоможе виявити проблему.
Часті питання (FAQ)
Чому варто використовувати реверсний проксі ServBay для Koa.js-проекту?
Відповідь: Використання реверсного проксі (через Website) дає переваги:
- Імітація production: Кастомний домен (наприклад, .servbay.demo чи власний) — це наближене до реального оточення тестування.
- Підтримка SSL: ServBay сам налаштовує SSL (через User CA або Let's Encrypt), тож ви протестуєте HTTPS ще на етапі розробки.
- Єдина точка керування: Всі локальні сайти зручно тримати у ServBay.
- Приховування реальних портів: Клієнти/браузер працюють зі стандартними портами 80/443, а всередині запит йде до окремого порту Node.js.
Чи можна обійтись без реверсного проксі і працювати напряму з localhost:PORT?
Відповідь: Так, технічно Koa.js можна запускати й тестувати без реверсного проксі на http://localhost:PORT. Проте, у цьому випадку ви втрачаєте переваги кастомних доменів, SSL, логування і зручного управління сайтами. Для достовірної симуляції production-середовища все ж краще використовувати можливості ServBay.
Який пароль для баз даних у ServBay і як його змінити?
Відповідь: Стандартні паролі баз даних можна переглянути у розділі Database інтерфейсу ServBay — відкрийте налаштування відповідної бази, там побачите дані для входу та можливість змінити пароль. З міркувань безпеки рекомендуємо змінити дефолтний пароль на власний!
Висновок
З цього гайду ви дізнались, як розгорнути Koa.js-середовище на macOS за допомогою ServBay. Ми створили базовий Koa-додаток, налаштували реверсний проксі для доступу через кастомний домен та HTTPS, і підключили основні БД-продукти.
ServBay — це потужне і водночас просте локальне рішення для Node.js-розробників. Воно дозволяє сфокусуватись безпосередньо на коді, оминаючи складнощі із запуском сервісів і налаштуванням середовища. Використовуйте усі можливості ServBay та підвищуйте свою продуктивність у розробці!