UA
UAH

Простий Node.js-сервер на Express для ISPmanager хостингу.

Що ви отримаєте

Node.js Express Міні-додаток на Express, який:

  • коректно слухає порт зі змінної оточення PORT (як вимагає загальний хостинг)
  • віддає головну сторінку та статику
  • має health-endpoint /health
  • коректно обробляє 404 та 500

Підходить для швидкого старту, тестів та простих лендингів/міні-сервісів.

Структура проекту

my-express-app/
|-- package.json
|-- app.js
|-- .env (опційно, для локального запуску)
|-- public/
| `-- style.css
`-- views/
    `-- index.html

Папки public і views можна перейменувати; у коді це налаштовується.

Створюємо package.json


{
  "name": "my-express-app",
  "version": "1.0.0",
  "description": "Simple Express server for shared hosting (ISPmanager).",
  "main": "app.js",
  "scripts": {
    "start": "node app.js",
    "start:prod": "NODE_ENV=production node app.js"
  },
  "engines": {
    "node": ">=18.x"
  },
  "dependencies": {
    "express": "^4.19.2",
    "morgan": "^1.10.0"
  }
}


Пояснення:

scripts.start — команда, яку зручно вказувати на панелі запуску програми. engines.node — нагадує бажану версію Node.js (в ISPmanager все одно вибирається вручну).

Пишемо сервер app.js


	
// app.js
const express = require('express');
const path = require('path');
const morgan = require('morgan');

const app = express();

// 1) Порт: на shared-хостингу його ставить панель (змінна оточення PORT)
const PORT = process.env.PORT || 3000;

// 2) Логи запитів (зручно при налагодженні)
app.use(morgan(process.env.NODE_ENV === 'production' ? 'combined' : 'dev'));

// 3) Віддаємо статику із /public
app.use(express.static(path.join(__dirname, 'public')));

// 4) Головна сторінка (простий html з /views/index.html)
app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'views', 'index.html'));
});

// 5) Health-check для моніторингу
app.get('/health', (req, res) => {
  res.status(200).json({ status: 'ok', uptime: process.uptime() });
});

// 6) 404 - якщо маршрут не знайдений
app.use((req, res, next) => {
  res.status(404).send('404 Not Found');
});

// 7) 500 - базовий обробник помилок
app.use((err, req, res, next) => {
  console.error('Unhandled error:', err);
  res.status(500).send('500 Internal Server Error');
});

// 8) Старт сервера
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
	

Проста головна сторінка views/index.html


<!doctype html>
<html lang="ru">
<head>
  <meta charset="utf-8" />
  <title>Express на shared-хостингу</title>
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <link href="/style.css" rel="stylesheet" />
</head>
<body>
  <main>
    <h1>Express працює</h1>
    <p>Це мінімальний сервер на Node.js (Express) для shared-хостингу.</p>
    <ul>
      <li>Головна: <code>/</code></li>
      <li>Health: <code>/health</code></li>
      <li>Статика: <code>/public</code> (підключено як<code>/style.css</code>)</li>
    </ul>
  </main>
</body>
</html>

Node.js
Node.js Хостинг
Запусти проект за пару кліків!
Безкоштовний SSLСучасні сервери7 днів тесту безкоштовно
Перейти до тарифів

Міні-стилі public/style.css


html, body {
  margin: 0;
  padding: 0;
  font: 16px/1.5 system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  background: #0f172a;
  color: #e2e8f0;
}
main {
  max-width: 720px;
  margin: 12vh auto;
  padding: 24px;
  background: #111827;
  border-radius: 16px;
  box-shadow: 0 10px 30px rgba(0,0,0,.25);
}
h1 { margin-top: 0; font-size: 28px; }
code { background: #1f2937; padding: 2px 6px; border-radius: 6px; }	

Опційно .env для локального запуску

На проді порт задає панель, але локально зручно так:


PORT=3000
NODE_ENV=development

В ISPmanager .env зазвичай не обов'язковий. Не забудьте не комити секрети.

Деплою на shared-хостинг в ISPmanager

  • Створіть сайт/домен у ISPmanager (розділ «WWW-домени»).
  • Завантажте проект (через файловий менеджер, Git або SFTP) у корінь сайту/до папки програми.
  • Встановіть залежність: відкрийте термінал/SSH - cd my-express-app - npm install.
  • Node.js-додаток:
    • У розділі Node.js вкажіть:
      • Версію Node.js (LTS/актуальна)
      • Стартовий файл: app.js
      • Команда запуску (якщо потрібно): npm start або просто node app.js
      • Змінні оточення: зазвичай PORT підставляється автоматично панеллю; якщо потрібно, додайте вручну (наприклад, PORT=8080).
    • Прив'яжіть додаток до домену/піддомену (панель сама налаштує проксі веб-сервера до вашого процесу)
  • HTTPS: увімкніть Let's Encrypt у картці домену
  • Перезапуск: використовуйте кнопку «Перезапустити» у програмі Node.js (або перезапуск через панель) після оновлення

Якщо панель просить вказати порт руками - задайте, наприклад, 8080, але слухати в коді потрібно process.env.PORT (панель проксіює до нього).

Часті запитання

На shared-хостингу прямий доступ до порту зазвичай закрито: запити йдуть через веб-сервер (Nginx/Apache) домену. Використовуйте домен, а не порт.
У ISPmanager є перегляд логів програми. Плюс morgan логує в stdout – його видно у логах процесу.
Залили зміни – npm install (якщо змінювалися залежності) – перезапуск процесу в панелі.

Міні-чек-лист перед продом

Програма слухає process.env.PORT.
Статичні файли лунають із public/.
Існує /health для перевірки статусу.
404 та 500 обробляються.
Увімкнено HTTPS (Let's Encrypt).


Реквізити: Україна, 61202, Харків, пр. Людвіга Свободи 26/298.
ФО-П Харитінов Олег Сергійович
IBAN: UA073052990000026001005905889
МФО 305299
ІПН 2961615658
АТ КБ "ПриватБанк"
mail:
Документи:
Служба підтримки: телефон + 380 57 7209279
створити тікет

Виберіть мову

Українська
English
Русский