Перейти до основного вмісту

Node.js

Вступ

Node.js — це серверна платформа, яка запускає застосунки, написані на JavaScript.

Спочатку потрібно встановити Node.js:

  • Перейдіть до "Налаштування" -> "Застосунки"

Меню керування застосунками у FASTPANEL

  • Натисніть кнопку "Встановити" для потрібної версії Node.js

Встановлення версії Node.js у FASTPANEL

Створіть вебсайт:

  • Виберіть шаблон для вебсайту Node.js

Нове налаштування сайту у FASTPANEL

  • Укажіть домен і пов’язані параметри. На етапі налаштування ви можете змінити БД, користувача FTP і Backend

Нове налаштування сайту у FASTPANEL

  • Завантажте файли застосунку до каталогу вебсайту
  • Щоб установити залежності, виконайте npm20.15.1 install у Terminal (потрібно встановити застосунок ttyd для FASTPANEL®)

Встановлення залежностей Node.js

  • Перезапустіть Node.js, перейшовши до картки сайту, а потім відкривши розділ "Сервіси".

Перезапуск сервісу Node.js

Фреймворк Express

На прикладі фреймворку Express створімо простий вебсервер:

  • Підключіться до сервера через SSH як користувач, якому належить сайт (можна використовувати застосунок ttyd для FASTPANEL®)
  • Створіть файл app.js у каталозі вебсайту та додайте до нього такий код:
const express = require('express');
const app = express();
const PORT = process.env.SERVICE_PORT;

app.get('/', (req, res) => {
res.send('Hello! This is my first server on Node.js + Express 🚀');
});

app.listen(PORT, () => {
console.log(`Server is running at http://localhost:${PORT}`);
});

  • У каталозі вебсайту виконайте команду для встановлення express
npm20.15.1 install express
  • Перейдіть до картки сайту, потім до розділу Сервіси
  • Перезапустіть сервіс
  • Перевірте вебсайт

Docusaurus

На прикладі вебзастосунку Docusaurus налаштуймо параметри:

  • Підключіться до сервера через SSH як користувач, якому належить сайт (можна використовувати застосунок ttyd для FASTPANEL®)
  • У каталозі вебсайту запустіть встановлення Docusaurus
npx20.15.1 create-docusaurus -j ./docs
  • Коли буде запропоновано вибрати шаблон, вкажіть classic (recommended)

  • Після встановлення замініть один рядок у файлі docs/package.json

"start": "docusaurus start",
# replace with
"start": "docusaurus start --port $SERVICE_PORT",

$SERVICE_PORT — це системна змінна, задана в FASTPANEL®

  • У панелі керування перейдіть до "налаштування сайту" -> "Backend"

  • Виберіть обробник Standalone або PM2.

  • Виберіть потрібну версію Node.js.

  • Укажіть робочу папку docs

  • У полі команди запуску введіть: npm run start

  • Збережіть. Дочекайтеся компіляції застосунку (інформація з’явиться в логах). Перевірте вебсайт

Next.js

Використовуючи Next.js з Node.js 20.19 як приклад, створімо простий вебсервер:

  • Підключіться до сервера через SSH як користувач, якому належить вебсайт (ви також можете використовувати застосунок ttyd у FASTPANEL®).
  • У каталозі вебсайту виконайте команду ініціалізації проєкту:
yarn20.19.4 init -y
yarn20.19.4 add next react react-dom
  • Додайте блок scripts до файлу package.json:
"scripts": {
"dev": "next dev -p $SERVICE_PORT",
"build": "next build",
"start": "next start -p $SERVICE_PORT"
}
  • Створіть каталог pages і всередині нього додайте файл з назвою index.js:
mkdir pages
cat <<EOF > pages/index.js
export async function getServerSideProps() {
return {
props: {
nodeVersion: process.version,
port: process.env.SERVICE_PORT || 3000,
},
};
}

export default function Home({ nodeVersion, port }) {
return (
<div style={{
fontFamily: 'sans-serif',
textAlign: 'center',
marginTop: '20vh'
}}>
<h1>✅ It works!</h1>
<p>Next.js app running on Node.js {nodeVersion}</p>
<p>Port: {port}</p>
</div>
);
}
EOF
  • Запустіть збірку проєкту.
yarn20.19.4 build
  • У панелі керування перейдіть до "налаштування сайту" -> "Backend"
  • Виберіть обробник Standalone або PM2.
  • Виберіть потрібну версію Node.js.
  • У полі команди запуску введіть: yarn run start.
  • Збережіть. Дочекайтеся компіляції застосунку (інформація з’явиться в логах). Перевірте вебсайт

Додаткова інформація

У режимі Standalone запускається процес Node.js для виконання ваших скриптів.

У режимі PM2 для керування процесами Node.js, логами та системним навантаженням використовується менеджер процесів PM2.
Цей режим також дає змогу вказати кількість воркерів — тобто кількість процесів Node.js, які обробляють вхідні запити до сервера.
Крім того, цей режим надає опцію Enable file watch — PM2 автоматично перезапускає ваш застосунок, коли файл змінюється в поточному каталозі або його підкаталогах. Зверніть увагу, що цей режим створює додаткове системне навантаження і не рекомендований для production-середовищ.

Аналогічно ви можете налаштувати застосунок, якщо йому потрібен YARN замість NPM

Ви можете встановити залежності вашого проєкту, перелічені в package.json, за допомогою YARN або NPM безпосередньо з FASTPANEL®. Для цього відкрийте картку вебсайту та перейдіть до розділу Сервіси:

Сервіси Node.js

Логи

Застосунок Node.js може генерувати логи. У FASTPANEL® вони розташовані в картці сайту, у розділі Логи, на вкладці "Backend log"

Консольні команди

Після встановлення Node.js у FASTPANEL® користувачі можуть працювати зі своїми проєктами за допомогою консольних команд, таких як:

  • pm2
  • yarn20.15.1
  • npx20.15.1
  • npm20.15.1
  • node20.15.1

Приклад:

$ npm20.15.1 list
node-socket-port-server@1.0.0 /var/www/node_user/data/www/node.site
└── express@4.21.2
$ pm2 ls
┌────┬─────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├────┼─────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ amazing_site│ default │ 1.0.0 │ cluster │ 9355 │ 2m │ 0 │ online │ 0% │ 62.4mb │ user │ disabled │
│ 1 │ amazing_site│ default │ 1.0.0 │ cluster │ 9362 │ 2m │ 0 │ online │ 0% │ 62.5mb │ user │ disabled │
└────┴─────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

Назва кожної команди містить номер версії встановленого Node.js. У цьому прикладі доступна версія Node.js 20.15.1.