Как запустить node js на хостинге
Перейти к содержимому

Как запустить node js на хостинге

  • автор:

Как запустить сервер node js на хостинге?

У меня есть проект, написанный на ангуляре и сервер, написанный на node.js. Я бы хотела опубликовать проект на хостинге, но не знаю, как сделать так, чтобы запускался сервер. Сейчас я его запускаю во втором окне терминала командой node server.ts. Что мне нужно сделать, чтобы сервер запускался на хостинге?

  • Вопрос задан более трёх лет назад
  • 2450 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 2

Арендовать сервер, установить ubuntu, node, nginx, поставить pm2, который будет запускать ваш скрипт, настроить nginx на проксирование запроса с вашего домена на поднятую ноду, залить файлы проекта, сделать npm i и запускать.

Погуглите туториалы. Тут возни на полчаса максимум. На digitalocean есть отличные гайды по сетапу всего этого. Там же и сервер можно арендовать.

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Альберт Комаров @KomaroffAlbert

Для запуска скриптов nodejs на сервере рекомендуется использовать forever
https://www.npmjs.com/package/forever

В этом случае процесс не завершиться при закрытии окна консоли, т.к. запускается в отдельном демоне.
Также forever перезапускает скрипт в случае его падения. По умолчанию делает 5 попыток запуска с интервалом в 1 сек. Но это можно настроить.

Ответ написан более трёх лет назад
Forever устарел. Рекомендуется, как раз, pm2.
Ваш ответ на вопрос

Войдите, чтобы написать ответ

javascript

  • JavaScript
  • +4 ещё

Почему возникает ошибка &quot;E11000 duplicate key error collection: prj.users index: email_1 dup key: < email: null >?

  • 1 подписчик
  • вчера
  • 35 просмотров

Хостинг приложений Node.js

Содержание: Node.js — это кроссплатформенная среда выполнения с открытым исходным кодом, которая позволяет запускать код JavaScript вне веб-браузера. Plesk предлагает набор инструментов, которые помогут вам с легкостью размещать приложения Node.js.

В этом разделе вы узнаете, как загружать, настраивать и запускать приложения Node.js в Plesk. Обратите внимание, что в этом разделе предполагается, что у вас уже есть готовое приложение или вы планируете его создать. Это не руководство по созданию приложений Node.js.

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

Прежде чем вы сможете размещать приложения Node.js, на сервере Plesk должно быть установлено бесплатное расширение Node.js `__:

  • Если вы являетесь администратором Plesk, установите расширение из Каталога расширений .
  • В противном случае обратитесь к своему хостинг-провайдеру и попросите его установить расширение для вас.

Once the extension is installed, you are ready to begin. You will see the Node.js icon on the «Install Application» drawer on the domain cards of all your domains.

node js domain card

Загрузка вашего приложения

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

Самый простой способ загрузить ваше приложение — использовать встроенный файловый менеджер или FTP-клиент:

  • Подробнее о загрузке файлов с помощью файлового менеджера .
  • Подробнее о загрузке файлов через FTP .

Если вы знакомы с Git, мы рекомендуем получить файлы приложения непосредственно из репозитория, используя расширение Plesk Git .

Когда вы получаете приложение от третьего лица (например, разработчика-фрилансера), оно обычно находится в виде сжатого файла или ссылки на репозиторий Git. В любом случае вы можете заметить, что некоторые файлы приложения находятся в разных подкаталогах. Для правильной работы приложения важно сохранить эту структуру при загрузке приложения.

На самом базовом уровне каталог, в котором размещены все файлы и подкаталоги приложения, называется «корнем приложения». Внутри него обычно есть подкаталог с именем «корневой каталог документа», в котором можно найти файлы статического содержимого приложения. Пути к этим каталогам вам нужно будет указать позже при настройке приложения. Если вы не уверены, какие файлы должны находиться в каком каталоге, проконсультируйтесь с человеком или организацией, предоставившей вам приложение.

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

Настройка вашего приложения

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

Настройка вашего приложения Node.js

  1. Войдите в Plesk.
  2. Перейдите в раздел Сайты и домены, найдите домен, на котором будет размещено ваше приложение, и нажмите Установить приложение >Node.js.
  3. В поле «Версия Node.js» выберите версию среды выполнения, которая будет использоваться для запуска вашего приложения. Приложение Node.js обычно создается с учетом конкретной версии среды выполнения, и выбор неподходящей версии может помешать правильной работе вашего приложения. Если вы не уверены, какую версию среды выполнения выбрать, проконсультируйтесь с лицом или организацией, предоставившей вам приложение.
  4. В поле «Менеджер пакетов» выберите нужный менеджер пакетов, который будет использоваться для установки пакетов, необходимых для запуска вашего приложения. Вы можете выбрать между «npm» и «Yarn». Plesk пытается определить оптимальный менеджер пакетов для вашего приложения, но вы можете переопределить его, выбрав менеджер пакетов вручную. Если вы не уверены, какой менеджер пакетов выбрать, используйте тот, который Plesk выбирает автоматически.
  5. В поле «Корневая папка» выберите каталог с файлами статического содержимого приложения.
  6. В поле «Режим приложения» вы можете установить значение переменной среды NODE_ENV. Выберите между «Разработка» и «Производство» или введите пользовательское значение. Обратите внимание, что этот параметр сам по себе ничего не делает, он просто изменяет способ работы вашего приложения, если оно запрограммировано на различное реагирование на разные режимы приложения. Если вы не уверены, какой режим приложения выбрать, мы рекомендуем вам выбрать «Разработка», пока вы не будете готовы к запуску приложения, после чего переключитесь на «Производство».
  7. В поле «Корневая папка приложения» выберите каталог, в который вы загрузили все файлы и подкаталоги приложения.
  8. В поле «Файл запуска приложения» укажите имя файла, который запускает приложение. Файл запуска должен находиться в каталоге «Корневая папка приложения». Если вы не уверены, что это за файл, и среди загруженных вами файлов нет файла с именем app.js, обратитесь к лицу или в организацию, предоставившую вам приложение.
  9. (Только Plesk для Linux) В поле «Персональные переменные среды» вы можете указать любое количество переменных среды. Чтобы указать переменную, вам нужно знать ее имя и желаемое значение. Вашему приложению может потребоваться одна или несколько настраиваемых переменных среды для правильной работы, или оно может изменить свое поведение в зависимости от установленных переменных среды. Если вы не уверены, нужны ли вашему приложению какие-либо переменные среды для правильной работы, проконсультируйтесь с человеком или организацией, предоставившей вам приложение.

Your application is now configured and ready to run. Once the application is configured, the Node.js button appears on the card of the domain hosting your application.

Запуск вашего приложения

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

Запуск вашего приложения Node.js

  1. Войдите в Plesk.
  2. Перейдите в раздел Сайты и домены, найдите домен, на котором размещено ваше приложение, и нажмите Node.js.
  3. Нажмите Включить Node.js.
  4. Нажмите Установка NPM или Установка Yarn (в зависимости от настроенного менеджера пакетов). Это установит дополнительные пакеты, необходимые для запуска вашего приложения на вашем сервере. Список этих пакетов можно найти в файле package.json . Вам нужно сделать это только один раз.
  5. (Необязательно) Вы также можете запускать любые скрипты, указанные в файле package.json . Чтобы запустить скрипт, нажмите Запустить скрипт, укажите имя скрипта, который необходимо запустить, и любые параметры, а затем нажмите ОК. Если вы не уверены, нужно ли вам запускать какие-либо скрипты на этом этапе, проконсультируйтесь с лицом или организацией, предоставившей вам приложение.

Теперь ваше приложение запущено. На карточке домена вы можете увидеть, что под кнопкой Node.js появилась версия среды выполнения Node.js.

node js domain card with version

Остановка вашего приложения

Чтобы остановить приложение, перейдите в раздел Сайты и домены, нажмите Node.js, а затем нажмите Отключить Node.js. Это не повлияет на ваши настройки, и вы сможете снова запустить приложение в любое время.

Примечание: В Plesk для Linux, если у вас есть доступ к серверу через оболочку без chroot, вы можете использовать как Node.js CLI, так и npm CLI для управления вашим приложением.

Просмотр журналов приложений Node.js

Вы можете просматривать журналы приложений Node.js в браузере журналов домена .

просмотр журналов приложения Node.js

  1. Перейдите в раздел Сайты и домены, найдите домен, на котором размещено ваше приложение, и нажмите Журналы.
  2. Записи из журналов Node.js будут отображаться здесь вместе с записями из других журналов, отслеживаемых Plesk. Чтобы просмотреть только записи журнала Node.js, разверните раскрывающееся меню «Все журналы» справа и снимите флажки рядом с файлами журналов кроме «Node.js».

Установка и настройка Node.js

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

Для начала вам необходимо установить Node.js на свой аккаунт. Скачать любую версию Node.js можно с официального репозитория https://nodejs.org/dist/. На момент написания данного руководства, последним релизом являлась версия v10.6.0, скачать её можно здесь.

Выбирать нужно версию для Linux, битность x64, архиватор GZIP. Скачиваем файл https://nodejs.org/dist/v10.6.0/node-v10.6.0-linux-x64.tar.gz

Для нужной версии вы сможете также установить и необходимые модули (см. ниже).

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

Рассмотрим структуру папок и файлов. Мы предлагаем реализовать ее примерно следующим образом:

  • site-name.com (корневая папка вашего сайта)
  • htdocs
  • www
  • nodejs_app
  • www
  • nodejs_tmp
  • www

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

Установка Node.js

Чтобы сразу начать пользоваться необходимой вам версией Node (при условии, что Вы уже получили доступ по SSH), можете ввести следующие команды в терминале для загрузки и распаковки архива с файлами:

Работа с .htaccess файлом

Чтобы Passenger мог взаимодействовать с Node.js, в файле .htaccess (мы рекомендуем располагать его здесь ./site-name.com/htdocs/www/.htaccess) необходимо прописать следующее:

PassengerAppRoot /home/hostXXXXXXX/site-name.com/nodejs_app/www PassengerAppType node PassengerStartupFile app.js PassengerNodejs /home/hostXXXXXXX/node/bin/node PassengerRestartDir /home/hostXXXXXXX/site-name.com/nodejs_tmp/www PassengerFriendlyErrorPages on
  • Вместо hostXXXXXXX вы прописываете номер своего аккаунта
  • site-name.com — это имя папки с вашим проектом
  • app.js — название файла, который запускает работу серверной части (вы можете назвать его как захотите, главное, пропишите соответствующее имя в .htaccess)
  • PassengerNodejs — путь до исполняемого файла Node.js
  • PassengerFriendlyErrorPages — опция для отображения ошибок, в случае, когда приложение работает не корректно, или не запускается (по умолчанию — PassengerFriendlyErrorPages off). Данная опция выводит сообщения об ошибке, некоторые предложения по решению проблемы, трассировку и дамп переменных среды выполнения. Рекомендуется включать эту опцию только на этапе разработки. После её окончания удалите или закомментируйте в .htaccess эту опцию.

Включение лога ошибок

При разработке любого сайта или приложения разработчики допускают ошибки. По умолчанию, они записываются в папку logs, которая находится в корне сайта. Также, убедитесь, что у вас включена данная опция в панели управления. Во вкладке «Домены»→«Прикрепление домена», рядом с надписью «Лог-файлы веб сервера» есть переключатель, который включает/выключает данную опцию. После включения, логи начнут писаться в течение 5 минут (при обычной загруженности сервера).

Перезапуск приложения

Файлы restart.txt и always_restart.txt необходимы для того, чтобы при внесении вами каких-либо изменений в рабочие файлы (к примеру, app.js) Passenger, применяя правила записанные в .htaccess, мог перехватывать их и применять в работе сайта. Отличие заключается в том, что restart.txt сработает только один раз, а always_restart.txt перезапускает процесы веб-сервера при каждом поступившем запросе. Рекомендуется использовать always_restart.txt только при разработке. После того, как разработка проекта будет завершена, не забудьте удалить этот файл, чтобы избежать задержек при отображении страницы посетителям.

Если Вы уверены в том, что ваш код работает без багов, но всё-равно видите ошибки на странице, можно принудительно завершить все процессы с помощью следующей команды через SSH-соединение:

killall -2 "Passenger NodeApp"

После чего перезагрузить страницу.

Код для app.js

И напоследок, осталось добавить скрипт для запуска Node в app.js. Ниже представлен код с официального сайта Node.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://$:$/`); >);

Итак, все настройки произведены. Откройте сайт в новой вкладке. Если выводится Hello world, то всё работает, как и ожидалось. В противном случае, ещё раз пройдите по вышеприведённому алгоритму действий. Возможно, вы что то упустили.

Пример подключения модуля

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

Итак, откройте .bash_profile и допишите следующую строку:

PATH=$HOME/.local/bin:$HOME/bin:$HOME/site-name.com/node/bin:$PATH

Для примера, рассмотрим подключение модуля mysql для работы с базой данных (предварительно, создайте таблицу под любым названием и поместите туда несколько записей). Чтобы установить даный модуль, зайдите через SSH-соединение в директорию «nodejs_app/www» и введите в терминале команду:

npm init --force

Таким обазом создастся файл package.json с данными о вашем приложении. После этого наберите команду:

npm install mysql --save-dev

Вы увидите, что автоматически создастся новая директория «node_modules» и подгрузятся необходимые нам для работы файлы.

Также, рекомендуем загрузить 2 часто используемых модуля — fs (для работы с файлами) и util (для красивого вывода объектов в консоль)

npm install fs util --save-dev

Далее, открываем файл нашего приложения app.js и добавляем следующий код:

const fs = require('fs'); const util = require('util'); var log_file = fs.createWriteStream(__dirname + '/debug.log', ); var log_stdout = process.stdout; console.log = function(d) < log_file.write(util.format(d) + '\n'); log_stdout.write(util.format(d) + '\n'); >; const mysql = require('mysql'); const connection = mysql.createConnection(< host : 'localhost', user : 'hostXXXXXXX', password : 'your_password', database : 'your_database_name' >); connection.connect(); connection.query('SELECT * FROM my_table', function (error, results, fields) < if (error) throw error; results.forEach(function(obj) < console.log( util.inspect(obj) ); >); >); connection.end();

В коде выше мы, с помощью модуля fs, создаём новый файл debug.log, в который будем помещать вывод функции console.log

Далее, переопределяем саму функцию console.log, задействуя поток на запись.

Теперь, при помощи модуля mysql, подключаемся к своей БД и выбираем все записи из нужной нам таблицы, прописывая их в созданный нами файл.

Проверим, всё ли сработало: перезагрузите страницу своего сайта и откройте файл debug.log — вы должны увидеть вывод всех записей из таблицы.

Запуск приложений через crontab

Для запуска приложений Node.js через crontab создайте shell скрипт и определите в нём переменную окружения PATH исходя из ваших требований, или можно указать полный путь к бинарному файлу nodejs и скрипту. Простейший Shell скрипт для запуска nodejs приложения:

#!/usr/bin/env sh env PATH=/home/hostXXXXXXX/node-vXX.ZZ.YY/bin:/home/hostXXXXXXX/node-vXX.ZZ.YY/bin:$PATH node example.js

Или команда для запуска целиком:

/home/hostXXXXXX/nodejs/bin/node /home/hostXXXXXX/nodeproject/example.js

Удачной работы! Если возникнут вопросы — напишите нам, пожалуйста, тикет из панели управления хостингом, раздел «Помощь и поддержка».

Использование Node.js и npm

Вы можете использовать Node.js на виртуальном хостинге в качестве консольной утилиты, но запуск в виде системной службы или веб-сервера будет невозможен из-за ограничений. Чтобы разместить Node.js-службу, подойдут наши виртуальные серверы .

  • Установка nvm
  • Установка Node.js и npm

Установка nvm

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

touch ~/.bash_profile
curl -Ls https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash

Утилита будет установлена в домашнюю директорию .nvm , куда также в дальнейшем будет установлен Node.js.

После выполнения команды в файл .bash_profile будут добавлены команды для активации nvm. Чтобы они вступили в силу, необходимо перезапустить SSH-сессию или выполнить команду:

source .bash_profile

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

Установка Node.js и npm

Рекомендуемая команда для установки:

nvm install --lts=gallium

С помощью неё устанавливается последняя стабильная версия на момент написания статьи — v16 Gallium . Вы также можете устанавливать любые другие версии, например:

nvm install 16.16.0

Справка по утилите nvm доступна в репозитории Github .

Серверы виртуального хостинга работают на операционной системе Ubuntu 18.04, которая не поддерживает Node.js v18. Пока серверы не обновлены до более новой версии Ubuntu, устанавливать Node.js выше v16 не рекомендуется. Уточнить наличие серверов с более новой версией Ubuntu можно у технической поддержки.

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

$ nvm ls
 v14.20.0 
v16.15.0
-> v16.16.0

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

nvm use v14.20.0

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

npm update npm -g

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

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