Перейти к основному содержимому

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.
Этот режим также позволяет указать количество workers — то есть число процессов 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.