Запустите node.js на сервере cpanel hosting

Это простой код node.js.

var http = require('http');
http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-Type' : 'text/plain'});
    res.end('Hello World!');
}).listen(8080);

Я загрузил его на сервер хостинга cpanel и установил node.js и запустил его. Если сервер является обычным сервером, я могу проверить результат скрипта, обратившись к "http://{serverip}: 8080". Но на cpanel находится домен и поддомен, и каждый домен сопоставляется с каждым сайтом. Даже http://{serverip} недействителен url. Как я могу получить доступ к моему результату node.js? Пожалуйста, научи меня. Благодарю. Бингбинг.

Ответ 1

Обычно cPanel запускает Apache или другой веб-сервер, общий для всех учетных записей cPanel/unix. Веб-сервер прослушивает порт 80. В зависимости от имени домена в запрошенном URL, веб-сервер использует "Виртуальный хостинг", чтобы выяснить, какая учетная запись cPanel/unix должна обрабатывать запрос, то есть, в каком домашнем каталоге найти файлы для обслуживания и скрипты для запуска. Если URL-адрес содержит только IP-адрес, cPanel имеет значение по умолчанию для одной из учетных записей cPanel.

Обычно, без доступа root, работа, выполняемая учетной записью cPanel, не может прослушивать порт 80. Действительно, доступные порты могут быть довольно ограничительными. Если 8080 не работает, вы можете попробовать 60000. Чтобы получить доступ к запущенному серверу node.js, вам нужно будет иметь номер порта, который он прослушивает. Поскольку это единственная работа, которая прослушивает этот порт на этом сервере, вы должны указать свой браузер на имя домена любой из учетных записей cPanel или даже на IP-адрес сервера, добавив номер порта в URL. Но типично использовать доменное имя для учетной записи cPanel, выполняющее задание node.js, например http://cPanelDomainName.com:60000/.

Конечно, порт 80 по умолчанию используется для веб-сервисов, а относительно мало пользователей знакомы с дополнительными номерами портов в URL-адресах. Чтобы упростить работу пользователей, вы можете использовать Apache для запроса "обратного прокси" на порт 80 на порт, который прослушивает процесс node.js. Это можно сделать с помощью директивы Apache RewriteRule в файле конфигурации или.htaccess. Это обратное проксирование запросов, возможно, имеет и другие преимущества, например, Apache может быть более безопасным, надежным и управляемым интерфейсом для работы в общедоступном Интернете.

К сожалению, эта настройка для node.js не поддерживается всеми веб-хостинговыми компаниями. Одна хостинговая компания, которая ее поддерживает, даже на своих недорогих общедоступных хостингах, - это A2Hosting.com. Они также имеют четко написанное описание процесса установки в своей базе знаний.

Наконец, стоит отметить, что разработчики cPanel работают над встроенной поддержкой node.js. "Если все звезды выровнятся, мы можем увидеть эту землю сразу же после версии 68", то есть, возможно, в начале 2018 года.

Рекомендации

Виртуальный хостинг Apache - http://httpd.apache.org/docs/2.4/vhosts/

Директива Apache RewriteRule - http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

Статья базы знаний A2Hosting.com о настройке Node.js - https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed-hosting-accounts

cPanel Запрос на выполнение запроса для узла.js Поддержка - https://features.cpanel.net/topic/nodejs-hosting

Связанные вопросы StackOverflow

Как разместить приложение Node.Js в режиме общего хостинга

Почему node.js не может работать на общем хостинге?

Ответ 2

Установить/настроить NodeJS с CPanel

1. Войдите в свою учетную запись, используя SSH (она не включена для вашей учетной записи, обратитесь в службу поддержки).

2. Загрузите NodeJS

wget https://nodejs.org/dist/latest/node-v10.0.0-linux-arm64.tar.xz

3. Извлеките файлы NodeJS

tar xvf node-v10.0.0-linux-arm64.tar.xz

4. Теперь переименуйте папку в имя nodejs, для этого введите следующую команду

mv node-v10.0.0-linux nodejs

5. Теперь установите двоичные файлы node и npm, введите следующие команды:

mkdir ~/bin
cp nodejs/bin/node ~/bin
cd ~/bin
ln -s../nodejs/lib/node_modules/npm/bin/npm-cli.js npm

6. Node.js и npm установлены на вашем аккаунте. Чтобы проверить, введите следующие команды

узел --version
нпм --version

The ~/bin directory is in your path by default, which means you can run node and npm from any directory in your account.

7. Запустите приложение Node.js

узел nohup my_app.js &

8. Остановите приложение

узел pkill

9. Интеграция приложения Node.js с веб-сервером (необязательно)

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

В текстовом редакторе добавьте следующие строки в файл .htaccess в каталоге /home/username/public_html, где username представляет имя пользователя вашей учетной записи:

RewriteEngine On
RewriteRule ^$ http://127.0.0.1:XXXXX/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:XXXXX/$1 [P,L]

В обеих строках RewriteRule замените XXXXX на порт, который прослушивает приложение Node.js. Чтобы запустить приложение Node.js на управляемом сервере, необходимо выбрать неиспользуемый порт, а номер порта должен быть от 49152 до 65535 (включительно). Сохраните изменения в файле .htaccess, а затем закройте текстовый редактор. Посетители вашего сайта перенаправляются в приложение Node.js, прослушивающее указанный порт.

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

Ответ 3

Вы можете использовать любой домен, указанный на этом сервере cPanel, и вместо доступа к http://server-ip: 8080 попробуйте обратиться к http://domain.tld: 8080. По умолчанию cPanel не привязывается к порту 8080. Обязательно проверьте, нет ли на сервере какого-либо брандмауэра. Если это так, разрешите входящие соединения на tcp-порту 8080. В зависимости от конфигурации вашего WHM-сервера он также должен работать с http://server-ip: 8080

Ответ 4

Версия 80 cPanel имеет поддержку nodejs 10.x: https://documentation.cpanel.net/display/80Docs/80+Release+Notes#id-80ReleaseNotes-InstallanduseNode.jsapplications

Установите и используйте приложения Node.js

Теперь вы можете устанавливать и использовать приложения Node.js на вашем сервере. Чтобы использовать Node.js, установите модуль ea-nodejs10 в разделе "Дополнительные пакеты" интерфейса WHM EasyApache 4 (WHM >> Home >> Software >> EasyApache 4).

Вы можете зарегистрировать приложения Node.js в интерфейсе cPanel Application Manager (cPanel >> Главная >> Программное обеспечение >> Диспетчер приложений). Для получения дополнительной информации прочитайте наше Руководство по документации по установке Node.js.

Для включения Диспетчера приложений: https://documentation.cpanel.net/display/80Docs/Application+Manager

Ваш хостинг-провайдер должен включить функцию диспетчера приложений в интерфейсе диспетчера функций WHM (WHM >> Главная >> Пакеты >> Диспетчер функций).

Ваш хостинг-провайдер должен установить следующие модули Apache:

Модуль ea-ruby24-mod_passengermodule. Примечание. Этот модуль отключает модуль mod_userdir в Apache.

Модуль ea-apache24-mod_env. Примечание. Этот модуль позволяет добавлять переменные среды при регистрации приложения. Для получения дополнительной информации о переменных среды читайте раздел "Переменные среды" ниже.

Модуль ea-nodejs10 если вы хотите зарегистрировать приложение Node.js ™.

Вы можете увидеть, как выглядит менеджер приложений в этом видео на Youtube: https://www.youtube.com/watch?v=ATxMYzLbRco

Ответ 5

Спасибо Саввас. Я сделал все, что описано в документации по cPanel, но при попытке развернуть приложение я получаю эту ошибку: сервер приложений Phusion Passenger попытался запустить веб-приложение с помощью внутреннего вспомогательного инструмента Passenger под названием SpawnEnvSetupper. Но этот вспомогательный инструмент обнаружил внутреннюю ошибку. Подробности: Не удалось инициализировать библиотеку LVE:: ошибка init_lve [2] Мне все еще нужно использовать CloudLinux, хотя cPanel теперь имеет поддержку?