Создание и запуск проекта Koa.js с помощью ServBay
ServBay — локальная среда для веб-разработки, доступная для macOS и Windows, включающая множество популярных инструментов для разработчиков: Node.js-окружение и различные СУБД. В этом руководстве вы узнаете, как с помощью ServBay легко создавать, запускать и управлять проектом на Koa.js.
Что такое Koa.js?
Koa.js — это веб-фреймворк нового поколения на базе Node.js, разработанный командой Express.js. Он славится своей лаконичной архитектурой, выразительным синтаксисом и мощными функциями, что делает его идеальным выбором для создания веб-приложений и API. Koa активно использует современные возможности JavaScript, в частности синтаксис async/await
, что существенно упрощает работу с асинхронностью и написание middleware, делая код чище и проще в поддержке.
Основные особенности Koa.js
- Синтаксис async/await: Архитектура построена вокруг
async/await
, облегчая управление асинхронными потоками. - Минималистичная основа: Сам фреймворк очень легкий и реализует только базовый функционал; дополнительные возможности добавляются модулями в виде middleware.
- Мощное Middleware: В Koa используется каскадная цепочка middleware для гибкой обработки запросов.
- Ориентация на веб: Фреймворк сосредоточен на разработке веб-приложений и API, без ненужных побочных функций.
Используя Koa.js, разработчики способны быстро создавать производительные и масштабируемые веб-сервисы.
Настройка среды разработки Koa.js в ServBay
ServBay предлагает готовое Node.js-окружение с интегрированными базами данных. Благодаря функции Website (Сайт) ServBay, вы можете легко получить доступ к локальному проекту на Koa.js по своему доменному имени и использовать SSL-сертификаты.
Предварительные требования
Перед началом убедитесь, что выполнены следующие шаги:
- Установите ServBay: Перейдите на официальный сайт ServBay и скачайте свежую версию.
- Установите Node.js: Откройте приложение ServBay и перейдите к разделу Packages (Пакеты), проверьте, установлены ли необходимые версии Node.js. Если нет — выберите и установите их.
- Ознакомьтесь с основами ServBay: Узнайте, как в ServBay запускать и останавливать сервисы и работать с функцией Website (Сайт).
Создание проекта Koa.js
Проект рекомендуется размещать в корневой директории сайтов ServBay: /Applications/ServBay/www
.
Инициализация папки проекта
Откройте Терминал, перейдите в корневую папку 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Создание точки входа приложения
В каталоге проекта
servbay-koa-app
создайте файлapp.js
с простым кодом 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
.
Запуск в режиме разработки
Обычно в процессе разработки проект Koa.js запускается локально и доступен через функцию Website ServBay.
Запуск dev-сервера Koa.js
Перейдите в папку проекта и стартуйте сервер, указав, например, порт
8585
(для удобной интеграции с ServBay):bashcd /Applications/ServBay/www/servbay-koa-app PORT=8585 node app.js
1
2Вы увидите в терминале сообщение типа
Koa.js server running on http://localhost:8585
— сервер успешно стартовал и доступен на порту8585
. Оставьте это окно открытым для работы приложения.Настройка обратного прокси в ServBay Website
Для доступа к приложению Koa.js не по порту, а по кастомному домену, настройте обратный прокси в разделе Website:
- Откройте приложение ServBay.
- Перейдите в раздел Website.
- Добавьте новый сайт, нажав на
+
в левом нижнем углу. - Введите:
- Name (Имя):
ServBay Koa.js Dev Site
- Domain (Домен):
servbay-koa-dev.servbay.demo
(домен с окончанием.servbay.demo
гарантирует автоматический SSL-сертификат через ServBay) - Type (Тип):
Reverse Proxy
(Обратный прокси) - IP Address:
127.0.0.1
(локальный сервер Node.js) - Port (Порт):
8585
(порт, на котором слушает приложение Koa.js) - Document Root (Корень сайта): в конфигурации обратного прокси не принципиально, можно оставить пустым или указать проект
/Applications/ServBay/www/servbay-koa-app
.
- Name (Имя):
- Сохраните изменения.
- При необходимости подтвердите применение настроек.
После сохранения ServBay автоматически прописывает нужный домен в файл hosts, а обратный прокси переадресует трафик с
servbay-koa-dev.servbay.demo
(и портов 80/443) наlocalhost:8585
, используя встроенный Caddy или Nginx. Для доменов.servbay.demo
ServBay User CA автоматически выпускет и доверяет SSL-сертификат, обеспечивая HTTPS.За подробностями обратитесь к разделу “Добавление Node.js сайта для разработки” в официальной документации ServBay (выберите англоязычную версию).
Доступ к Koa.js dev-сайту
Перейдите в браузер и откройте ссылку:
https://servbay-koa-dev.servbay.demo
.Если всё выполнено корректно, будет показано сообщение "Hello from ServBay Koa.js App!" — это результат работы локального сервера Koa.js, доступного через сайт ServBay и обратный прокси. Внесите правки в
app.js
, перезапустите процесс Node.js и обновите страницу для отображения изменений.
Имитация деплоя (продакшн)
Для имитации работы продакшен-сайта рекомендуется использовать другой порт и переменные среды. ServBay позволяет гибко изменить настройки обратного прокси.
Запуск производственного сервера Koa.js (эмуляция)
Остановите dev-сервер (если он еще работает) и стартуйте отдельный экземпляр с другим портом и
NODE_ENV=production
:bashcd /Applications/ServBay/www/servbay-koa-app PORT=8586 NODE_ENV=production node app.js
1
2Приложение будет слушать на порту
8586
в режиме “production”.Настройка сайта (Website) для production через ServBay
В ServBay создайте новый сайт для производственной среды:
- Откройте ServBay и перейдите в Website.
- Добавьте новый сайт с параметрами:
- Name:
ServBay Koa.js Prod Site
- Domain:
servbay-koa-prod.servbay.demo
(или укажите свой домен; для публичных — доступна автоматическая выдача SSL через Let's Encrypt/ACME) - Type:
Reverse Proxy
- IP Address:
127.0.0.1
- Port:
8586
(порт production-приложения) - Document Root: можно оставить пустым или указать директорию проекта.
- Name:
- Сохраните и примените настройки.
Для доменов
.servbay.demo
используется сертификат ServBay User CA, а для публичных доменов — автоматическое получение SSL/TLS сертификата через Let's Encrypt (ACME-протокол). Подробнее — в доке "Использование SSL для защиты сайта".Просмотр production-сайта Koa.js
Откройте браузер и перейдите по адресу:
https://servbay-koa-prod.servbay.demo
.Вы должны увидеть тот же результат, что и для dev-окружения, только сервер Node.js обслуживает теперь порт
8586
через обратный прокси ServBay.
Подключение к базам данных
В ServBay уже интегрированы популярные СУБД: MongoDB, Redis, MariaDB (MySQL-совместимая) и PostgreSQL. Все они запускаются локально и доступны на localhost
с типичными портами.
Ниже представлены примеры кода для Node.js, иллюстрирующие подключение к этим БД. Не забудьте установить и запустить соответствующие пакеты баз данных через ServBay.
MongoDB
Установите драйвер для работы с MongoDB (например,
mongoose
илиmongodb
):bashcd /Applications/ServBay/www/servbay-koa-app npm install mongoose # или npm install mongodb
1
2Добавьте подключение в код приложения:
javascript// Подключение к MongoDB через Mongoose const mongoose = require('mongoose'); // По умолчанию MongoDB в 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)); // Примечание: обычно код подключения размещают в инициализации приложения, // сервер запускают только после успешного подключения.
1
2
3
4
5
6
7
8
9
10
11
12
13В стандартной конфигурации MongoDB в ServBay работает на порту
27017
и без пароля.Redis
Установите Node.js клиент для Redis:
bashcd /Applications/ServBay/www/servbay-koa-app npm install redis
1
2Пример подключения:
javascript// Подключение к Redis через клиент 'redis' const redis = require('redis'); // Подключение: по умолчанию localhost:6379 (порт Redis в ServBay) const client = redis.createClient({ url: 'redis://localhost:6379' }); client.on('connect', () => { console.log('Connected to Redis'); }); client.on('error', (err) => { console.error('Redis connection error:', err); }); // Подключаемся к серверу Redis client.connect(); // Примечание: в реальном проекте дождитесь успешного подключения, // прежде чем выполнять операции с Redis, используйте async/await.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Redis по умолчанию запущен на порту
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 — '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
25MariaDB использует порт
3306
по умолчанию. Пароль пользователя root можно узнать или изменить в графическом интерфейсе ServBay. Базу данныхservbay_koa_app
при необходимости создайте вручную через TablePlus, DBeaver и т.д.PostgreSQL
Установите Node.js драйвер PostgreSQL:
bashcd /Applications/ServBay/www/servbay-koa-app npm install pg
1
2Пример подключения:
javascript// Подключение к PostgreSQL с помощью pg const { Pool } = require('pg'); // По умолчанию в ServBay пользователь 'user', пароль 'password' const pool = new Pool({ user: 'user', 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
23Стандартный порт PostgreSQL —
5432
. Проверьте или создайте базу данныхservbay_koa_app
через любой подходящий клиент.
Управление базами данных в ServBay
Помимо работы через код, доступно подключение через GUI-клиенты (TablePlus, DBeaver, pgAdmin, MongoDB Compass). Все БД слушают на 127.0.0.1
или localhost
; используйте настройки из GUI ServBay: порты, имена пользователей и пароли.
- Просмотр/изменение паролей: В приложении ServBay найдите нужную БД в разделе пакетов, кликните на значок настроек — увидите пароль пользователя (root для MariaDB, user для PostgreSQL), при необходимости измените.
- Создание БД/пользователей: Через GUI-клиенты подключайтесь к сервисам ServBay и создавайте БД, пользователй, таблицы через SQL или графический интерфейс.
Важные моменты
- Конфликты портов: Проверьте, что выбранные порты (8585, 8586 и т.д.) не заняты другими приложениями.
- Статус ServBay: Следите, чтобы ServBay и нужные пакеты Node.js/БД были запущены.
- Файл hosts: ServBay автоматически обновляет hosts, но при проблемах с доменом проверьте наличие записи в
/etc/hosts
. - Firewall: Убедитесь, что macOS и сторонние firewall не блокируют соединения от ServBay и Node.js.
- Просмотр логов: В случае трудностей изучите логи ServBay (отображаются в интерфейсе) и вывод в терминале от Node.js.
Часто задаваемые вопросы (FAQ)
Вопрос: Почему важно использовать обратный прокси ServBay для доступа к Koa.js?
Ответ: Несколько причин делать это через обратный прокси:
- Имитация продакшн-среды: Кастомные домены (например,
.servbay.demo
) вместоlocalhost:ПОРТ
— это ближе к реальному сайту. - SSL-сертификаты: Автоматическая выдача и установка SSL (через User CA или Let's Encrypt) позволяет тестировать HTTPS прямо на этапе разработки.
- Удобство управления: Все сайты для разработки и тестирования отображаются в едином интерфейсе.
- Скрытие портов: Внешние соединения идут через порты 80/443, внутренние — на Node.js-приложение по нестандартному порту.
- Имитация продакшн-среды: Кастомные домены (например,
Вопрос: Можно ли обойтись без прокси и обращаться к приложению напрямую — через
localhost:ПОРТ
?Ответ: Да. Koa.js-приложение можно открыть прямо по своему порту (
http://localhost:ПОРТ
). Однако так вы лишаетесь удобств ServBay: собственного домена, автоматического SSL, логирования и централизованного управления сайтами. Для имитации реального деплоя через обратный прокси — гораздо лучший выбор.Вопрос: Как узнать или изменить дефолтный пароль для базы данных ServBay?
Ответ: В интерфейсе ServBay перейдите к нужному пакету базы данных и кликните иконку настроек. В окне информации появятся пользователь и пароль. Для безопасности рекомендуется изменить пароль по умолчанию.
Итоги
Теперь вы знаете, как создать рабочее окружение Koa.js на macOS с помощью ServBay. В руководстве рассмотрено создание базового приложения, настройка обратного прокси веб-сайта через ServBay с поддержкой SSL, доступ по кастомному домену и работе по протоколу HTTPS, а также примеры подключения к интегрированным базам данных.
ServBay предоставляет Node.js-разработчикам современную интегрированную локальную среду с удобным управлением, чтобы вы могли сосредоточиться на написании кода, а не на настройке инфраструктуры. Используйте силу ServBay для повышения эффективности и комфорта работы!