Настройка NGINX + NodeJS на Ubuntu Server
Приложение NodeJS может запускаться в качестве веб-сервера и самостоятельно отвечать на http-запросы. Но в связки с NGINX его работу можно сделать быстрее и надежнее. Мы рассмотрим установку всех необходимых компонентов, настройку запуска приложения NodeJS в качестве сервиса systemd, а также приведем пример развертывания типового приложения. В инструкции используются:
- Ubuntu Server 18.04.
- NGINX 1.14.
- NodeJS 16.13.2.
Все действия будут пошаговыми — сначала мы развернем сервис на NodeJS, затем подключим NGINX и, на конец, рассмотрим установку веб-приложения.
Установка NodeJS
Установка может быть выполнена из репозитория:
apt install nodejs
Однако, во встроенном репозитории версия NodeJS может быть очень старой, и наше приложение может работать неправильно. Для продуктивной среды необходимо уточнить у разработчика, какая версия нужна и установить ее.
Чтобы получить другую версию NodeJS, установим curl:
apt install curl
curl -sL https://deb.nodesource.com/setup_16.x | sudo bash —
* в данном примере мы настроим репозиторий для 16-й версии приложения.
Теперь можно установить пакет nodejs нужной нам версии (в данном примере, 16):
apt install nodejs
А для установки конкретной версии, просто указываем ее в названии пакета, например:
apt install nodejs-16.13.0
Установка завершена. Проверить запуск и посмотреть версию можно командой:
Можно переходить к первому запуску тестового веб-приложения.
Запуск тестового приложения NodeJS
Для примера мы напишем маленькое веб-приложение, которое будет запускаться на порту 3000 и выводить на экран «Hello, world!».
Создаем каталог, где предполагаем хранить файлы нашего приложения:
mkdir -p /var/www/app01
const http = require('http');
const server = http.createServer((req, res) =>
server.listen(3000, '0.0.0.0', () => console.log('Start NodeJS Server on http://0.0.0.0:3000/');
>);
Если в нашей системе используется брандмауэр, откроем порт 3000:
iptables -I INPUT -p tcp —dport 3000 -j ACCEPT
На экране должно появиться:
Start NodeJS Server on http://0.0.0.0:3000/
Открываем браузер на любом компьютере в сети и переходим по адресу http://<IP-адрес сервер>:3000 — мы должны увидеть:
Наше приложение работает. Идем дальше.
Настройка автозапуска (systemd)
Мы запустили вручную наше приложение. Давайте теперь настроим его автозапуск. Для этого мы создадим юнит в systemd. Мы создадим юнит с @ — это позволит нам передавать имя приложения и папку при запуске.
И так, прерываем работу нашего приложения, которое мы запустили на предыдущем шаге (CTRL + C) и создаем файл:
[Unit]
Description=NodeJS Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node /var/www/%i/server.js
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
* обратите внимание на %i — это переменная, которой мы будем передавать имя нашего приложения, которое соответствует названию каталога, где оно лежит.
Перечитываем конфигурацию systemd:
Разрешаем и запускаем наше приложение:
systemctl enable node@app01 —now
* снова повторимся. app01 — имя приложения в нашем примере и ему соответствует каталог /var/www/app01.
Посмотреть состояние службы можно командой:
systemctl status node@app01
Переходим по адресу http://<IP-адрес сервер>:3000 — мы, снова, должны увидеть:
Наше приложение запускается как сервис.
Установка и настройка NGINX
Приступим к добавлению веб-сервера nginx. Его можно установить из репозитория командой:
apt install nginx
Сразу разрешим автозапуск:
systemctl enable nginx
Разрешим 80 порт в брандмауэре (если в нашей системе он используется):
iptables -I INPUT -p tcp —dport 80 -j ACCEPT
Переходим по адресу http://<IP-адрес сервер> (без указания порта) — мы увидим приветствие от веб-сервера:
В разделе location внесем изменения, приведя его к виду:
.
location / proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
>
.
* в нашем примере мы упростили настройку, чтобы сосредоточиться на связке NGINX + NodeJS. В продуктивной среде стоит использовать виртуальные домены. Подробнее про настройку полноценного веб-сервера можно почитать в инструкции Как настроить полноценный веб-сервер на Ubuntu.
Проверяем корректность настройки nginx:
Мы должны получить что-то на подобие:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
systemctl reload nginx
Переходим по адресу http://<IP-адрес сервер> (без порта 3000) и видим:
Наше приложение открывается через nginx.
Удаляем лишнее
1. Так как мы настроили запросы через nginx, нужно поменять некоторые настройки. Открываем файл:
server.listen(3000, '0.0.0.0', () => console.log('Start NodeJS Server on http://0.0.0.0:3000/');
>);
server.listen(3000, '127.0.0.1', () => console.log('Start NodeJS Server on http://127.0.0.1:3000/');
>);
* мы поменяли 0.0.0.0 на 127.0.0.1, чтобы наш сервер не слушал на всех интерфейсах — нам достаточно только локальной петли. Это более безопасный вариант работы.
Перезапустим наше приложение node:
systemctl restart node@app01
Проверим, что наше приложение слушает на порту 3000 и уже на адресе 127.0.0.1:
ss -tunlp | grep :3000
Мы должны увидеть:
tcp LISTEN 0 128 127.0.0.1:3000 0.0.0.0:* users:(("node",pid=2503,fd=10))
2. Теперь удалим лишнее правило в брандмауэре (открытый порт 3000, если мы его создавали). Смотрим список добавленных правил:
iptables -L —line-numbers
Находим правило с открытым портом 3000:
2 ACCEPT tcp — anywhere anywhere tcp dpt:3000
* в данном примере оно имеет порядковый номер 2.
iptables -D INPUT 2
apt install iptables-persistent
Установка приложения
В установке приложений есть множество нюансов, но мы опишем типовой подход.
Нам нужен будет менеджер пакетов node. Ставим его командой:
apt install npm
Получаем проект от разработчика и копируем его в наш каталог app01. После переходим в каталог:
Как правило, разработчик поставляет приложение с файлом package.json. В этом файле описаны пакеты, необходимые для работы приложения. Установим их:
npm прочитает файл package.json и выполнит установку — после в нашем каталоге с приложением появятся папка node_modules и файл package-lock.json.
Также обратите внимание, что файл для запуска сервиса node может иметь другое имя. Уточните это у разработчика и, при необходимости, отредактируйте systemd.
Разворачиваем Node.js-проект (Nuxt.js) на базе VDS с ОС Ubuntu Server
В данной статье я рассмотрю вопрос развертывания с нуля Nuxt.js-проекта (либо любого другого проекта на Node.js) на VDS-сервере с использованием веб-сервера Apahce2, Node.js, менеджера процессов pm2 с полным циклом установки всех компонентов.
Установка будет производится на чистом VDS-сервере, не имеющем каких-либо настроек.
Содержание статьи
Шаг 1. Подключаемся по SSH к VDS
Для подключения к VDS-серверу по SSH более не требуется скачивать и устанавливать какие-либо дополнительные программы, так как в Windows PowerShell на ОС Windows 10 последних версий уже встроен клиент OpenSSH.
Я же буду использовать приложение Windows Terminal, скачать которое можно в Microsoft Store (разработчик Windows Terminal — сами Microsoft).
В данной инструкции в качестве операционной системы на сервере мы будем использовать Ubuntu Server 20.04
Итак, подключаемся к серверу при помощи следующей команды:
Вместо root вы должны указать своего пользователя, который у Вас был выдан при создании сервера.
Вместо IP-адреса также можно использовать и FQDN-адрес сервера, если вы уже прописали DNS A-запись на Вашем домене со значением Вашего IP-адреса сервера.
Команда подключения к серверу по SSH
При успешном логине Вы увидите уже терминал (консоль) сервера:
Терминал Ubuntu Server
Как видим, мы подключены к удаленному серверу.
Шаг 2. Добавление репозитория Apache2 на сервер и установка веб-сервера
В данной инструкции мы будем устанавливать веб-сервер Apache2 из официального репозитория, так как в репозитории Ubuntu не всегда последняя версия веб-сервера Apache2.
Для начала установим необходимые пакеты командой:
Команда установки необходимого пакета
Если данный пакет уже установлен, то вы увидите следующее:
Необходимый пакет уже установлен
После установки необходимых пакетов добавляем официальный репозиторий Apache2 следующей командой:
При добавлении репозитория, в терминале появится вопрос, на который необходимо нажать клавишу Enter:
Подтверждение добавления репозитория
После добавления репозитория, производим установку самого веб-сервера Apache2:
В терминале появится вопрос о подтверждении установки веб-сервера Apache2. Если согласны с установкой — смело нажимайте клавишу Enter.
Теперь можно перейти по IP-адресу, либо по FQDN-адресу вашего сервера и убедиться, что веб-сервер Apache2 успешно установлен.
Примечание. Порты 80 и 443 на вашей виртуальной машине должны быть открыты. Если есть управляемый файерволл в панели управления вашего сервера на хостинге — обязательно проверьте!
Успешная установка Apache2
Шаг 3. Установка менеджера версий Node.js (nvm) и самого Node.js
Для установки и более удобного дальнейшего контроля версий NodeJS мы установки менеджер версии NodeJS. Пакет называется nvm.
И перейдем в раздел Installing and Updating и выберем один их способов установки скрипта. Я выберу второй через утилиту wget:
Раздел установки и обновления скрипта NVM в официальном репозитории на GitHub
Копируем команду и вставляем ее в терминал сервера:
Команда установки NVM в терминале
И жмем клавишу Enter
После установки перезагружаем сервер при помощи кнопки перезагрузки в панели управления сервером, либо через команду в терминале init 6
Примечание. Вместо перезапуска сервера можно переподключиться к нему по SSH так, как указано в шаге 1.
Автоматическое отключение от сервера после применения команды перезагрузки
После перезагрузки снова подключаемся к серверу согласно шагу 1.
Запускаем команду nvm для того, чтобы посмотреть и ознакомится со списком команд скрипта. Находим команду установки NodeJS в версии LTS:
Команда установки NodeJS LTS-версии
Пакет NVM поможет вам «в 2 клика» поддерживать всегда актуальную версию Node.js
Вводим эту команду в терминал и жмем клавишу Enter:
Успешная установка NodeJS через менеджер NVM
Проверяем установленную версию Node.js следующей командой:
И получаем сообщение об установленной версии Node.js:
Установленная версия NodeJS
Шаг 4. Установка менеджера процессов pm2
Для того, чтобы управлять процессами и приложениями, запущенными в среде Node.js, а также автоматического их запуска после перезагрузки сервера, нам понадобится менеджер процессов Node.js, который мы установим глобально в систему через пакетный менеджер npm. Пакет называется pm2:
При успешной установке мы увидим следующее:
Успешная установка пакета pm2
При помощи команды pm2 -h можно посмотреть список доступных команд
Шаг 5. Запуск Node.js-приложения (в нашем случае — Nuxt.js-приложения)
Я создам новое приложение на Nuxt.js для демонстрации работы. Можно запустить таким же образом любое Node.js-приложение, как новое, только что созданное, так и уже готовое приложение.
Примечание. Установку Nuxt.js описывать не буду, так как приложение новое и установка стандартная. Она написана на официальном сайте проекта, у которого есть русская версия документации
Nuxt.js проект по-умолчанию запускается в двух режимах:
В режиме разработки — npm run dev
В режиме продакшена — npm run start
Есть еще режим static, который запускается через команду npm run generate . Но я его рассматривать не буду, так как он не используется для постоянного запуска приложения через Node.js
Я же не буду сразу запускать это приложение одной из этих команд, а сразу воспользуюсь менеджером pm2
Для этого перейдем в папку с проектом и запустим команду инициализации менеджера pm2:
pm2 сообщает об успешной генерации файла экосистемы
Открываем файл ecosystem.config.js прямо в терминале через редактор nano командой и удаляем все содержимое:
Пустой файл ecosystem.config.js с удаленными стандартными значениями
Вставляем туда следующее содержимое и сохраняем комбинацией клавиш Ctrl+O, затем жмем Enter:
Для запуска dev-версии используем команду следующую команду:
Для запуска prod-версии:
Я, для примера, запущу Dev-версию:
Запущена dev-версия NuxtJS-приложения через pm2
Для последующей остановки/запуска приложения не нужно будет заходить в папку с проектом и запускать командой выше. Достаточно будет ввести название приложения из монитора pm2:
для запуска, либо
для остановки приложения.
Для просмотра всех запущенных NodeJS-приложений посредством pm2 небходимо ввести в терминал следующую команду:
Статус-панель pm2
Для просмотра монитора процессов:
Моинтор pm2
Подключаем автоматический запуск приложений через pm2 после перезагрузки сервера:
и сохраняем изменения:
Запуск автозагрузки и сохранение параметров
[Дополнительно] Графический интерфейс pm2 вне терминала
Для запуска веб-интерфейса управления процессами pm2 необходимо зарегистрироваться на сайте pm2.io и создать Bucket.
Будем считать, что есть существующий аккаунт и Bucket (инструкцию можно почитать на оф. сайте pm2).
Вводим команду для подключения к веб-интерфейсу:
На первом этапе pm2 спросит, есть ли у Вас аккаунт pm2.io (в нашем случае есть и мы вводим букву y и жмем клавишу Enter
Есть ли аккаунт pm2.io?
Вводим ваш email и пароль от аккаунта.
Если все введено верно, то pm2 попросит Вас выбрать, к какому Bucket подключиться — выбирайте ранее созданный. У меня это TestBucket
Выбор Bucket для подключения приложения к веб-интерфейсу pm2
При успешном подключении к Bucket в веб-интерфейсе pm2 появится Ваше приложение(процесс). Там вы сможете посмотреть статистику, сбросить монитор и перезагрузить приложение:
Веб-интерфейс pm2
Далее нам необходимо повторно добавить в автозагрузку pm2 и сохранить изменения:
Перезапуск автозагрузки pm2 и сохранение параметров
Шаг 6. Проксирование Node.js-приложения через Apache2 Proxy
У нас уже запущено приложение на Nuxt.js на порту 3000 (по-умолчанию)
Теперь нам необходимо проксировать его на определенный адрес и стандартный порт 80 (для HTTP).
Для этого установим и включим модуль Apache2 Proxy:
И перезагрузим веб-сервер командой:
Включение модуля Apache2 Proxy HTTP
Переходим в папку с виртуальными хостами Apache2 командой:
и дублируем дефолтный файл конфигурации виртуального хоста Apache2:
Открываем файл ваш_домен.conf с помощью редактора nano. Изменяем на Ваши следующие значения:
ServerName: необходимо раскомментировать и значение example.com поменять на ваше доменное имя
ServerAdmin: webmaster@localhost меняем на Ваш email
DocumentRoot: можно закомментировать значком #
Затем, чтобы проксировать наше приложение на этот адрес, нам необходимо добавить следующие строки:
Где :3000 — Ваш порт приложения
Сохраняем изменения комбинацией клавиш Ctrl+O и жмем Enter. Выходим из редактора комбинацией Ctrl+Z
Проксирование 3000 порта
Теперь можно включить виртуальный хост и перезагрузить веб-сервер*:
* В команде a2ensite ваш_домен не обязательно указывать расширение конфигурационного файла
Как видим — приложение успешно открывается на необходимом нам адресе и стандартном порту веб-сервера Apache2
Шаг 7. Тестирование работы pm2
Теперь необходимо проверить, срабатывает ли автоматический запуск приложений менеджером pm2 после перезагрузки сервера.
Для этого в терминале пропишем команду init 6 , либо перезагрузим сервер в панели управления хостингом.
Если Вы все сделали правильно и согласно инструкции — приложение на Node.js автоматически запустится на вашем адресе в течение минуты после запуска VDS-сервера.
Заключение
В данном материале я рассмотрел подробно установку веб-сервера Apache2, установку менеджера версий Node.js — пакета NVM и установку самого Node.js через этот менеджер, запуск Node.js-приложения на примере приложения на Vue.js-фреймворке — Nuxt.js, автоматический запуск этого приложения после перезагрузки сервера с помощью менеджера процессов pm2 и проксирование приложения на определенный адрес.
Старался объединить несколько инструкций в одну на своем личном опыте, когда еще только начинал работать с этими инструментами.
Возможно, более удобный (или правильный?) способ запуска будет через Docker и NGINX. Но в данной статье я показал базовый пример запуска.
Установка Node.js в Ubuntu
Сейчас пользователи операционной системы Ubuntu все чаще интересуются различными дополнительными компонентами, необходимыми для расширения общей функциональности. Некоторые устанавливают специальные наборы софта, обеспечивающее взаимодействие с сетевыми протоколами или позволяющие создавать программы разного назначения. Одним из важнейших элементов, который предназначен для превращения JavaScript в язык общего назначения, называется Node.js. По умолчанию он отсутствует в Ubuntu, поэтому сегодня мы хотим продемонстрировать четыре доступных метода его инсталляции.
Устанавливаем Node.js в Ubuntu
Далее речь пойдет об абсолютно всех доступных вариантах установки. Каждый из них имеет свой алгоритм действий, требуемый для выполнения. К тому же все эти способы будут оптимальными в определенных ситуациях, например, при желании инсталлировать старую версию Node.js или сделать это через NVM (Node Version Manager). Мы советуем изучить все представленные инструкции, а уже потом выбрать ту, которая будет подходящей.
Подготовительные действия
Некоторые обладатели рассматриваемого дистрибутива уже имеют установленную программу под названием Node. Сейчас она не используется, но может мешать корректному взаимодействию с Node.js, поэтому перед началом инсталляции мы рекомендуем проверить наличие этого софта и удалить его, что осуществляется так:
- Откройте список приложений и запустите «Терминал». Вы можете открыть консоль и любым удобным для вас образом.
- Напечатайте команду dpkg —get-selections | grep node , чтобы проверить наличие установленного ПО, а затем нажмите на клавишу Enter.
- Если появилась пустая строка нового ввода, значит, софт не был найден и может переходить к инсталляции. В противном случае придется производить удаление.
После успешной деинсталляции можно сразу же переходить к выбору способа для установки последней или другой нужной версии Node.js.
Способ 1: Инсталляция в NVM
Выше мы уже уточнили, что такое NVM. Его предназначение заключается в управлении установленными версиями Node.js. Такой инструмент необходим только в том случае, если вы инсталлируете множество сборок и желаете время от времени переключаться между ними. Реализуется этот способ добавления компонента тоже через консоль.
- Начнем с инсталляции элементов, требуемых для корректного функционирования Node Version Manager. Изначально они не поставляются в сборке ОС, поэтому добавлять их понадобится вручную. Вставьте первую команду sudo apt install build-essential checkinstall и нажмите на Enter.
- Введите пароль для подтверждения учетной записи суперпользователя.
- Появится уведомление о том, что сейчас произойдет скачивание определенного объема информации. Подтвердите это сообщение, выбрав вариант Д.
- Ожидайте окончания инсталляции.
Теперь можете переходить к полноценному использованию NVM, инсталлируя нужное количество разных версий Node.js и всячески управляя ими.
Способ 2: Использование пакетного менеджера Ubuntu
Использование пакетного менеджера — классический вариант инсталляции программного обеспечения в рассматриваемой сегодня операционной системе. Однако реализация подобного метода возможна только в случае наличия файлов ПО в официальных репозиториях. Node.js имеется в данных хранилищах, а значит, установка пройдет успешно.
- Запустите «Терминал» удобным для вас образом и впишите там стандартную команду sudo apt install nodejs , после нажав на клавишу Enter.
- Напечатайте пароль для подтверждения прав суперпользователя.
- Подтвердите информацию о занятом дисковом пространстве, выбрав вариант Д.
- Дождитесь окончания распаковки полученных архивов. Во время операции не закрывайте окно консоли, поскольку это приведет к обрыву скачивания.
- В Node.js имеется утилита управления пакетами. Если вы используете текущий метод, она не будет инсталлирована автоматически, поэтому следует самостоятельно активировать команду sudo apt install npm .
- Потребуется снова подтвердить операцию занятия дискового пространства и дождаться завершения добавления файлов в систему.
- После можете использовать команду node -v для проверки текущей версии установленного ПО. В новой строке отобразится нужная информация.
Перед использованием этого метода учтите, что инсталлирована на компьютер будет последняя актуальная версия программного обеспечения. Если же хотите самостоятельно выбрать сборку, то данный способ вам точно не подходит.
Способ 3: Пользовательские репозитории
Как известно, помимо официальных хранилищ, стандартный пакетный менеджер Ubuntu поддерживает инсталляцию софта через пользовательские хранилища. Если вы желаете задействовать этот вариант, следует заранее подобрать оптимальную для себя сборку, поскольку версию придется указывать непосредственно во время ввода команды.
- Откройте консоль и используйте команду sudo apt install curl . Она запустит инсталляцию специальной утилиты, которая пригодится для распаковки файлов полученного архива.
- Введите пароль суперпользователя и ждите завершения добавления софта.
- Вставьте curl -sL https://deb.nodesource.com/setup_10.x | sudo bash — и нажмите на Enter для получения архивов Node.js. Как видите, в последнем выражении setup_10.x указано, что добавлена будет десятая версия. Измените цифры на требуемые, чтобы установить другую сборку.
- Скорость получения всех архивов зависит от качества соединения с интернетом и мощности компьютера.
- Используйте уже знакомую команду sudo apt install nodejs для компиляции полученного архива.
- Подтвердите процесс добавления, выбрав соответствующий вариант ответа.
Как видите, этот вариант идеально подходит для того, чтобы успешно установить одну или несколько существующих сборок Node.js. От вас требуется только знать номер желаемой версии, а эту информацию можно без каких-либо проблем найти в свободном доступе через интернет.
Способ 4: Получение архива с официального сайта
Не всегда на компьютере имеется интернет, чтобы можно было установить Node.js одним из приведенных выше способов, поэтому и возникает желание получения архивов с последующей возможностью добавления в Убунту. Скачать TAR.GZ можно с официального сайта, а сам процесс установки выглядит следующим образом:
- Для начала потребуется определить архитектуру операционной системы, чтобы знать, какой именно архив скачивать. Введите в консоли команду arch и нажмите на Enter.
- В новой строке отобразятся интересующие вас сведения.
- Перейдите по указанной выше ссылке, чтобы попасть на официальный сайт Node.js. Здесь выберите подходящую для себя версию.
- Затем отыщите в списке поддерживаемый архив. Если вы хотите установить его через интернет, скопируйте ссылку на папку, иначе понадобится скачивать папку на локальное хранилище.
- Если вы решили устанавливать софт через интернет, откройте консоль и напишите wget https://nodejs.org/dist/latest-v13.x/node-v13.1.0-linux-x64.tar.gz , где строка после wget — скопированная ранее ссылка на архив.
- Дождитесь окончания загрузки. Во время этого процесса вы будете видеть прогресс в отдельной строке.
- После используйте sudo tar -C /usr/local —strip-components 1 -xf ./node-v13.1.0-linux-x64.tar.gz . Если же вы хотите произвести инсталляцию из хранилища, вместо указанной ссылки введите путь к расположению архива.
- В конце останется только проверить текущую версию Node.js, чтобы убедиться в корректности инсталляции. Используйте для этого уже знакомую команду.
Как установить Node.js в Ubuntu 20.04
Node.js — основанная на javascript-движке V8 от Google серверная среда выполнения javascript, ставшая в последние годы очень популярной. Первый ее выпуск датируется 2010 годом. За это время Node.js прошла путь от смелого эксперимента к одному из лидеров рынка, который поддерживается Microsoft, Google, IBM, linkedIn, NASA и многими другими.
- Причина популярности № 1 — простота в освоении, ведь это все тот же javascript с прикрученными сетевым и файловым модулями. На Node.js пишут огромные распределенные сервисы, крошечные локальные демоны для собственных нужд, системы сборки современного фронтенда зависимы от Node.js.
На Node.js основан Electron — фреймворк, который применяется в разработке десктопных приложений на javascript.
Все это делает javascript, на котором и базируется Node.js, универсальным языком. Конечно, как и у любого универсального решения, у него есть свои недостатки. Он однопоточный, хоть и асинхронный. У него относительно низкая производительность из-за особенностей архитектуры. «Числодробилки» на нем точно писать не стоит. Зато его конек — фронтенд (вне конкуренции по причине отсутствия конкуренции) и быстрое прототипирование сервисов для proof of concept — проверки концепции на жизнеспособность. Часто Node.js-микросервисы используются как прокси для других микросервисов.
- Причина популярности № 2 — огромное сообщество. Ода из производных огромного сообщества — https://npmjs.com — библиотека готовых модулей для использования в своих проектах. С большой вероятностью задача, которая перед вами стоит, уже решена полностью или частично в модулях из npm. Все опубликованные модули являются open source.
Управлять зависимостями очень легко с помощью npm. Для того, получить какой-то модуль в свой проект, можно просто сделать:
А дальше подключить его в своем приложении. Npm входит в Node.js, так что, в большинстве случаев установка npm на наш Ubuntu не требуется.
Несмотря на то, что сборки Node.js есть под огромное число платформ, лучшим выбором будет установка Node.js на linux.
В этом руководстве мы расскажем как установить Node.js на сервер под управлением Ubuntu 20.04.
Перед установкой — подготовить сервер
Залогинимся в личном кабинете https://my.selectel.ru/login/, нажав на вкладку «Облачная платформа». Там вы сможете создать виртуальный сервер.
Необходимо выбрать зону размещения сервера исходя из его близости к пользователям. Пинг выше, если сервер дальше.
Нажмем «Создать сервер».
В разделе «Источник» убеждаемся, что выбран образ Ubuntu 20.04.
Конфигурацию можно настроить по своим потребностям.
В разделе «Сеть» стоит выбрать «Подсеть — Плавающий IP-адрес».
В разделе «Доступ» загрузите SSH-ключ и не забудьте сохранить root-пароль. Подробнее об этом рассказано в этой статье.
Теперь можно создать сервер кнопкой «Создать» в самом низу.
Будет отображена страница статуса сервера, надо дождаться индикации ACTIVE вверху справа.
Теперь на вкладке «Порты» можно посмотреть IP-адрес, присвоенный серверу.
Облачные серверы
Удаление старых версий
Если у вас уже был готовый сервер, то на нем, возможно, присутствуют старые версии. Их стоит удалить во избежание конфликтов, которые бывает крайне сложно отследить в дальнейшем. При создании сервера несколько минут назад, можно сразу начать установку, иначе надо проверить предыдущие инсталляции Node.js:
В ответ на команду могут появиться пакеты/пакет, их можно удалить:
Способ №1: NVM
Для управления установленной версией Node.js и внесения изменений необходима утилита NVM (Node Version Manager). Она будет приоритетна для работы на локальной машине разработчика, для dev-систем и тестирования новых фич в экспериментальных версиях. Возможность быстро сменить версию может очень пригодиться во всех этих вариантах. NVM на Ubuntu устанавливается без проблем. Приступим к установке.
Сперва зададим команду сбора списка пакетов из репозиториев:
Некоторые версии Node.js нужно собирать, поэтому нужные для этого пакеты важно установить:
Если требуется установка или обновление NVM, команда должна выглядеть так:
Убедитесь в актуальности устанавливаемых версий. Вся информация есть в официальном репозитории NVM.
Как только установка завершится, необходимо осуществить перезапуск сессии (переподключиться или перелогиниться), или задать команду:
После всех исполненных команд нам стала доступна утилита nvm. Перед устанавкой Node.js нужно ознакомиться со списком доступных версий:
Список большой, так как Node.js существует с 2010 года и какое-то время даже существовала двумя параллельными проектами, которые через какое-то время снова слились в один проект.
Для знакомства с серверной средой Node.js стоит выбрать LTS. Она будет отмечена в списке соответствующим комментарием.
Вы можете установить любую нужную вам версию, например, нам нужна 14.16.1.
Обратите внимание на строку Now using node v14.16.1 (npm v6.14.12) при установке, эта версия сразу становится активной.
Если вы захотите посмотреть версии, которые установили, это легко сделать с помощью команды:
Активная версия подсвечена в самом начале указателем ->
Если вы хотите сделать активной какую-то другую версию, укажите команду:
Проверяем, что у нас получилось:
Перед удалением определенной версии надо сначала ее деактивировать:
А потом удалить командой:
В системе ее больше не видно.
Способ №2: репозитории Ubuntu
Самый простой способ установки Node.js на Ubuntu 20.04. Использовать в production не рекомендуется, но для знакомства, можно использовать.
Сначала обновляем список пакетов, доступных к установке:
Теперь устанавливаем Node.js:
Проверяем, что у нас получилось:
Обратите внимание, что хоть способ установки и прост, версия очень старая. Для боевых целей вам этот вариант не подойдет. Он больше подходит для новичков, которые только начинают знакомиться с Node.js. Об актуальных версиях серверной среды от Google мы рассказали в способах установки NVM и из официального репозитория.
Способ №3: Установка из официального репозитория Node.js (PPA)
Для production-систем лучше использовать официальные репозитории Node.js, они есть для всех популярных linux-дистрибутивов. Репозиторий позволит буквально двумя командами обновиться до актуальной версии вместе со всей системой.
В этой инструкции вы найдете специальный скрипт. Он поможет с добавлением репозитория в систему:
Следующий шаг — выполнение команды установки Node.js:
В скрипте также указано, что для сборки некоторых пакетов npm, стоит установить gcc, g++ и make:
Способ №4: Установка из бинарных файлов
Этот способ довольно редкий, он применим для уникальных ситуаций. Например, в подготовке embedded, т.е. встроенной системы без доступа к ней снаружи для администрирования.
В остальных случаях — в этому способу стоит относиться с осторожностью во избежание проблем с обновлениями и управлением зависимостями.
Кроме того, такую установку очень сложно отменить, ее следы могут остаться в системе навсегда.
Сперва узнаем, какая архитектура у вашей системы:
На официальном сайте нужно выбрать версию и архив для архитектуры.
В нашем случае команда на скачивание:
Скачанный архив нужно распаковать:
Все готово, дальше — обновить npm
Node.js установлен, пора приступать к его использованию. Перед этим стоит обновить ваш пакетный менеджер npm. Как правило, версия пакетного менеджера довольно устаревшая.
Смотрим, какая версия установлена сейчас:
С помощью npm мы устанавливаем npm (обновляем по сути) и делаем мы это глобально (ключ -g).
Теперь можем создать первое приложение, чтобы убедиться в работоспособности инсталляции.
Сначала создаем ему директорию:
Без использования ключа -y вам будет задано несколько вопросов о названии проекта, авторе, лицензии, репозитории и так далее. Команда создала в директории файл package.json, который является описанием всего проекта. Там прописываются зависимости, метаинформация, скрипты запуска, тестов и сборки проекта и так далее.
Теперь установим какую-нибудь библиотеку из npmjs.com, например, пакет ip. Этот пакет позволяет удобно работать с IP-адресами.
Ключ -s указывает npm сохранить пакет как зависимость в package.json. Без него пакет будет установлен, но не будет запомнен в рамках проекта.
Создадим ваше первое приложение:
И вставим вот эту программу в файл:
Сохраняем (CTRL + O), закрываем (CTRL + X) nano. Запускаем первую программу: