Поиск по сайту:

Как развернуть приложения Node.js с помощью pm2 и Nginx в Ubuntu


На этой странице

  1. Шаг 1. Установите Node.js LTS
  2. Шаг 2. Создание примера экспресс-приложения
  3. Шаг 3. Установите pm2
  4. Шаг 4. Установите и настройте Nginx в качестве обратного прокси-сервера
  5. Шаг 5. Тестирование
  6. Ссылки

pm2 — это менеджер процессов для приложений Node.js, он позволяет вам поддерживать работу ваших приложений и имеет встроенный балансировщик нагрузки. Он простой и мощный, вы всегда можете перезапустить или перезагрузить приложение узла с нулевым временем простоя, а также создать кластер вашего приложения узла.

В этом руководстве я покажу вам, как установить и настроить pm2 для простого приложения Express, а затем настроить Nginx в качестве обратного прокси-сервера для приложения узла, работающего под управлением pm2.

Предпосылки

  • Убунту 16.04 — 64-разрядная версия
  • Привилегии root

Шаг 1 — Установите Node.js LTS

В этом уроке мы начнем наш проект с нуля. Во-первых, нам нужно установить Nodejs на сервер. Я буду использовать Nodejs LTS версии 6.x, которую можно установить из репозитория nodesource.

Установите пакет python-software-properties из репозитория Ubuntu, а затем добавьте репозиторий nodesource Nodejs.

sudo apt-get install -y python-software-properties
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

Установите последнюю версию Nodejs LTS.

sudo apt-get install -y nodejs

Когда установка прошла успешно, проверьте версию node и npm.

node -v
npm -v

Шаг 2. Создание экспресс-образца приложения

Я буду использовать простой скелет веб-приложения, созданный с помощью пакета с именем экспресс-генератор для этого примера установки. Экспресс-генератор можно установить с помощью команды npm.

Установите экспресс-генератор с помощью npm:

npm install express-generator -g

-g: установить пакет внутри системы

Мы будем запускать приложение как обычный пользователь, а не как пользователь root или суперпользователь. Итак, сначала нам нужно создать нового пользователя.

Создайте нового пользователя, я назову своего yume:

useradd -m -s /bin/bash yume
passwd yume

Войдите под новым пользователем с помощью su:

su - yume

Затем создайте новое простое веб-приложение с помощью экспресс-команды:

express hakase-app

Команда создаст новый каталог проекта hakase-app.

Перейдите в каталог проекта и установите все зависимости, необходимые приложению.

cd hakase-app
npm install

Затем протестируйте и запустите новое простое приложение с помощью следующей команды:

DEBUG=myapp:* npm start

По умолчанию наше экспресс-приложение будет работать на порту 3000. Теперь посетите IP-адрес сервера: 192.168.33.10:3000.

Простой скелет веб-приложения работает на порту 3000 под пользователем yume.

Шаг 3 - Установите pm2

pm2 — это пакет узла, который можно установить с помощью команды npm. Итак, давайте установим его с помощью npm (с привилегиями root, когда вы все еще вошли в систему как пользователь hakase, затем выполните команду \exit\, чтобы снова стать root):

npm install pm2 -g

Теперь мы можем использовать pm2 для нашего веб-приложения.

Перейдите в каталог приложения hakase-app:

su - hakase
cd ~/hakase-app/

Там вы можете найти файл с именем package.json, отобразить его содержимое с помощью команды cat.

cat package.json

Вы можете видеть, что стартовая строка содержит команду, которая используется Nodejs для запуска экспресс-приложения. Эту команду мы будем использовать с менеджером процессов pm2.

Запустите экспресс-приложение с помощью команды pm2 ниже:

pm2 start ./bin/www

Теперь вы можете увидеть результаты ниже:

Наше экспресс-приложение работает под pm2 с именем www, id 0. Вы можете получить более подробную информацию о приложении, работающем под pm2, с помощью опции show show nodeid|name.

pm2 show www

Если вам нравится просматривать журнал нашего приложения, вы можете использовать опцию журналов. Это просто журнал доступа и ошибок, и вы можете увидеть статус HTTP приложения.

pm2 logs www

Вы можете видеть, что наш процесс запущен. Теперь давайте включим его запуск во время загрузки.

pm2 startup systemd

systemd: Ubuntu 16 использует systemd.

Вы получите сообщение о запуске команды от имени пользователя root. Вернитесь к привилегиям root с помощью \exit\, а затем запустите эту команду.

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

Он сгенерирует файл конфигурации systemd для запуска приложения. Когда вы перезагружаете сервер, приложение автоматически запускается при запуске.

Шаг 4. Установите и настройте Nginx в качестве обратного прокси-сервера.

В этом руководстве мы будем использовать Nginx в качестве обратного прокси-сервера для приложения узла. Nginx доступен в репозитории Ubuntu, установите его с помощью команды apt:

sudo apt-get install -y nginx

Затем перейдите в каталог с доступными сайтами и создайте новый файл конфигурации виртуального хоста.

cd /etc/nginx/sites-available/
vim hakase-app

Вставьте конфигурацию ниже:

upstream hakase-app {
    # Nodejs app upstream
    server 127.0.0.1:3000;
    keepalive 64;
}

# Server on port 80
server {
    listen 80;
    server_name hakase-node.co;
    root /home/yume/hakase-app;

    location / {
        # Proxy_pass configuration
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_max_temp_file_size 0;
        proxy_pass http://hakase-app/;
        proxy_redirect off;
        proxy_read_timeout 240s;
    }
}

Сохраните файл и выйдите из vim.

По конфигурации:

  • Приложение узла работает с доменным именем hakase-node.co.
  • Весь трафик от nginx будет перенаправляться в приложение узла, работающее на порту 3000.

Активируйте конфигурацию, создав символическую ссылку в каталоге с поддержкой сайтов.

ln -s /etc/nginx/sites-available/hakase-app /etc/nginx/sites-enabled/

Протестируйте конфигурацию Nginx и убедитесь в отсутствии ошибок.

nginx -t

Запустите Nginx и включите его во время загрузки:

systemctl start nginx
systemctl enable nginx

Шаг 5 - Тестирование

Откройте веб-браузер и зайдите на доменное имя (мое):

Вы увидите, что экспресс-приложение работает под веб-сервером nginx.

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

pm2 save
sudo reboot

Если вы снова вошли на свой сервер, проверьте процесс приложения узла. Запустите приведенную ниже команду от имени пользователя yume.

su - yume
pm2 status www

Приложение Node работает под управлением pm2 и Nginx в качестве обратного прокси.

Ссылки

  • Убунту
  • Node.js
  • Nginx