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


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

Работа с Node.js-приложениями на нашей площадке реализована через специальный модуль Phusion Passenger для Apache.

Чтобы ваш проект на Node.js открывался из браузера, в разделе «Сайты» → «Веб-серверы» Панели управления выберите подходящую версию из доступных:

  • Node.js 14
  • Node.js 12
  • Node.js 10
  • Node.js 8
  • Node.js 6

Потребуется также добавить вспомогательные директивы в файл .htaccess.

Чтобы перезапустить процессы модуля Passenger, создайте в директории tmp проекта пустой файл restart.txt.

[login@server public_html]$ touch tmp/restart.txt

Если же над приложением ведется активная работа, создайте файл always_restart.txt чтобы процессы веб-сервера перезапускались при каждом поступившем запросе.

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

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

Для работы с Node.js в целом нужен доступ к аккаунту по SSH.

Возьмите для примера работы с Node.js нашу инструкцию по установке фреймворка Express.js.

В консоли

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

Тот же принцип применяется и для менеджера пакетов npm:

npm14 — для Node.js 14
npm12 — для Node.js 12
npm10 — для Node.js 10
npm8 — для Node.js 8
npm6 — для Node.js 6

При вводе интерпретатора node или npm без указания версий, используются последние:

Полный путь до интерпретатора и пакетного менеджера:

Установка модулей

Большинство модулей Node.js могут быть установлены локально в директории определенного сайта, однако некоторые — только глобально (ключ -g).

Так как на виртуальном хостинге установка модулей в системе могла бы повлиять на все аккаунты сервера, для использования таких модулей необходимо выполнить ряд манипуляций перед установкой.

где вместо login введите логин вашего аккаунта.

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

]$ npm config set prefix '

/.bash_profile, добавив в него строку:

Примените изменения командой:

Теперь можно выполнять установку модулей, для которых параметр -g является обязательным. Установка будет производиться в директорию /home/login/.npm-global.

WebSocket

Модуль Pasenger не позволяет использовать WebSocket, и если в вашем проекте они используются, их потребуется эмулировать средствами long polling. Для этого в файл .htaccess сайта дополнительно добавьте директиву PassengerStickySessions:

Как запустить Node.js на обычном хостинге

Как запустить Node.js на обычном хостинге

Вам нравится Node.js ? Хотите использовать Gulp 4 / Grunt / Webpack на обычном хостинге? Но как сделать это? Ведь на стандартных хостингах нет возможности самостоятельной установки программ. Т.е. Вы не можете запустить установку ни одной программы, даже из официальных репозиториев Linux. Есть выход — nvm (Node Version Manager) . С помощью данной утилиты Вы сможете установить и запустить Node.js, npm и любой сборщик, типа Gulp или Grunt на любом стандартном хостинге (даже тех, которые утверждают, что для запуска Node.js требуется покупка тарифа с выделенным сервером). Для установки nvm не требуются права администратора, нужна лишь стандартная оболочка bash и программа wget , а всё это входит в любой дистрибутив Linux, на любом хостинге.

Как установить Node.js, npm на обычном хостинге без прав администратора

Первым делом подключаемся через ssh к серверу . Для этого достаточно команды:

Там где логин и хост ставьте логин, который Вы используете для FTP / SFTP , а хост Вы можете узнать у Вашего хостинг-провайдера. Всё это всегда даётся при регистрации хостинга, либо можно посмотреть в панели управления. Обращаю внимание, что хост для FTP и SFTP может отличаться .

Далее нужно понять, есть ли в домашней директории Вашего аккаунта права на создание файлов и папок . Это можно понять, попробовав создать любую папку в домашней директории аккаунта. Обращаю Ваше внимание, что домашняя директории аккаунта — это НЕ домашняя директория сайта. Домашняя директория аккаунта всегда располагается на один уровень выше и в ней нет никаких файлов и папок, относящихся к Вашему сайту. Так вот. Попробуйте создать там любой файл или папку. Для создания файла / папки Вы можете использовать в консоли команду:

Если не будет никаких сообщений об ошибках, то всё ОК. Удалите тестовый каталог и файл командой:

Но если у Вас будет ошибка, значит создание файлов и папок в домашней директории аккаунта запрещено. Тогда ищем ту папку, в которой у нас есть возможность создавать файлы и папки. Обычно это папка с названием типа private и тому подобным. В данной папке хостинг провайдер разрешает хранить Вам бекапы, логи и любую другую информацию. Сделаем эту директорию домашней, чтобы корректно выполнялись все команды nvm и Node.js. Первым делом давайте запишем себе текущий путь данной директории (это пригодится нам в дальнейшем). Для этого, находясь в директории, где у Вас есть права на создание файлов и папок, выполним команду:

и запишем себе куда-нибудь тот путь, который нам показала консоль.

Затем в домашней директории аккаунта ищем файл .bashrc . Этот файл отвечает за выполнении пользовательских команд во время работы командной оболочки. Чтобы увидеть список файлов, которые есть, выполните команду:

Если данного файла там нет, создаём его и сразу запускаем его редактирование связкой команд:

Запускается текстовый редактор nano и мы можем вносить туда данные. А именно, нам нужно переопределить системную переменную HOME . На работу Вашего сайта это никак не повлияет, это лишь задаст системную домашнюю директории Вашего аккаунта. Нам необходимо вписать следующее:

Сохраняем файл. Для этого сначала нажимаем Ctrl+X , затем Y , затем Enter .

Затем ищем файл .bash_profile (он обязательно будет в домашней директории) и открываем его на редактирование командой:

Вписываем туда строки:

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

После подключения выполняем:

Если мы всё сделали правильно — мы должны увидеть путь на нашу директорию, в которой мы имеем право создавать файлы и папки.

Теперь нам осталось скачать и запустить nvm (Node Version Manager) :

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

Затем открываем на редактирование файл .bashrc (как это сделать я писал ранее), и вписываем туда две строки:

Перезапускаем терминал, заново подключаемся по SSH.

Затем устанавливаем Node.js и пакетный менеджер npm:

После выполнения данной команды у нас установится последняя версия Node.js и npm.

После завершения установки проверим это. Выполним команду:

В консоли появится номер актуальной версии Node.js

Теперь мы можем использовать Gulp 4 / Grunt / Webpack и все другие возможности Node. В том числе, мы можем настроить автоматическую сборку пакетов, автоматическую минификацию и сборку стилей, сжатие изображений при их загрузке и многое другое.

Подписывайтесь на группу в ВКонтакте, вступайте в сообщество на Facebook, чтобы всегда быть в курсе актуальных выпусков
W e b d e v e l o p m e n t b l o g !

Хостинг — как работает Node.js

В хостинге некоторые решения могут показаться вам нестандартными.
Поэтому перед началом работы мы бы рекомендовали ознакомиться с вводной статьей.

1. Запуск Node.js

При создании сайта необходимо выбрать, что сайт работает на Node.js:

Загрузить файлы сайта можно подключившись по SFTP.

Файлы вашего приложения можно расположить в каталоге sitename/app , а статические файлы (.css, .jpg, .png и другие) — в каталоге sitename/static .

Откройте настройки сайта в панели управления.

Если ваше приложение запускается через node hello.js , то укажите путь до hello.js в параметре APP_PATH, аналогично тому, как это сделано на скриншоте ниже:

Если ваше приложение запускается через npm start , то в APP_PATH укажите только путь до каталога, где находится package.json .

Установка пакетов и отладка сайта

Управлять проектом можно подключившись по SSH.

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

Для каждого сайта уже создано индивидуальное виртуальное окружение. Свое собственное виртуальное окружение создавать не требуется.

При установке пакетов через npm install сначала перейдите в каталог с сайтом и виртуальное окружение активируется автоматически:

Далее можно установить нужные расширения:

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

Далее запустим скрипт:

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

Чтобы сайт был виден извне нужно прикрепиться (bind) на IP и порт, которые мы передаем в переменных окружения APP_IP и APP_PORT.

По умолчанию в app/hello.js уже загружен пример использования переменных окружения APP_IP и APP_PORT. При обращении к сайту в браузере выводится “Hello world!”.

2. Смена версий Node.js

При необходимости можно задать нужную версию Node.js в панели управления

  • откройте раздел “хостинг” в панели управления
  • кликните на нужный контейнер
  • кликните по нужному сайту
  • перейдите на вкладку Node.js

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

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

3. Работа с MySQL

MySQL доступен только через сокет /run/mysqld/mysqld.sock и недоступен по сети.

Установим драйвер для работы с MySQL

Сохраним этот код в файл app/hello.js . Далее перезапустим приложение.

Если после открытия этого сайта в браузере появляется сообщение Connected! , то подключение к MySQL прошло успешно.

4. Работа с Redis

На хостинге в redis данные хранятся только в оперативной памяти и на диск не сохраняются. Из оперативной памяти данные очищаются при перезапуске сервиса, либо пока вы специально не удалите данные.

Установим драйвер для работы с redis

Сохраним этот код в файл app/hello.js . Далее перезапустим приложение.

Если после открытия этого скрипта в браузере появляется сообщение Connected! , то подключение к MySQL прошло успешно.

5. Работа с Memcached

Для начала работы с Memcached можно установить два пакета

Пример подключения к Memcached и сохранения данных на 10000 секунд:

Сохраним этот код в файл app/hello.js . Далее перезапустим приложение.

Чтобы проверить сохраненные данные подключимся по SSH , а далее подключимся к серверу Memcached

Запросим значение ключа profile :

6. Перезапуск сервиса после изменения кода сайта

После подключения по SSH можно перезапустить сервис NodeJS выполнив команду

7. Работа с ошибками приложения

Если при обращении к сайту вы видите ошибку 502 Bad Gateway или аналогичную, то в первую очередь стоит обратиться к логам ошибок.

Последние возникавшие ошибки можно найти в конце файла имясайта/log/node-runlog/current .


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

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