Настроить виртуальный сервер ноде js что это
Перейти к содержимому

Настроить виртуальный сервер ноде js что это

  • автор:

Создание простого веб-сервера с помощью Node.js и Express

Дмитрий ПереводIT

Node.js с Express — это популярный дуэт, используемый многими приложениями во всем мире. Данный урок познакомит вас с функциональностью этих инструментов на примере сборки простого веб-сервера.

Создаваемый сервер будет обслуживать HTML-страницу, доступную другим людям. К концу статьи вы усвоите базовые знания о:

  • Node.js;
  • Express;
  • npm;
  • создании маршрутов Express;
  • обслуживании HTML;
  • настройке статических ресурсов Express.

Совет: не копируйте код урока, а напишите его сами. Это позволит вам лучше его понять и усвоить.

Создание и инициализация проекта

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

После создания проекта нужно его инициализировать:

Эта команда создает файл package.json и инициализирует его с предустановленными значениями. Если вы захотите сами заполнить его поля, удалите флаг -y и следуйте инструкциям.

Добавление Express

После инициализации проекта Node.js мы переходим к следующему шагу — добавлению Express. Установка пакетов в Node.js выполняется командой npm install packageName .

Для добавления последней стабильной версии Express выполните:

После установки Express файл package.json будет выглядеть так:

Express перечислен среди dependencies , значит, он установился успешно. Переходим к третьему шагу — созданию сервера.

Создание сервера Express

Прежде чем продолжать, нужно создать для сервера JS-файл. Выполните в терминале следующую команду:

Теперь откройте этот файл и пропишите в нем:

Что эти строки делают?

  1. Первая импортирует Express в проект, чтобы его можно было использовать. При каждом добавлении в проект пакета необходимо импортировать его туда, где он будет использоваться.
  2. Вторая строка вызывает функцию express , которая создает новое приложение, после чего присваивает результат константе app .

Создание маршрутов и прослушивание порта

Говоря простым языком, маршрут представляет конечную точку, к которой могут обращаться пользователи. Он ассоциируется с HTTP-глаголом (например, GET, POST и пр.) и получает путь URL. Кроме того, он получает функцию, которая вызывается при обращении к этой конечной точке.

Пропишите в файле следующий код:

Разберем его согласно приведенной ранее структуре:

  • Он связан с HTTP-глаголом — в данном случае GET.
  • Он получает URL — здесь это домашняя страница ( / ).
  • Он получает функцию, которая будет вызываться при обращении к конечной точке.

Следовательно, когда пользователь выполняет запрос GET к домашней странице, т.е. localhost:3333 , вызывается стрелочная функция и отображается фраза “Hello WWW!”

Последним шагом подготовки сервера к работе будет настройка слушателя. Понадобится указать для приложения конкретный порт. Напишите нижеприведенный код в конец JS-файла.

Чтобы иметь возможность запускать сервер, вам нужно будет вызывать метод listen . При этом вы также можете изменить номер порта (3333) на любой другой.

Доступ к приложению в браузере

Для запуска приложения выполните в терминале node index.js . Имейте в виду, что index.js — это произвольное имя, которое я выбрал для данного урока, так что можете назвать его app.js или как-угодно иначе.

Теперь, когда сервер запущен, можно обратиться к нему в браузере. Перейдите по адресу http://localhost:3333/ , перед вами должно отобразиться следующее сообщение:

Вы отлично справились с настройкой веб-сервера Node.js + Express. В следующем разделе мы настроим статическое содержимое, а именно JavaScript, CSS, HTML, изображения и т.д.

Статические файлы

Наше приложение пока что выглядит не очень. Почему бы не добавить ему структуру и стилизацию? Но куда все это нужно добавлять?

В этом разделе вы узнаете, как настраивать и передавать статические ресурсы, такие как HTML, JavaScript, CSS и изображения.

Импорт модуля path

Первым делом нужно импортировать в приложение модуль path . Устанавливать ничего не нужно, потому что path предустановлен в Node изначально.

Пропишите в начале файла эту строку:

Зачем вообще этот модуль? Он позволяет генерировать абсолютные пути, которые необходимы для передачи статических файлов. Добавьте следующую строку в приложение перед определением маршрутов:

path.join получает два аргумента:

  • Текущую рабочую директорию (cwd).
  • Вторую директорию, которую нужно объединить с cwd.

В качестве упражнения попробуйте вывести в консоль path.join(__dirname, 'public') и посмотрите, что получится.

На данный момент сервер должен выглядеть так:

Создание каталога public и добавление ресурсов

Создайте каталог и перейдите в него с помощью следующих команд:

Теперь создадим пустые файлы, куда затем добавим HTML, CSS и JavaScript. Выполните в терминале следующие команды:

Настроить виртуальный сервер ноде js что это

Создание простого веб-сервера с помощью Node.js и Express

Node.js с Express — это популярный дуэт, используемый многими приложениями во всем мире. Данный урок познакомит вас с функциональностью этих инструментов на примере сборки простого веб-сервера.

Создаваемый сервер будет обслуживать HTML-страницу, доступную другим людям. К концу статьи вы усвоите базовые знания о:

  • Node.js;
  • Express;
  • npm;
  • создании маршрутов Express;
  • обслуживании HTML;
  • настройке статических ресурсов Express.

Совет: не копируйте код урока, а напишите его сами. Это позволит вам лучше его понять и усвоить.

Создание и инициализация проекта

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

После создания проекта нужно его инициализировать:

Эта команда создает файл package.json и инициализирует его с предустановленными значениями. Если вы захотите сами заполнить его поля, удалите флаг -y и следуйте инструкциям.

Добавление Express

После инициализации проекта Node.js мы переходим к следующему шагу — добавлению Express. Установка пакетов в Node.js выполняется командой npm install packageName .

Для добавления последней стабильной версии Express выполните:

После установки Express файл package.json будет выглядеть так:

Express перечислен среди dependencies , значит, он установился успешно. Переходим к третьему шагу — созданию сервера.

Создание сервера Express

Прежде чем продолжать, нужно создать для сервера JS-файл. Выполните в терминале следующую команду:

Теперь откройте этот файл и пропишите в нем:

Что эти строки делают?

  1. Первая импортирует Express в проект, чтобы его можно было использовать. При каждом добавлении в проект пакета необходимо импортировать его туда, где он будет использоваться.
  2. Вторая строка вызывает функцию express , которая создает новое приложение, после чего присваивает результат константе app .

Создание маршрутов и прослушивание порта

Говоря простым языком, маршрут представляет конечную точку, к которой могут обращаться пользователи. Он ассоциируется с HTTP-глаголом (например, GET, POST и пр.) и получает путь URL. Кроме того, он получает функцию, которая вызывается при обращении к этой конечной точке.

Пропишите в файле следующий код:

Разберем его согласно приведенной ранее структуре:

  • Он связан с HTTP-глаголом — в данном случае GET.
  • Он получает URL — здесь это домашняя страница ( / ).
  • Он получает функцию, которая будет вызываться при обращении к конечной точке.

Следовательно, когда пользователь выполняет запрос GET к домашней странице, т.е. localhost:3333 , вызывается стрелочная функция и отображается фраза “Hello WWW!”

Последним шагом подготовки сервера к работе будет настройка слушателя. Понадобится указать для приложения конкретный порт. Напишите нижеприведенный код в конец JS-файла.

Чтобы иметь возможность запускать сервер, вам нужно будет вызывать метод listen . При этом вы также можете изменить номер порта (3333) на любой другой.

Доступ к приложению в браузере

Для запуска приложения выполните в терминале node index.js . Имейте в виду, что index.js — это произвольное имя, которое я выбрал для данного урока, так что можете назвать его app.js или как-угодно иначе.

Теперь, когда сервер запущен, можно обратиться к нему в браузере. Перейдите по адресу http://localhost:3333/ , перед вами должно отобразиться следующее сообщение:

Вы отлично справились с настройкой веб-сервера Node.js + Express. В следующем разделе мы настроим статическое содержимое, а именно JavaScript, CSS, HTML, изображения и т.д.

Статические файлы

Наше приложение пока что выглядит не очень. Почему бы не добавить ему структуру и стилизацию? Но куда все это нужно добавлять?

В этом разделе вы узнаете, как настраивать и передавать статические ресурсы, такие как HTML, JavaScript, CSS и изображения.

Импорт модуля path

Первым делом нужно импортировать в приложение модуль path . Устанавливать ничего не нужно, потому что path предустановлен в Node изначально.

Пропишите в начале файла эту строку:

Зачем вообще этот модуль? Он позволяет генерировать абсолютные пути, которые необходимы для передачи статических файлов. Добавьте следующую строку в приложение перед определением маршрутов:

path.join получает два аргумента:

  • Текущую рабочую директорию (cwd).
  • Вторую директорию, которую нужно объединить с cwd.

В качестве упражнения попробуйте вывести в консоль path.join(__dirname, 'public') и посмотрите, что получится.

На данный момент сервер должен выглядеть так:

Создание каталога public и добавление ресурсов

Создайте каталог и перейдите в него с помощью следующих команд:

Теперь создадим пустые файлы, куда затем добавим HTML, CSS и JavaScript. Выполните в терминале следующие команды:

Развертывание веб-приложения Node.js на виртуальной машине в Azure Stack Hub

Вы можете создать виртуальную машину для размещения веб-приложения Node.js в Azure Stack Hub. В этой статье описывается настройка сервера, Настройка сервера для размещения веб-приложения Node.js, а затем развертывание приложения в центре Azure Stack.

Если вы ищете общие сведения о глобальной Azure, см. статью Azure for JavaScript Node.js Developers. Эта статья предназначена для использования центра Azure Stack, локальной версии Azure.

Создание виртуальной машины

Настройте виртуальную машину в Azure Stack Hub, следуя инструкциям из статьи о развертывании виртуальной машины Linux для размещения веб-приложения в Azure Stack Hub.

В области сети виртуальных машин разрешите доступ к следующим портам:

Установка Node

Подключитесь к виртуальной машине c помощью клиента SSH. Инструкции см. в разделе Подключение по протоколу SSH с помощью PuTTy.

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

При этом также устанавливается NPM, диспетчер пакетов для пакетов Node.js или модулей.

Проверьте установку. Не прерывая подключение к виртуальной машине в сеансе SSH, введите следующую команду:

Подготовка нового приложения с помощью генератора Express

Express — это популярная платформа для создания и запуска приложений Node. js. Создать новое приложение Express можно с помощью средства создания Экспресс-выпуска. Генератор Express поставляется в качестве модуля NPM и может выполняться напрямую (без установки) с помощью программы командной строки NPM.

Параметры —view pug —git сообщают генератору, что он должен использовать обработчик шаблонов pug (ранее известный под именем jade ) и создать файл с именем .gitignore .

Чтобы установить все зависимости приложения, перейдите в новую папку и запустите NPM install.

Запустите приложение. Запустите приложение из терминала с помощью команды npm start , чтобы начать работу сервера.

Перейдите на новый сервер в веб-браузере. Вы увидите запущенное веб-приложение. URL-адрес виртуальной машины Linux можно найти на портале Azure Stack центра пользователей с меткой DNS-имя.

Свой Node.js хостинг на VPS

По ходу изучения Node.js я создал много маленьких проектов. В дальнейшем мне понадобилось развернуть некоторые из них на сервере, чтобы иметь возможность развивать их в дальнейшем. Существующие хостинги Appfog и Heroku имеют ряд серьезных ограничений на бесплатных аккаунтах. На Appfog’е можно запускать одновременно не больше 2-х приложений, и бесплатная регистрация у них уже отключена. На Heroku можно создать только 5 приложений (без базы данных) без подтверждения аккаунта привязкой банковской карты. Платные аккаунты стоят очень дорого для меня (я ведь не зарабатываю на этих маленьких проектах): $20 долларов на Appfog, а heroku еще дороже. Коллеги порекомендовали попробовать хостинг на Digital Ocean — виртуальный сервер за $5 доларов в месяц, на котором можно легко настроить собственный хостинг node.js-проектов.

О том, как организовать такой хостинг, и будет идти речь в этой статье. Если по ходу руководства у вас возникнут проблемы, поищите их решение в конце статьи.

Создаем VPS
1. Регистрация на DigitalOcean

Первым делом регистрируемся на сайте DigitalOcean. Здесь мы купим VPS — виртуальный сервер. После удачной регистрации и входа в свою админку жмем на большую зеленую кнопку «Create» и нам предложат активировать свой аккаунт, внеся $5 долларов. Ниже на странице есть место для указания счастливого купона на $10, вводите OMGSSD10 или поищите свежий купон. Так как моя банковская карточка не подошла хостеру, я оплатил пейпалом и у меня на счету оказалось $15. Этого должно хватить на 3 месяца.

2. Создаем SSH-ключ

Доступ к удаленным серверам обычно делается по ssh. Это такая технология защищенных соединений. Зайти в нашу будущую VPS можно по паролю или по SSH-ключу. Я настоятельно рекомендую второй вариант, не придется все время вводить пароль. Также, SSH-ключ все равно нужно будет указать при создании нашего нового «дроплета» (словом «droplet» DigitalOcean называет виртуальный сервер).

Выполните следующие две команды в терминале, чтобы сгенерировать ssh-ключ:

И тут нас просят ввести имя файла ключа. Рекомендую использовать что-нибудь вроде id_rsa_digitalocean_dropletname , где имя дроплета — это либо имя домена, на который мы привяжем наш сервер, либо просто какое-нибудь осмысленное название. Парафразу можно оставить пустой, и так сойдет.

После этого будет создано два файла: ssh-ключ и public-ключ. Скопируем публичный ключ в буфер обмена модным способом:

Теперь зайдем в админку в digitaloceans в раздел SSH-keys и создадим там новый ключ, вставив его из буфера обмена.

3. Создаем дроплет
  • В качестве hostname укажите доменное имя или что-нибудь осмысленное, это название роли не играет
  • Размер выбирайте самый маленький, его потом можно будет увеличить из терминала
  • Регион любой, я выбрал Амстердам
  • Образ выберите на вкладке Applications, c названием «Dokku v0.2.3 on Ubuntu. » или похожим
  • Укажите SSH-ключ, который мы создали на предыдущем шаге

Выбранный образ помимо операционной системы Ubuntu 14.04 содержит самое главное: Dokku. Это готовая система для хостинга node.js-проектов, очень похожая на Heroku. Использование образа с предустановленным Dokku избавит нас от необходимости устанавливать и настраивать систему для хостинга Node.js.

4. Настройка Дроплета и DNS

Теперь нужно настроить новосозданный сервер. Зайдите в браузере по IP-адресу дроплета и вы увидете экран настройки. Если такой страницы нет, смотрите что делать в конце статьи.
Droplet setup page
Здесь вы должны убедится, что поле «Public Key» заполнено. Если нет — укажите свой public key из недавно сгенерированного ключа. Однако практика показала, что лучше вообще удалить такой дроплет и создать новый, правильно указав SSH-ключ.

Если у вас нет доменного имени, то оставьте все, как есть, жмите «Finish setup» и переходите к следующему пункту. Ваше приложение будет доступно примерно так: «19.19.197.19:46667», по IP адресу и номеру порта. Если вас это не устраивает — срочно купите доменное имя. В любом случае, настроить доменное имя можно будет позже, о чем я расскажу в конце.

Если вы укажете доменное имя, у вас будет возможность настроить доступ к приложениям через поддомены. Например, если ваше доменное имя mydomain.com , тогда ваше приложение будет доступно по адресу app.mydomain.com . Также есть возможность привязать приложение на главный домен, но об это я в данной статье не расскажу.

Укажите в поле Hostname ваше доменное имя и поставьте галочку «Use virtualhost naming for apps». Теперь идите в панель управления вашим доменным именем и впишите две новые настройки примерно так:

Точный синтаксис уточните у себя в админке доменного имени или у домен-провайдера.

Теперь возвращайтесь на страницу настройки дроплета и жмите «Finish setup».

5. Настраиваем использование SSH

Давайте попробуем соединиться с нашим новым сервером. Чтобы получить доступ дроплету через SSH-ключ, нужно еще одно маленькое действие. Откройте терминал и передите в папку с ssh-ключами:

Если у вас еще нет файла «config» в этой папке (проверка — $ ls ), то его необходимо создать:

Теперь открываем config( $ open config ) и записываем в него следующие данные:

Где в первой строчке IP адрес или доменное имя, на второй строчке — имя созданного ssh-ключа для этого дроплета.

Где после «@» надо указать или доменное имя, или IP.

Если вы пропустили создание SSH-ключа, войти можно по паролю, который пришел к вам на почту. Для этого выполните ту же команду:

и на вопрос о продолжении соединения напишите «yes». После этого введите пароль.

Если вы увидели приветственный экран, значит все хорошо. Закроем соединение командой exit и перейдем к следующему пункту.

Деплоим приложение

Сервер готов, теперь пришла очередь развернуть тестовое приложение и проверить его работу.

1. Подготавливаем проект

Возьмите простой проект, типа Hello, world, без mongodb и прочего. Проверьте, что в проекте есть самое главное: «package.json», «Procfile» и какой-нибудь «app.js». «Package.json» должен выглядеть примерно так:

Содержание файла package.json важно, так как по нему dokku будет устанавливать модули для приложения. А Procfile должен выглядеть так:

Инициализируем в папке проекта репозиторий (если его не было), добавляем все файлы и коммитим:

Теперь наш проект готов к разворачиванию на сервере.

2. Заливаем и запускаем проект

Деплоить приложение будем с помощью команды git push . И для этого добавим ссылку на удаленный репозиторий нашего дроплета:

Если у нас было доменное имя для дроплета, то пишем его после «dokku@», иначе — указываем IP. После двоеточия мы указываем имя приложения. Этот индификатор будет использоваться внутри dokku.

Теперь вызываем команду push :

И начинается загрузка приложения, установка модулей. В конце на экране покажется url, по которому можно запустить проект. Это будет ссылка вида 192.88.67.168:46567 или app1.mydomain.com, в зависимости от настроек dokku.

По идее проект должен быть запущен после этого. Но если нет, то заходим в по ssh в наш дроплет и выполняем две команды

Запускаем в браузере ссылку, полученную ранее, и радуемся!

Проблемы и их устранение

Я сам разбирался с настройкой такого хостинга более суток, и набил несколько шишек. И чтобы вы могли съэкономить свое время, привожу здесь несколько возможных проблем и пути их решения.

1. Мою банковскую карточку не приняли для оплаты

Они такие, да. Даже Visa Classic им не нравится. Оплатите через PayPal, это не трудно.

2. Создал дроплет, но по IP адресу нет страницы настройки dokku
  • указать образ с Dokku
  • нажмите кнопку «Rebuild from Image».
3. Не могу получить доступ к дроплету ни по паролю, ни по SSH
  1. Наверное, вы как-то пропустили шаг настройки dokku, или dokky создался не правильно.
  2. Проверьте, если доступна страница настройки dokku по IP адресу дроплета, то вернитесь к шагу 4 создания VPS.
  3. Если страницы настроек нет, тогда попробуйте сбросить пароль и повторить попытку доступа через терминал. Если даже в этом случае доступ по паролю будет неудачным, тогда переустановите дроплет, как описано в предыдущем пункте.
4. Я не знаю пароля от дроплета

Если у вас нет пароля, зайдите на страницу управления дроплетом, вкладка «Access» и сделайте reset пароля. Тогда на почту придет новый пароль.

5. Проект не запускается по указанной ссылке

Если настройки dokku верны, такая ситуация возможна, если приложение запустилось с ошибкой и было закрыто. Зайтиде по ssh в дроплет и проверьте логи:

Возможно, ошибка будет понятна. Или же вы забыли запустить ваш проект после push’а:

6. Я пропустил создание SSH, и теперь хочу сделать авторизацию по SSH-ключу

Я пытался создать новый дроплет без указания ssh-ключа на странице создания дроплета, но на странице настроек dokku все равно просят ввести паблик-ключ. После этого я принял некоторые действия, но все равно зайти по ssh-ключу у меня не вышло, только пароль. Так что я не знаю, как лучше действовать в данной ситуации. Возможно, ошибка происходила при команде копирования ssh ключа в дроплет. Гуглите. В крайнем случае создайте новый дроплет с самого начала, по уму, как в этом руководстве. Пример поиска.

7. Как добавить доменное имя к уже существующему дроплету

В дроплете зайти в папку dokku и открыть для редактирования HOSTNAME:

Нажать клавишу «i» и записать в файле «HOSTNAME» доменное имя вместо IP адреса; затем нажать Esc , кнопки :wq и Enter . Ура! Мы только что успешно использовали легендарный Vim!
Чтобы проекты запускались на поддоменах, нужно создать файл VHOST :

И записать в файле доменное имя таким же способом, как это было в предыдущем пункте. В противном случае проекты будут доступны через порт. Теперь надо перезалить проект, а перед этим удалить его из dokku:

Как установить Node.js и NGINX на Debian

Описание установки node.js и веб-сервера NGINX на виртуальный сервер с операционной системой Debian.
В Serverspace вы можете создать сервер с уже установленным приложением Nginx.

Что такое Node.js и NGINX?

Node.js — это платформа JavaScript, которая может обслуживать динамический и адаптивный контент. JavaScript обычно является встроенным языком браузера, таким как HTML или CSS. А Node.js является серверной платформой JavaScript, сравнимой с PHP. Node.js часто работает с другими популярными серверными приложениями, такими как NGINX или Apache. В этом руководстве будет рассмотрена настройка NGINX для обработки внешних запросов, а Node.js — для обработки внутренних запросов.

Первоначальные требования

Многие из команд в этом руководстве требуют привилегий суперпользователя. Если при использовании команды sudo появляется ошибка bash: sudo: command not found, вам необходимо активировать режим суперпользователя, установить команду sudo и добавить своего пользователя в группу sudo:

Обновите локальные репозитории и пакеты:

Установка и настройка NGINX

Установите NGINX, а также модуль screen, который будет использоваться позже:

Настроить виртуальный сервер ноде js что это

Установка Node.js при помощи NVM (Node Version Manager)

Node.js – это современная программная платформа для разработки, которая позволяет писать веб-приложения, использующие Javascript и на сервере и на клиенте (что устраняет необходимость знать несколько языков программирования). Кроме того, Node.js очень хорошо справляется с обработкой веб-приложений в режиме реального времени, благодаря чему эта платформа является отличным вариантом для запуска многих современных веб-приложений.

Однако, есть и некоторые недостатки. Дело в том, что все эти полезные новые функции еще совсем новые, они даже немного сыроваты, вследствие чего запустить node.js на сервере не всегда так просто, как, к примеру, WordPress.

Joyent, команда разработчиков Node.js, развивает эту платформу невероятными темпами, каждый месяц появляется сразу несколько версий программы. В основном проводится очень хорошая работа по совместимости: проекты, написанные в одной версии Node, будут должным образом работать в следующем релизе программы. Тем не менее, есть и исключения: определенные приложения будут работать только в одной версии Node.js. В таком случае нужно будет обновить или понизить версию Node.js для того, чтобы использовать такое приложение.

Ранее такой процесс был достаточно сложным, но сообщество Node.js сумело разработать отличное решение, которое позволяет легко управлять всеми установками Node.js и менять версии платформы при необходимости. Это NVM, или Node Version Manager – менеджер версий Node.

Данное руководство посвящено установке и использованию Node.js.

Установка Node.js на виртуальный выделенный сервер

Процесс установки достаточно сложен. Войдите на сервер и запустите команду:

curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash

На экране появятся некоторые данные, после чего nvm будет установлен. По завершении установки появится строка:

=> Close and reopen your terminal to start using NVM

То есть, нужно закрыть и снова открыть терминал, чтобы получить доступ к NVM. На самом деле, не обязательно выходить из терминала, достаточно убедиться, что изменения, внесенные менеджером nvm в путь, уже отражаются, потому просто наберите:

Кроме того, выполните команду, предложенную в выводе скрипта. Теперь введите:

На данном этапе может возникнуть ошибка: -bash: nvm: command not found; возможно, это происходит потому, что git не установлен.

В таком случае нужно установить git и перезапустить скрипт:

apt-get install git

Появится список всех доступных версий Node.js. Чтобы узнать последнюю стабильную версию, посетите сайт Node.js – стабильная версия указана в центре страницы.

Чтобы, например, установить версию 0.10.13 (последнюю стабильную версию на момент написания статьи), введите:

nvm install 0.10.13

Появится версия текущая версия node (в данном случае v0.10.13).

Если, например, приложение требует более старой версии и работает только с node v0.8.16, нужно ввести:

nvm install v0.8.16

Данная команда установит версию v0.8.16 и переключится на нее.

Чтобы переключиться назад на версию v0.10.13, используйте команду use:

Как видите, NVM – легкий и удобный способ переключиться с одной версии на другую. Однако, есть один нюанс. Если ввести:

появится интересный результат. NVM устанавливает Node.js в домашний каталог пользователя. Это очень удобно для разработки. Но при запуске приложение Node можно обнаружить, что последняя версия Node.js, только что установленная через NVM, повредила производство приложения Node и оно перестало работать. Лучше установить одну копию Node.js глобально; это позволит другим пользователям использовать NVM для переключения между версиями разработки.

Дл этого запустите следующую команду (введите пароль пользователя):

n=$(which node);n=$ ; chmod -R 755 $n/bin/*; sudo cp -r $n/ /usr/local

Вышеприведенная команда кажется сложной, но она только копирует через nvm активную версию Node.js в каталог /usr/local/ (каталог, предназначенный в linux для глобальных установок пользователя) и устанавливает привилегии на нее таким образом, что все пользователи могут получить к ней доступ.

При необходимости сделать глобальной другую версию Node.js просто снова выполните команду nvm use vXX.XX.XX; указанная версия станет общесистемной. После этого снова запустите предыдущую команду, чтобы скопировать версию в системный каталог.

Чтобы убедиться, что все работает должным образом, перейдите на учетную запись root и выполните команду which, чтобы убедиться, что node установлен в /usr/local/bin:

Создание простого веб-сервера с помощью Node.js и Express

Создание простого веб-сервера с помощью Node.js и Express

Node.js с Express — это популярный дуэт, используемый многими приложениями во всем мире. Данный урок познакомит вас с функциональностью этих инструментов на примере сборки простого веб-сервера.

Создаваемый сервер будет обслуживать HTML-страницу, доступную другим людям. К концу статьи вы усвоите базовые знания о:

  • Node.js;
  • Express;
  • npm;
  • создании маршрутов Express;
  • обслуживании HTML;
  • настройке статических ресурсов Express.

Совет: не копируйте код урока, а напишите его сами. Это позволит вам лучше его понять и усвоить.

Создание и инициализация проекта

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

После создания проекта нужно его инициализировать:

Эта команда создает файл package.json и инициализирует его с предустановленными значениями. Если вы захотите сами заполнить его поля, удалите флаг -y и следуйте инструкциям.

Добавление Express

После инициализации проекта Node.js мы переходим к следующему шагу — добавлению Express. Установка пакетов в Node.js выполняется командой npm install packageName .

Для добавления последней стабильной версии Express выполните:

После установки Express файл package.json будет выглядеть так:

Express перечислен среди dependencies , значит, он установился успешно. Переходим к третьему шагу — созданию сервера.

Создание сервера Express

Прежде чем продолжать, нужно создать для сервера JS-файл. Выполните в терминале следующую команду:

Теперь откройте этот файл и пропишите в нем:

Что эти строки делают?

  1. Первая импортирует Express в проект, чтобы его можно было использовать. При каждом добавлении в проект пакета необходимо импортировать его туда, где он будет использоваться.
  2. Вторая строка вызывает функцию express , которая создает новое приложение, после чего присваивает результат константе app .
Создание маршрутов и прослушивание порта

Говоря простым языком, маршрут представляет конечную точку, к которой могут обращаться пользователи. Он ассоциируется с HTTP-глаголом (например, GET, POST и пр.) и получает путь URL. Кроме того, он получает функцию, которая вызывается при обращении к этой конечной точке.

Пропишите в файле следующий код:

Разберем его согласно приведенной ранее структуре:

  • Он связан с HTTP-глаголом — в данном случае GET.
  • Он получает URL — здесь это домашняя страница ( / ).
  • Он получает функцию, которая будет вызываться при обращении к конечной точке.

Следовательно, когда пользователь выполняет запрос GET к домашней странице, т.е. localhost:3333 , вызывается стрелочная функция и отображается фраза “Hello WWW!”

Последним шагом подготовки сервера к работе будет настройка слушателя. Понадобится указать для приложения конкретный порт. Напишите нижеприведенный код в конец JS-файла.

Чтобы иметь возможность запускать сервер, вам нужно будет вызывать метод listen . При этом вы также можете изменить номер порта (3333) на любой другой.

Доступ к приложению в браузере

Для запуска приложения выполните в терминале node index.js . Имейте в виду, что index.js — это произвольное имя, которое я выбрал для данного урока, так что можете назвать его app.js или как-угодно иначе.

Теперь, когда сервер запущен, можно обратиться к нему в браузере. Перейдите по адресу http://localhost:3333/ , перед вами должно отобразиться следующее сообщение:

Скриншот приложения

Вы отлично справились с настройкой веб-сервера Node.js + Express. В следующем разделе мы настроим статическое содержимое, а именно JavaScript, CSS, HTML, изображения и т.д.

Статические файлы

Наше приложение пока что выглядит не очень. Почему бы не добавить ему структуру и стилизацию? Но куда все это нужно добавлять?

В этом разделе вы узнаете, как настраивать и передавать статические ресурсы, такие как HTML, JavaScript, CSS и изображения.

Импорт модуля path

Первым делом нужно импортировать в приложение модуль path . Устанавливать ничего не нужно, потому что path предустановлен в Node изначально.

Пропишите в начале файла эту строку:

Зачем вообще этот модуль? Он позволяет генерировать абсолютные пути, которые необходимы для передачи статических файлов. Добавьте следующую строку в приложение перед определением маршрутов:

path.join получает два аргумента:

  • Текущую рабочую директорию (cwd).
  • Вторую директорию, которую нужно объединить с cwd.

В качестве упражнения попробуйте вывести в консоль path.join(__dirname, ‘public’) и посмотрите, что получится.

На данный момент сервер должен выглядеть так:

Создание каталога public и добавление ресурсов

Создайте каталог и перейдите в него с помощью следующих команд:

Теперь создадим пустые файлы, куда затем добавим HTML, CSS и JavaScript. Выполните в терминале следующие команды:

Мы оставим app.js максимально простым, добавив только сообщение, подтверждающее, что он работает:

То же и с styles.css . Для проверки его работоспособности мы установим цвет фона на синий:

В завершении нужно написать HTML, чтобы отображать все это на домашней странице. Откройте index.js и добавьте следующий HTML-код:

Теперь остается всего один шаг.

Передача HTML-файла

Мы почти закончили. Осталось только обработать HTML-код. Для этого нужно перейти в файл index.js и прописать в нем следующее:

Если вы уже ранее работали с Node.js и Express, то можете спросить: “Что здесь делает метод sendFile и почему мы не используем render ?” Метод render мы использовать не можем, так как не задействуем никакой движок (например, Pug, EJS и т.д.). Следовательно, когда кто-либо обращается к домашней странице, мы отправляем назад HTML-файл.

Итоговый код сервера должен выглядеть так:

Если теперь вы перейдете по http://localhost:3333 , то увидите домашнюю страницу с синим фоном. Естественно, сначала нужно будет закрыть надоедливое всплывающее окошко.

Скриншот приложения

Node.js

Node.js — программная платформа, основанная на движке V8 (транслирующем JavaScript в машинный код), превращающая JavaScript из узкоспециализированного языка в язык общего назначения. Node.js добавляет возможность JavaScript взаимодействовать с устройствами ввода-вывода через свой API (написанный на C++), подключать другие внешние библиотеки, написанные на разных языках, обеспечивая вызовы к ним из JavaScript-кода. Node.js применяется преимущественно на сервере, выполняя роль веб-сервера, но есть возможность разрабатывать на Node.js и десктопные оконные приложения (при помощи NW.js, AppJS или Electron для Linux, Windows и Mac OS) и даже программировать микроконтроллеры (например, tessel и espruino). В основе Node.js лежит событийно-ориентированное и асинхронное (или реактивное) программирование с неблокирующим вводом/выводом. (c) ru.wikipedia.org

Рассмотрим установку Node.js приложения на примере блога ghost.

Подготовка Веб-сервера

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

  • Панель управления -> SSH -> Устаналиваем пароль и флаг Вкл. (либо ограничиваем по IP)

Создаем виртуальный сервер:

  • Панель управления -> Веб-серверы -> Создать новый:
    • Приложения на сервере -> Node.js
    • Корневая папка -> ghost
    • Имя Сервера -> mydomain.ru
    • Индексный файл -> index.js
    • Включить акселератор отдачи статического контента -> Вкл.
    • Порт -> 4000

    Установка приложения

    Пока применяются настройки для нового сервера (это занимает не более получаса, состояние можно посмотреть Панель управления -> Главная), создадим приложение на сервере.

    Разворачиваем 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

    Команда подключения к серверу по SSH

    При успешном логине Вы увидите уже терминал (консоль) сервера:

    Терминал Ubuntu Server

    Терминал Ubuntu Server

    Как видим, мы подключены к удаленному серверу.

    Шаг 2. Добавление репозитория Apache2 на сервер и установка веб-сервера

    В данной инструкции мы будем устанавливать веб-сервер Apache2 из официального репозитория, так как в репозитории Ubuntu не всегда последняя версия веб-сервера Apache2.

    Для начала установим необходимые пакеты командой:

    Команда установки необходимого пакета

    Команда установки необходимого пакета

    Если данный пакет уже установлен, то вы увидите следующее:

    Необходимый пакет уже установлен

    Необходимый пакет уже установлен

    После установки необходимых пакетов добавляем официальный репозиторий Apache2 следующей командой:

    При добавлении репозитория, в терминале появится вопрос, на который необходимо нажать клавишу Enter:

    Подтверждение добавления репозитория

    Подтверждение добавления репозитория

    После добавления репозитория, производим установку самого веб-сервера Apache2:

    В терминале появится вопрос о подтверждении установки веб-сервера Apache2. Если согласны с установкой — смело нажимайте клавишу Enter.

    Теперь можно перейти по IP-адресу, либо по FQDN-адресу вашего сервера и убедиться, что веб-сервер Apache2 успешно установлен.

    Примечание. Порты 80 и 443 на вашей виртуальной машине должны быть открыты. Если есть управляемый файерволл в панели управления вашего сервера на хостинге — обязательно проверьте!

    Успешная установка Apache2

    Успешная установка Apache2

    Шаг 3. Установка менеджера версий Node.js (nvm) и самого Node.js

    Для установки и более удобного дальнейшего контроля версий NodeJS мы установки менеджер версии NodeJS. Пакет называется nvm.

    Для этого перейдем в официальный репозиторий на GitHub.

    И перейдем в раздел Installing and Updating и выберем один их способов установки скрипта. Я выберу второй через утилиту wget:

    Раздел установки и обновления скрипта NVM в официальном репозитории на GitHub

    Раздел установки и обновления скрипта NVM в официальном репозитории на GitHub

    Копируем команду и вставляем ее в терминал сервера:

    Команда установки NVM в терминале

    Команда установки NVM в терминале

    И жмем клавишу Enter

    После установки перезагружаем сервер при помощи кнопки перезагрузки в панели управления сервером, либо через команду в терминале init 6

    Примечание. Вместо перезапуска сервера можно переподключиться к нему по SSH так, как указано в шаге 1.

    Автоматическое отключение от сервера после применения команды перезагрузки

    Автоматическое отключение от сервера после применения команды перезагрузки

    После перезагрузки снова подключаемся к серверу согласно шагу 1.

    Запускаем команду nvm для того, чтобы посмотреть и ознакомится со списком команд скрипта. Находим команду установки NodeJS в версии LTS:

    Команда установки NodeJS LTS-версии

    Команда установки NodeJS LTS-версии

    Пакет NVM поможет вам «в 2 клика» поддерживать всегда актуальную версию Node.js

    Вводим эту команду в терминал и жмем клавишу Enter:

    Успешная установка NodeJS через менеджер NVM

    Успешная установка NodeJS через менеджер NVM

    Проверяем установленную версию Node.js слудующей командой:

    И получаем сообщение об установленной версии Node.js:

    Установленная версия NodeJS

    Установленная версия NodeJS

    Шаг 4. Установка менеджера процессов pm2

    Для того, чтобы управлять процессами и приложениями, запущенными в среде Node.js, а также автоматического их запуска после перезагрузки сервера, нам понадобится менеджер процессов Node.js, который мы установим глобально в систему через пакетный менеджер npm. Пакет называется pm2:

    При успешной установке мы увидим следующее:

    Успешная установка пакета pm2

    Успешная установка пакета pm2

    При помощи команды pm2 -h можно посмотреть список доступных команд

    Запуск Node.js-приложения (в нашем случае — Nuxt.js-приложения)

    Я создам новое приложение на Nuxt.js для демонстрации работы. Можно запустить таким же образом любое Node.js-приложение, как новое, только что созданное, так и уже готовое приложение.

    Nuxt.js проект по-умолчанию запускается в двух режимах:

    В режиме разработки — npm run dev

    В режиме продакшена — npm run start

    Есть еще режим static, который запускается через команду npm run generate . Но я его рассматривать не буду, так как он не используется для постоянного запуска приложения через Node.js

    Я же не буду сразу запускать это приложение одной из этих команд, а сразу воспользуюсь менеджером pm2

    Для этого перейдем в папку с проектом и запустим команду инициализации менеджера pm2:

    pm2 сообщает об успешной генерации файла экосистемы

    pm2 сообщает об успешной генерации файла экосистемы

    Открываем файл ecosystem.config.js прямо в терминале через редактор nano командой и удаляем все содержимое:

    Пустой файл ecosystem.config.js с удаленными стандартными значениями

    Пустой файл ecosystem.config.js с удаленными стандартными значениями

    Вставляем туда следующее содержимое и сохраняем комбинацией клавиш Ctrl+O, затем жмем Enter:

    Для запуска dev-версии используем команду следующую команду:

    Для запуска prod-версии:

    Я, для примера, запущу Dev-версию:

    Запущена dev-версия NuxtJS-приложения через pm2

    Запущена dev-версия NuxtJS-приложения через pm2

    Для последующей остановки/запуска приложения не нужно будет заходить в папку с проектом и запускать командой выше. Достаточно будет ввести название приложения из монитора pm2:

    для запуска, либо

    для остановки приложения.

    Для просмотра всех запущенных NodeJS-приложений посредством pm2 небходимо ввести в терминал следующую команду:

    Статус-панель pm2

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

    Моинтор pm2

    Подключаем автоматический запуск приложений через pm2 после перезагрузки сервера:

    и сохраняем изменения:

    Запуск автозагрузки и сохранение параметров

    Запуск автозагрузки и сохранение параметров

    [Дополнительно] Графический интерфейс pm2 вне терминала

    Для запуска веб-интерфейса управления процессами pm2 необходимо зарегистрироваться на сайте pm2.io и создать Bucket.

    Будем считать, что есть существующий аккаунт и Bucket (инструкцию можно почитать на оф. сайте pm2).

    Вводим команду для подключения к веб-интерфейсу:

    На первом этапе pm2 спросит, есть ли у Вас аккаунт pm2.io (в нашем случае есть и мы вводим букву y и жмем клавишу Enter

    Есть ли аккаунт pm2.io?

    Есть ли аккаунт pm2.io?

    Вводим ваш email и пароль от аккаунта.

    Если все введено верно, то pm2 попросит Вас выбрать, к какому Bucket подключиться — выбирайте ранее созданный. У меня это TestBucket

    Выбор Bucket для подключения приложения к веб-интерфейсу pm2

    Выбор Bucket для подключения приложения к веб-интерфейсу pm2

    При успешном подключении к Bucket в веб-интерфейсе pm2 появится Ваше приложение(процесс). Там вы сможете посмотреть статистику, сбросить монитор и перезагрузить приложение:

    Веб-интерфейс pm2

    Далее нам необходимо повторно добавить в автозагрузку pm2 и сохранить изменения:

    Перезапуск автозагрузки pm2 и сохранение параметров

    Перезапуск автозагрузки pm2 и сохранение параметров

    Шаг 6. Проксирование Node.js-приложения через Apache2 Proxy

    У нас уже запущено приложение на Nuxt.js на порту 3000 (по-умолчанию)

    Теперь нам необходимо проксировать его на определенный адрес и стандартный порт 80 (для HTTP).

    Для этого установим и включим модуль Apache2 Proxy:

    И перезагрузим веб-сервер командой:

    Включение модуля Apache2 Proxy HTTP

    Включение модуля Apache2 Proxy HTTP

    Переходим в папку с виртуальными хостами Apache2 командой:

    и дублируем дефолтный файл конфигурации виртуального хоста Apache2:

    Открываем файл ваш_домен.conf с помощью редактора nano. Изменяем на Ваши следующие значения:

    ServerName: необходимо раскомментировать и значение example.com поменять на ваше доменное имя

    ServerAdmin: webmaster@localhost меняем на Ваш email

    DocumentRoot: можно закомментировать значком #

    Затем, чтобы проксировать наше приложение на этот адрес, нам необходимо добавить следующие строки:

    Где :3000 — Ваш порт приложения

    Сохраняем изменения комбинацией клавиш Ctrl+O и жмем Enter. Выходим из редактора комбинацией Ctrl+Z

    Проксирование 3000 порта

    Проксирование 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. Но в данной статье я показал базовый пример запуска.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *