Запуск сервера, написанного на node.js, на хостинге
Хотел бы узнать немного информации о том, как работает хостинг и домен, так как не очень разобрался. Ну как я себе представил это — вы покупаете место на удаленном комп’ютере, куда можете заносить свои файлы. Ну допустим я скопирую туда свой проект в виде сайта с сервером написанным на node.js, но до этого я этот сервер запускал только локально, как я смогу запустить его на удаленном компьютере глобально для всего интернета? Спасибо. код моего приложения:
'use strict'; const express = require('express'), app = express(), http = require('http').Server(app), io = require('socket.io')(http), fs = require('fs'); const activeUsers = require('./resources/js/activeUsers'), sChat = require('./resources/js/sChat'), home = require('./resources/js/home'); app.get('/resources/activeUsers.html', function(req, res)< activeUsers(req, res); >); app.get('/resources/chat.html', function(req, res)< sChat(req, res); >); app.get('/', function(req, res)< home(req, res); >); app.use(express.static('resources')); http.listen(process.env.PORT || 4000, function() < console.log('server is working! '+ this.address().port); >); //дальше идут запросы от клиента io.on('connection', function(socket)
но в NOW в консоли мне всреавно выводит 4000
Отслеживать
12.9k 10 10 золотых знаков 40 40 серебряных знаков 77 77 бронзовых знаков
задан 15 июл 2017 в 8:20
Horchynskyi Horchynskyi
1,597 1 1 золотой знак 14 14 серебряных знаков 25 25 бронзовых знаков
Точно так же, как и локально. Только вместо localhost будет адрес сервера (домен или ip)
15 июл 2017 в 8:26
Удалённый и локальный компьютер ничем в этом отношении принципиально не отличаются.
– user181100
15 июл 2017 в 8:26
Вот тут Можно бесплатно попробовать развернуть свой сервер в интернете, вам даже домен дадут (вернее поддомен вида username-projectname.herokuapps.com )
15 июл 2017 в 8:28
тогда мне надо вот в этой строчке: http.listen(4000, function() < console.log('server is working!'); >); вписать вместо 4000 имя домена которое дадут?
15 июл 2017 в 8:38
@Horchynskyi, нет, там вы должны указать process.env.PORT || 4000 потому что на heroku порт может меняться при каждом запуске. а в console.log добавьте this.address().port это покажет вам на каком порте запустился проект. Вот пример: jsfiddle.net/ukadstun/1
Активация функционала Node.js на хостинге
Данная статья описывает работу функционала Node.js на виртуальном хостинге. Статья разделена на 3 части – запуск, управление и базовые принципы работы. В случае возникновения проблем с работой проекта на Node.js убедитесь, что выполнены все базовые условия и принципы, описанные ниже в этой статье.
Пример запуска тестового проекта показан в инструкции ? [по ссылке]
1) Для активации функционала Node.js нужно перейти в панель управления хостингом, где на вкладке нужного сайта нажмите кнопку Редактировать напротив Node JS [beta]
2) Если ранее функционал не был активирован, система предложит Вам выбрать версию Node.js, на которой будет работать Ваш проект. На этом шаге советуем обратиться к документации приложения, чтобы выбрать верную версию. Выберите версию и нажмите кнопку Сохранить.

3) После активации вы увидите панель управления функционалом Node.js. Вы увидите уже готовые указания и подробные инструкции, как действовать дальше, согласно которым Вы сможете запустить свой собственный Node.js проект.
Управление функционалом
Перезагрузка и остановка проекта осуществляется с помощью кнопок Перезагрузить или Остановить.

Полностью остановить проект можно с помощью кнопки Отключить. Этим же функционалом можно изменить версию Node.js.

Обратите внимание на важные моменты!
После развертывания проекта в корневой папке сайта необходимо выполнить команду npm install , чтобы загрузить из репозиториев все программные зависимости/модули Вашего проекта. Без этого шага проект будет работать с ошибками или просто не загружаться.
Важно направить ваш проект не на порт, но на сокет. В файлах проекта использовать глобальную переменную default.env.port , которая всегда ссылается на верный сокет.
Перезагружать проект нужно в случае внесения программных изменений в проект, например после выполнения npm install
При работе функционала Node.js функционал Apache/php на сайте не доступен. Вы можете переключаться между Node.js и Apache/php нажатием кнопки Отключить.
После активации функционала на Ваш хостинг будут добавлены файлы необходимые для функционирования проекта — бэкенд Node.js выбранной версии и программные зависимости/модули. Находятся данные файлы в каталогах .nvm и .npm в корне хостинга.
Если на хостинге нет свободного места/инод ИЛИ в момент активации функционала на хостинге найден вредоносный код — функционал не будет активирован до момента решения проблемы.
Функционал Node.js находится в этапе беты. При возникновении ошибок в работе просим сообщать о них в техническую поддержку
Все категории вопросов
- Общие вопросы по услуге хостинга
- Робота с хостинг 2.0
- Работа с базами данных [MySQL]
- Работа с FTP
- Работа с SSH
- Работа с почтой
- Работа с Cron
- Работа с SSL
- Работа с резервным копированием
- Работа с htaccess
- Работа с CMS
- Дополнительные услуги
- Нагрузка
- Ошибки на сайте
- Конструктор сайтов
- Регистрация и продление доменов
- Управление DNS-записями домена
- Трансфер домена
- Смена контактных данных владельца домена
- Настройка CloudFlare
- Общие вопросы по серверам
- Администрирование виртуального сервера (VPS)
- Администрирование выделенного сервера (DS)
- Инструкции по Windows Server
- Инструкции по Linux
- Панель управления FASTPANEL
- Панель управления Hestia CP
- Панель управления Vesta CP
- Платный SSL-сертификат
- Файловое хранилище
- SMS-сервис
- CallBack-сервис
Node.js
Node.js — гибкая и активно развивающаяся платформа, предоставляющая среду выполнения JavaScript-кода. С Node.js вы можете использовать для серверной и клиентской части приложения один и тот же язык программирования, а также эффективно и быстро масштабировать проекты.
Примеры использования Node.js
- — Кроссплатформенные мобильные приложения
- — Интернет вещей (IoT)
- — Бэкенд веб-сайтов
- — Real Time Applications
Возможности Node.js
- — Небольшое потребление ресурсов
- — Встроенный менеджер пакетов
- — Эффективная обработка большого количества запросов
- Сайт проекта nodejs.org
- Категория Серверный Javascript
- Версии Последняя стабильная
- Системные требования Для серверов
с тарифом не ниже
Base-1.

Отзывы
Олег Отзыв на hosting101.ru Использую базовый тариф на vps: памяти хватает, проект работает стабильно, по стоимости более чем устраивает. Техническая поддержка у хостинга тоже хорошая — всегда оперативно отвечают.
Ignatenko Отзыв на hosting101.ru Отличная услуга VPS. До этого пользовался вдской тоже у рег.ру ну и не только. Но как перешёл на vps стал всем её советовать) возможность восстановить прежнюю версию сайта, высокая скорость закгрузки, никаких факапов. Ну короче, меня эти все эти факторы искренне порадовали и я теперь всем советую переходить на vps. а хостится у рег.ру мне тоже очень нравится.
Victor Отзыв на hosting101.ru Очень хороший ресурс. Периодически создаю VPS для небольших, временных, проектов. Личный сайт тоже держу здесь, работа стабильная проблем пока не было. Периодически радуют бонусами, несколько раз удавалось продлить хостинг бесплатно. Да, всего на месяц, но всё равно приятно). Есть довольно интересная реферальная программа, но к сожалению лично пока не проверял.
Dmitriy Volkov Отзыв на hosting101.ru Очень классный хостинг, и провайдер в целом. Пользуюсь услугами reg.ru уже год.
Из плюсов:
+Быстрый и безлимитный интернет
+Неплохая мощность за небольшие цены
+Мгновенное создание VPS сервера
+Почасовая оплата
+Возможность отменить услугу в любой момент
+Удобная панель управления сервером.
Минусов не нашел.
Сервер Yellow Arsenicum #1105111
Никита32 Отзыв на hosting101.ru Заказал себе тариф — Azure Fluorum #1082943
1) Скорость работы на высшем уровне
2) Быстрый ответ поддержки
3) Брал тариф 5 ггц им очень доволен.
4) Порадовала панель
5) Скорость интернета у них топ!
Минусы не обнаружил
The-TS Отзыв на hosting101.ru Мне нравится этот провайдер.
Классная поддержка, Wiki и цены.
Мне нужен был самый простой VPS и это он.
У меня стоит SSH-туннель и все работает стабильно.
Вопросов нет, как и минусов.
Сервер #950113
Table1818 Отзыв на hosting101.ru После того как перенес сайт с виртуального хостинга на облачный, он сразу же стал работать в 2 раза быстрее. Спасибо техподдержке, которая помогла определиться с наиболее оптимальным тарифом под мои требования.
Остались вопросы?
Node.js — что это такое и для чего нужен?
Node.js на VDS/VPS-хостинге позволяет вам разрабатывать веб-серверы, приложения и другие инструменты на JavaScript. На наших серверах установлены быстрые SSD-диски, а также предусмотрена возможность гибко выбирать конфигурацию исходя из системных требований, что позволит вам создавать и настраивать на Node.js высокопроизводительные проекты.
Как установить и настроить Node.js на Linux server?
Автоматическая установка Node.js доступна для нового сервера с Ubuntu 20.04 или Ubuntu 18.04 (auto-install). На другие ОС и на готовые серверы платформу нужно устанавливать самостоятельно.
Подробная настройка сервера для работы с Node.js описана в руководстве в нашей Базе знаний.
Как переустановить и обновить версию Node.js?
1. Очистите кеш npm (пакетного менеджера Node.js), введя в консоль команду:
npm cache clean —f
2. Установите менеджер версий Node.js:
npm install —g n
3. Установите последнюю стабильную версию Node.js:
n stable
Как подключить свой проект к Node.js на сервере?
Чтобы перенести на VPS свой репозиторий GitHub с проектом Node.js, рекомендуем установить приватный SSH-ключ на сервер и подключаться к GitHub без указания логина и пароля. Подробнее о генерации ключа — в документации GitHub.
Как работать с файлами в Node.js?
Для доступа к файловой системе в Node.js используются модули fs и path. С их помощью можно читать/записывать данные в файлы, подключаться к директориям и многое другое.
Хостинг - как работает Node.js
В хостинге некоторые решения могут показаться вам нестандартными.
Поэтому перед началом работы мы бы рекомендовали ознакомиться с вводной статьей.
1. Запуск Node.js
При создании сайта необходимо выбрать, что сайт работает на Node.js:

Загрузить файлы сайта можно подключившись по SFTP.
Файлы вашего приложения можно расположить в каталоге sitename/app , а статические файлы (.css, .jpg, .png и другие) - в каталоге sitename/www .
Откройте настройки сайта в панели управления.
Если ваше приложение запускается через node hello.js , то укажите путь до hello.js в параметре APP_PATH, аналогично тому, как это сделано на скриншоте ниже:

Если ваше приложение запускается через npm start , то в APP_PATH укажите только путь до каталога, где находится package.json .
Установка пакетов и отладка сайта
Управлять проектом можно подключившись по SSH.
После входа на сервер по SSH можно, например, установить необходимые для работы вашего сайта пакеты.
Для каждого сайта уже создано индивидуальное виртуальное окружение. Свое собственное виртуальное окружение создавать не требуется.
При установке пакетов через npm install сначала перейдите в каталог с сайтом и виртуальное окружение активируется автоматически:
c566@h2:~$ c566@h2:~$ cd mydomain.ru/ Now using node v9.9.0 (npm v5.6.0) (node.js v9.9.0)c566@h2:~/mydomain.ru$
Далее можно установить нужные расширения:
(node.js v9.9.0)c3087@h2:~/mydomain.ru$ npm install mysql
Для отладки можно запустить любой скрипт, выполнив его напрямую. Для начала перейдем в каталог сайта:
c3087@h2:~$ c3087@h2:~$ cd mydomain.ru/ direnv: loading .envrc Now using node v9.9.0 (npm v5.6.0) direnv: export +ENV (node.js v9.9.0)c3087@h2:~/mydomain.ru$
Далее запустим скрипт:
(node.js v9.9.0)c3087@h2:~/mydomain.ru$ node app/hello.js Connected!
Особенности запуска вашего приложения
Чтобы сайт был виден извне нужно прикрепиться (bind) на IP и порт, которые мы передаем в переменных окружения APP_IP и APP_PORT.
По умолчанию в app/hello.js уже загружен пример использования переменных окружения APP_IP и APP_PORT. При обращении к сайту в браузере выводится “Hello world!”.
var http = require('http'); http.createServer(function (req, res) < res.writeHead(200, ); res.end('Hello world!\n'); >).listen(process.env.APP_PORT, process.env.APP_IP); console.log('Server running at http://%s:%s/', process.env.APP_IP, process.env.APP_PORT);
2. Смена версий Node.js
При необходимости можно задать нужную версию Node.js в панели управления
- откройте раздел “хостинг” в панели управления
- кликните на нужный контейнер
- кликните по нужному сайту
- перейдите на вкладку Node.js
Для уже работающего сайта смена версии Node.js может привести к неработоспособности сайта. Причиной этого может быть то, что версии пакетов, установленных вами через npm , никак не изменяются.
Возможно некоторые пакеты потребуется установить повторно, а некоторые пакеты вообще могут быть недоступны для выбранной вами версии Node.js.
3. Работа с MySQL
MySQL доступен только через сокет /run/mysqld/mysqld.sock и недоступен по сети.
Установим драйвер для работы с MySQL
npm install mysql
var mysql = require('mysql'); var con = mysql.createConnection(< socketPath: "/var/run/mysqld/mysqld.sock", user: "c3087_mydomain_ru", password: "HeKriDapsonag31" >); con.connect(function(err) < if (err) throw err; console.log("Connected!"); >);
Сохраним этот код в файл app/hello.js . Далее перезапустим приложение.
Если после открытия этого сайта в браузере появляется сообщение Connected! , то подключение к MySQL прошло успешно.
4. Работа с Redis
На хостинге в redis данные хранятся только в оперативной памяти и на диск не сохраняются. Из оперативной памяти данные очищаются при перезапуске сервиса, либо пока вы специально не удалите данные.
Установим драйвер для работы с redis
npm install redis
var redis = require("redis"); var client = redis.createClient(); client.on("error", function (err) < console.log("Error " + err); >); client.set("string key", "string val", redis.print); client.hset("hash key", "hashtest 1", "some value", redis.print); client.hset(["hash key", "hashtest 2", "some other value"], redis.print); client.hkeys("hash key", function (err, replies) < console.log(replies.length + " replies:"); replies.forEach(function (reply, i) < console.log(" " + i + ": " + reply); >); client.quit(); >);
Сохраним этот код в файл app/hello.js . Далее перезапустим приложение.
Если после открытия этого скрипта в браузере появляется сообщение Connected! , то подключение к MySQL прошло успешно.
5. Работа с Memcached
Для начала работы с Memcached можно установить два пакета
npm install memcached express
Пример подключения к Memcached и сохранения данных на 10000 секунд:
var express = require("express"); var Memcached = require('memcached'); var app = express(); app.listen(process.env.APP_PORT, process.env.APP_IP); var memcached = new Memcached(); memcached.connect( '127.0.0.1:11211', function( err, conn ) < if( err ) < console.log( conn.server ); >>); var profile = memcached.set('profile', profile, 10000, function (err) < if(err) throw new err; >);
Сохраним этот код в файл app/hello.js . Далее перезапустим приложение.
Чтобы проверить сохраненные данные подключимся по SSH , а далее подключимся к серверу Memcached
$ telnet 127.0.4.27 11211 Trying 127.0.4.27. Connected to 127.0.4.27. Escape character is '^]'.
Запросим значение ключа profile :
get profile VALUE profile 2 44 END
6. Перезапуск сервиса после изменения кода сайта
После подключения по SSH можно перезапустить сервис NodeJS выполнив команду
touch sitename/reload
c3087@h2:~$ touch mydomain.ru/reload
7. Работа с ошибками приложения
Если при обращении к сайту вы видите ошибку 502 Bad Gateway или аналогичную, то в первую очередь стоит обратиться к логам ошибок.
Последние возникавшие ошибки можно найти в конце файла имясайта/log/node-runlog/current .
Наблюдение за лог-файлом в реальном времени:
tail -f ~/имясайта/log/node-runlog/current
