Как настроить приложение Node.js в рабочей среде Ubuntu 18.04 LTS

12 set 2022 5 min di lettura
Как настроить приложение Node.js в рабочей среде Ubuntu 18.04 LTS
Indice dei contenuti

Введение

Node.js — это среда выполнения JavaScript с открытым исходным кодом для создания серверных и сетевых приложений.

В этом руководстве мы увидим, как устанавливать и настраивать приложения Node.js в рабочей среде Ubuntu 18.04 LTS с использованием PM2. Мы запустим приложение Node.js, управляемое PM2, используя Nginx в качестве обратного прокси-сервера.

Если вы намерены установить и настроить Node.js и PM2 на удаленном сервере, продолжайте читать, в противном случае, если вы хотите установить Node.js и PM2 на свой локальный компьютер, пропустите первый абзац «Подключение к серверу» и прочтите следующий.

Предпосылки

Прежде чем приступить к работе с этим руководством, у вас должно быть:

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется пароль для аутентификации.

Чтобы подключиться к серверу как root, введите эту команду:

ssh root@IP_DEL_SERVER

Далее вам будет предложено ввести пароль пользователя root.

Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить первый параметр:

ssh VOSTRO_UTENTE@IP_DEL_SERVER

Затем вам будет предложено ввести пароль пользователя.

Теперь вы подключены к своему серверу и готовы начать установку Node.js и PM2.

Установка Node.js с помощью PPA

Чтобы установить последнюю версию Node.js, добавьте личный архив пакетов (PPA), управляемый NodeSource. Давайте убедимся, что мы дома, и установим PPA. Замените 8.x правильной версией.

cd ~
curl -sL https://deb.nodesource.com/setup_8.x -o nodesource_setup.sh

Скачав скрипт, запустим его так:

sudo bash nodesource_setup.sh

PPA будет установлен, и локальный кеш пакетов будет обновлен. В этот момент дайте следующую команду:

sudo apt install nodejs

Чтобы проверить только что установленную версию nodejs:

nodejs -v

Пакет nodejs также будет содержать диспетчер пакетов NPM, поэтому вам не нужно устанавливать его отдельно. Однако я рекомендую установить пакет build-essential, чтобы некоторые пакеты NPM работали правильно.

sudo apt install build-essential

Создайте приложение Node.js

Создайте простое приложение с Node.js, чтобы узнать, как использовать PM2.

В терминале дайте следующую команду для создания нашего приложения:

cd ~
nano hello.js

Внутри файла вставьте следующий код:


const http = require('http');

 const hostname = '127.0.0.1';
 const port = 3000;

 const server = http.createServer((req, res) => {
 res.statusCode = 200;
 res.setHeader('Content-Type', 'text/plain');
 res.end('Hello, World!\n');
 });

 server.listen(port, hostname, () => {
 console.log(`Server running at http://${hostname}:${port}/`);
 });

Сохраните и закройте файлы.

Это приложение Node.js прослушивает указанный адрес (localhost) и порт (3000) и возвращает «Hello World!»

Чтобы протестировать приложение, введите:

node hello.js

Вы получите выходное сообщение, подобное следующему:

Server running at http://localhost:3000/

Чтобы остановить приложение, нажмите CTRL + C.

Чтобы протестировать приложение, откройте другой терминал на сервере и подключитесь к локальному хосту с помощью curl:

curl http://localhost:3000

Вы получите выходное сообщение, подобное следующему:

Hello World!

Установить PM2

Установите PM2, диспетчер процессов для приложений Node.js. PM2 позволяет приложениям работать в фоновом режиме в качестве службы.

Используйте npm для установки последней версии PM2 на ваш сервер:

sudo npm install pm2@latest -g

Опция -g позволяет установить модуль глобально, чтобы он был доступен для всей системы.

Мы используем команду запуска pm2 для запуска приложения в фоновом режиме:

pm2 start hello.js

Вы получите выходное сообщение, подобное следующему:


[PM2] Spawning PM2 daemon with pm2_home=/home/noviello/.pm2
 [PM2] PM2 Successfully daemonized
 [PM2] Starting /home/noviello/hello.js in fork_mode (1 instance)
 [PM2] Done.
 ┌──────────┬────┬─────────┬──────┬─────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
 │ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
 ├──────────┼────┼─────────┼──────┼─────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
 │ hello │ 0 │ N/A │ fork │ 842 │ online │ 0 │ 0s │ 0% │ 15.5 MB │ root │ disabled │
 └──────────┴────┴─────────┴──────┴─────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

PM2 автоматически назначает имя приложения (на основе имени файла) и идентификатор PM2. PM2 также сохраняет другую информацию, такую как PID процесса, его текущее состояние и использование памяти.

Приложения, работающие в PM2, автоматически перезапускаются в случае сбоя или завершения работы приложения, но вы можете сделать дополнительный шаг, чтобы запустить приложение при запуске системы, используя подкоманду запуска. Эта подкоманда создает и настраивает сценарий запуска для запуска PM2 и его управляемых процессов при запуске сервера:

pm2 startup systemd

Последняя строка результирующего вывода будет включать команду для запуска с привилегиями суперпользователя, чтобы настроить запуск PM2 при запуске:


[PM2] Init System found: systemd
 [PM2] To setup the Startup Script, copy/paste the following command:
 sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u noviello --hp /home/noviello

Запустите команду вывода с вашим именем пользователя вместо noviello:

sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u noviello --hp /home/noviello

В качестве следующего шага мы можем сохранить список процессов PM2 и соответствующие среды:

pm2 save

Мы создали системный диск, который запускает PM2 для пользователя при запуске системы. Этот модуль будет запускать hello.js.

Запустите службу с помощью systemctl:

systemctl start pm2-noviello

Проверьте состояние системного диска:

systemctl status pm2-noviello

Чтобы остановить приложение: (укажите имя или ID приложения PM2, в нашем случае hello):

pm2 stop hello

Чтобы перезапустить приложение:

pm2 restart hello

Чтобы просмотреть список приложений, управляемых PM2:

pm2 list

Чтобы получить информацию о приложении:

pm2 info hello

Для мониторинга процессов приложения:

pm2 monit

Запуск PM2 без аргументов также покажет страницу справки с примером использования.

Теперь, когда приложение Node.js запущено и управляется PM2.

Настройте Nginx в качестве обратного прокси

Приложение работает и слушает на локальном хосте, мы настроим веб-сервер Nginx в качестве обратного прокси-сервера, чтобы пользователи могли получить к нему доступ.

Откройте этот файл для редактирования:

sudo nano /etc/nginx/sites-available/default

Внутри блока server у вас должно быть место/ раздел. Замените содержимое этого раздела следующей конфигурацией. Если приложение настроено на прослушивание другого порта, обновите параметр proxy_pass, указав правильный номер порта:


server {...
 location /{
 proxy_pass http://localhost:3000;
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection 'upgrade';
 proxy_set_header Host $host;
 proxy_cache_bypass $http_upgrade;
 }...
 }

Сохраните и закройте файл.

Предполагая, что наш сервер доступен на example.com, доступ к https://example.com/ через веб-браузер отправит запрос на hello.js, прослушивая порт 3000 на локальном хосте.

ДОПОЛНИТЕЛЬНО: Дополнительные блоки местоположения могут быть добавлены к тому же блоку сервера, чтобы обеспечить доступ к другим приложениям на том же сервере. Например, если вы запускали другое приложение Node.js на порту 3001, вы можете добавить этот блок местоположения, чтобы разрешить доступ к нему через https://example.com/app2:


server {...
 location /app2 {
 proxy_pass http://localhost:3001;
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection 'upgrade';
 proxy_set_header Host $host;
 proxy_cache_bypass $http_upgrade;
 }...
 }

Убедитесь, что вы не допустили синтаксических ошибок:

sudo nginx -t

Перезапустите Nginx:

sudo systemctl restart nginx

Предполагая, что приложение Node.js запущено и конфигурация приложения и Nginx верны, теперь вы сможете получить доступ к своему приложению. Проверьте это, обратившись к URL-адресу вашего сервера (его общедоступному IP-адресу или доменному имени).

Установка и настройка Node.js и PM2 на Ubuntu 18.04 LTS завершена.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.