Создание и запуск проекта Express.js с помощью ServBay
Что такое Express.js?
Express.js — это быстрый, открытый и минималистичный веб-фреймворк на базе Node.js. Он предоставляет мощный функционал для создания одностраничных, многостраничных и смешанных веб-приложений. Express.js — один из самых популярных фреймворков в экосистеме Node.js, любимый разработчиками за его лаконичность и гибкость.
Ключевые особенности и преимущества Express.js
- Простота и гибкость: Express.js предлагает простой API и гибкий механизм middleware, что обеспечивает быструю и эффективную разработку веб-приложений.
- Middleware: Поддерживает множество промежуточных обработчиков, с помощью которых легко обрабатывать запросы и ответы — например, парсинг тела запроса, работу с сессиями, раздачу статических файлов и др.
- Маршрутизация: Мощная система маршрутизации позволяет обрабатывать запросы по разным HTTP-методам (GET, POST, PUT, DELETE и др.) и путям.
- Высокая интеграция: Легко работает с разными шаблонизаторами (Pug, EJS, Handlebars), базами данных (MongoDB, MySQL, PostgreSQL) и другими модулями Node.js.
- Сообщество и экосистема: Огромное сообщество и множество сторонних middleware и плагинов — находить решения и ресурсы по Express.js очень просто.
Express.js позволяет быстро создавать высокопроизводительные веб-приложения и API. ServBay — мощная локальная среда для веб-разработки — предоставляет удобную среду Node.js и инструменты для управления сайтами (обратное проксирование) и базами данных, что идеально подходит для проектов на Express.js.
Создание и запуск проекта Express.js c помощью ServBay
В этом руководстве описано, как с помощью Node.js-среды, предоставляемой ServBay, создать, настроить и запустить проект Express.js. Для развертывания веб-сервера мы используем функцию "Сайт" в ServBay, реализуя доступ к проекту через обратное проксирование. Такой подход особенно подходит для приложений, работающих на определённом порту (Node.js, Python, Go, Java и др.).
Требуемое ПО и подготовка
Перед началом убедитесь, что:
- У вас корректно установлен ServBay на macOS.
- В ServBay установлен и активирован пакет Node.js. Управление доступно на вкладке “Пакеты” в панели управления ServBay.
- (Опционально) Если необходим доступ к базе данных, — установлены и активированы соответствующие пакеты баз данных (MariaDB, PostgreSQL, MongoDB, Redis, MySQL и др.).
- Вы обладаете базовыми навыками работы с терминалом (командной строкой).
Создание проекта Express.js
Инициализация проекта
Откройте терминал и перейдите в рекомендуемую ServBay директорию сайтов:
/Applications/ServBay/www
. Используйте генератор Express (npx express-generator
) для быстрого создания каркаса проекта.npx
— инструмент, входящий в npm v5.2+, позволяющий выполнять исполняемые файлы из npm-пакетов.bashcd /Applications/ServBay/www npx express-generator servbay-express-app
1
2В каталоге
/Applications/ServBay/www
появится папкаservbay-express-app
с базовой структурой Express.js-проекта.Установка зависимостей
Перейдите в созданную директорию
servbay-express-app
и установите необходимые зависимости для вашего проекта (Express.js, шаблонизатор, работа со статикой и прочее):bashcd servbay-express-app npm install
1
2Дождитесь окончания установки.
Редактирование приветственной страницы Express.js
Чтобы убедиться в работоспособности проекта, изменим содержимое главной страницы.
Редактирование файла
routes/index.js
В Express.js-структуре для обработки разных URL используются файлы маршрутов. Откройте файл
routes/index.js
. Данный скрипт отвечает за обработку GET-запроса root (/
). Измените логику так, чтобы вместо вывода стандартного pug-шаблона возвращался простой текст.javascriptvar express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { // Изменено: отправляем текстовый ответ res.send('Hello ServBay!'); }); module.exports = router;
1
2
3
4
5
6
7
8
9
10Сохраните файл.
Перевод проекта в режим разработки
В процессе разработки обычно запускается локальный сервер, чтобы видеть результат изменений "на лету". Для этих целей Express.js поддерживает запуск через команду npm start
.
Запуск dev-сервера
Из корня проекта
servbay-express-app
выполните команду для старта сервера. Через переменную окруженияPORT
укажите порт для приложения; здесь —8585
. ПеременнаяDEBUG
включает вывод отладочной информации.bashcd /Applications/ServBay/www/servbay-express-app PORT=8585 DEBUG=servbay-express-app:* npm start
1
2В терминале отобразится сообщение о запуске сервера и прослушиваемом порте (
8585
).Настройка обратного прокси через ServBay
Поскольку Express.js-приложение работает на нестандартном порту (8585), для доступа к нему через привычный веб-порт (80/443) потребуется настроить обратное проксирование с помощью функции “Сайт” в ServBay. Веб-сервер ServBay (по умолчанию Caddy) будет слушать 80/443, а запросы для вашего домена перенаправлять на
127.0.0.1:8585
.Откройте панель управления ServBay, перейдите на вкладку “Сайты” и создайте новый сайт со следующими настройками:
- Имя:
My first Express.js dev site
(удобная метка) - Домен:
servbay-express-test.servbay.demo
(домен.servbay.demo
автоматически получает HTTPS при поддержке ServBay User CA) - Тип сайта:
Обратное проксирование
- IP-адрес:
127.0.0.1
(илиlocalhost
) - Порт:
8585
(порт приложения Express.js)
После ввода параметров сохраните настройки и примените изменения. ServBay автоматически настроит веб-сервер и создаст SSL-сертификат (для доменов на
.servbay.demo
).Подробную инструкцию смотрите в документации ServBay: Добавление сайта для Node.js-разработки.
- Имя:
Проверка работы сайта в dev-режиме
Откройте браузер и перейдите по адресу
https://servbay-express-test.servbay.demo
. Веб-сервер ServBay примет запрос и проксирует его на Express.js-приложение на порте 8585. На странице должно появиться: "Hello ServBay!"Благодаря поддержке кастомных доменов и бесплатных SSL-сертификатов (автоматически для
.servbay.demo
), вы используете HTTPS уже в локальной разработке, что приближает окружение к боевому и позволяет раньше выявлять потенциальные проблемы.
Развертывание продакшн-версии приложения
Когда проект готов, можно имитировать запуск в боевом окружении. Это позволяет проверить финальную конфигурацию до публикации.
Подготовка продакшн-среды
В продакшн-режиме Express.js ожидает установку переменной окружения
NODE_ENV
вproduction
— это влияет, например, на режим отладки или оптимизацию. Проверьте, что ваше приложение корректно работает приNODE_ENV=production
.Запуск сервера в production-режиме
Из корня проекта выполните команду для старта сервера с новой переменной окружения и отличным портом (например,
8586
):bashcd /Applications/ServBay/www/servbay-express-app PORT=8586 NODE_ENV=production npm start
1
2Запущенный сервер будет слушать 8586 порт.
Настройка второго сайта для продакшн-примера
Аналогично dev-среде, добавьте новый сайт на вкладке “Сайты” в ServBay со следующими параметрами:
- Имя:
My first Express.js production site
- Домен:
servbay-express-test-prod.servbay.demo
(или другой выбранный вами домен для тестов) - Тип сайта:
Обратное проксирование
- IP-адрес:
127.0.0.1
- Порт:
8586
Сохраните и примените настройки.
- Имя:
Проверка продакшн-сайта
Откройте браузер и перейдите по адресу
https://servbay-express-test-prod.servbay.demo
. Сервер ServBay проксирует запрос на порт 8586, где запущен Express.js в production-режиме. Это позволит протестировать продакшн-приложение в локальной среде.
Подключение к базам данных
ServBay поддерживает различные пакеты баз данных: MariaDB, PostgreSQL, MongoDB, Redis и др. Если необходимый пакет активирован, Express.js-приложение может с лёгкостью подключиться к соответствующей БД. Обычно в ServBay используются стандартные логины и пароли: для MariaDB/MySQL — root и password
, для PostgreSQL — пользователь user
, пароль password
, база по умолчанию — servbay_default
. Используйте эти данные или настройки, указанные в интерфейсе ServBay.
Ниже приведены примеры инициализации подключений к популярным СУБД (установите соответствующий npm-пакет через npm install <package-name>
).
Подключение к MongoDB
Сначала установите ORM-библиотеку
mongoose
:bashnpm install mongoose
1Затем в коде Express.js (например, в
app.js
или отдельном файле настройки БД):javascriptvar mongoose = require('mongoose'); // Подключение к локальной MongoDB (DB: servbay-express-app) // В ServBay MongoDB обычно не требует авторизации mongoose.connect('mongodb://localhost/servbay-express-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Не забудьте запустить MongoDB-пакет в ServBay.
Подключение к Redis
Установка клиента:
bashnpm install redis
1Пример подключения:
javascriptvar redis = require('redis'); // Redis по умолчанию работает на localhost:6379 без пароля var client = redis.createClient({ host: 'localhost', port: 6379 }); client.on('connect', function() { console.log('Connected to Redis'); }); client.on('error', function (err) { console.log('Redis Error: ' + err); }); // Пример установки и получения значения: // client.set('mykey', 'Hello from Express!', redis.print); // client.get('mykey', function(err, reply) { // if (err) throw err; // console.log(reply); // Выведет "Hello from Express!" // }); // Используйте client для дальнейшей работы с Redis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23Проверьте, что Redis-пакет в ServBay запущен.
Подключение к MariaDB / MySQL
Для доступа рекомендуются пакеты
mariadb
илиmysql2
:bashnpm install mariadb # либо npm install mysql2
1Используйте стандартные реквизиты ServBay: root/
password
.javascriptvar mariadb = require('mariadb'); // MariaDB/MySQL обычно доступны на localhost:3306 var pool = mariadb.createPool({ host: 'localhost', port: 3306, user: 'root', // стандартный пользователь ServBay password: 'password', // стандартный пароль ServBay database: 'servbay_express_app', // создайте БД через панель ServBay connectionLimit: 5 }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB/MySQL"); // Для работы с БД используйте объект conn // conn.query("SELECT 1").then(...).catch(...).finally(() => conn.release()); conn.release(); }) .catch(err => { console.log("Not connected due to error: " + err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Перед подключением создайте БД
servbay_express_app
через web-панель управления БД в ServBay (phpMyAdmin, Adminer и др.). Проверьте, что MariaDB или MySQL активны.Подключение к PostgreSQL
Установите пакет:
bashnpm install pg
1Используйте стандартные параметры ServBay: пользователь
user
, парольpassword
, базаservbay_default
.javascriptvar { Pool } = require('pg'); // По умолчанию PostgreSQL слушает localhost:5432 var pool = new Pool({ user: 'user', // стандартный пользователь ServBay host: 'localhost', database: 'servbay_default', // или другую созданную вами БД password: 'password', port: 5432, }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL connection error:', err); return; } console.log('Connected to PostgreSQL'); // Используйте client для запросов // client.query('SELECT NOW()', (err, res) => { ... done(); }); done(); // Закройте соединение после работы }); // Либо с async/await: // try { // const client = await pool.connect(); // console.log('Connected to PostgreSQL'); // // const res = await client.query('SELECT NOW()'); // // console.log(res.rows[0]); // client.release(); // } catch (err) { // console.error('PostgreSQL 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
23
24
25
26
27
28
29
30
31Проверьте, что PostgreSQL включён в ServBay.
Итог
Выполнив эти шаги, вы научились создавать, настраивать и запускать проект Express.js в локальной среде разработки ServBay. Вы теперь умеете:
- Инициализировать проект через
express-generator
. - Запускать Express.js-приложение на определённом порту.
- Использовать "Сайты" ServBay для настройки обратного прокси и публикации Node.js-приложения на привычных HTTP/S-портах.
- Подключаться к основной базе данных в среде ServBay.
ServBay значительно упрощает запуск и управление локальной средой для Node.js (Express.js), позволяя полностью сосредоточиться на программировании. Автоматические SSL-сертификаты, бэкап сайтов, просмотр логов и другие функции делают ваш локальный процесс разработки максимально удобным и безопасным.