Как разместить приложение Node.Js на виртуальном хостинге [закрыто]


110

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

Я хочу разместить приложение node.js на виртуальном хостинге. Есть ли у кого-нибудь ссылки или документация для ссылки?


Как я понял, запустив npm build, вы создадите файлы js, которые вы можете уменьшить, а затем включить в свои теги script. Пример сборки с vuejs или даже angular2 cli
Джефф

1
это сработало - жаль, что я не могу опубликовать ответ ... a2hosting.com/kb/installable-applications/manual-installations/…
eddyparkinson

1
@ Дэн-Корнилеску можно открыть заново. Это ценно. Лучше бы в суперпользователе. Также нашел ответ, который хотел бы добавить.
eddyparkinson 07

На большинстве общих хостов установка Node и NPM завершится ошибкой (CentOS не поддерживается); здесь есть решение ( с использованием узла v6.2.2) - medium.com/@yatko/...
Yatko

Ответы:


158

Вы можете запустить сервер node.js на типичном виртуальном хостинге с Linux, Apache и PHP (LAMP). Я успешно установил его, даже при нормальной работе NPM, Express и Grunt. Следуйте шагам:

1) Создайте новый файл PHP на сервере со следующим кодом и запустите его:

<?php
//Download and extract the latest node
exec('curl http://nodejs.org/dist/latest/node-v0.10.33-linux-x86.tar.gz | tar xz');
//Rename the folder for simplicity
exec('mv node-v0.10.33-linux-x86 node');

2) Таким же образом установите приложение узла, например jt-js-sample, используя npm:

<?php
exec('node/bin/npm install jt-js-sample');

3) Запустите приложение узла из PHP:

<?php
//Choose JS file to run
$file = 'node_modules/jt-js-sample/index.js';
//Spawn node server in the background and return its pid
$pid = exec('PORT=49999 node/bin/node ' . $file . ' >/dev/null 2>&1 & echo $!');
//Wait for node to start up
usleep(500000);
//Connect to node server using cURL
$curl = curl_init('http://127.0.0.1:49999/');
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//Get the full response
$resp = curl_exec($curl);
if($resp === false) {
    //If couldn't connect, try increasing usleep
    echo 'Error: ' . curl_error($curl);
} else {
    //Split response headers and body
    list($head, $body) = explode("\r\n\r\n", $resp, 2);
    $headarr = explode("\n", $head);
    //Print headers
    foreach($headarr as $headval) {
        header($headval);
    }
    //Print body
    echo $body;
}
//Close connection
curl_close($curl);
//Close node server
exec('kill ' . $pid);

Вуаля! Взгляните на демонстрацию приложения узла на общем хостинге PHP .

РЕДАКТИРОВАТЬ: Я начал проект Node.php на GitHub .


2
и установка mongoDB тоже?
jsky 06

3
@jsky Это должно быть возможно, поскольку mongodb не требует root. Просто следуйте инструкциям по установке вручную .
niutech 06

3
Не пробовал, но выглядит просто красиво !!! ... Хорошая работа
Габриэль Родригес

2
Советуйте вы должны обновить URL загрузки соответственно
Жоау Пиментел Ferreira

5
node.php очень хорош!
Хемант Шарма

51

Подключитесь к SSH и следуйте этим инструкциям, чтобы установить Node на общий хостинг.

Короче говоря, вы сначала устанавливаете NVM, а затем устанавливаете выбранную вами версию Node с NVM.

wget -qO- https://cdn.rawgit.com/creationix/nvm/master/install.sh | bash

Перезагрузите оболочку (закройте и снова откройте сеансы). Затем вы

nvm install stable

например, чтобы установить последнюю стабильную версию. Вы можете установить любую версию по вашему выбору. Проверьте node --versionверсию узла, которую вы используете в настоящее время, и nvm listпосмотрите, что вы установили.

В бонусе вы можете легко переключить версию ( nvm use <version>)

Если у вас есть SSH, нет необходимости в PHP или каких-либо сложных обходных путях.


Привет спасибо за ответ Хотя у меня проблемы, он говорит, что узел не найден, как только я выполняю установку с помощью nvm. Любая помощь?
Амит Саксена

Может быть, вам стоит попробовать stackoverflow.com/a/33874050/328117, если у вас есть ошибка, связанная с тем , что узел не найден с помощью nvm
vinyll

Большинство провайдеров виртуального хостинга не предоставляют доступ по SSH. По крайней мере, не мой.
coder.in.me

4
Сработало отлично !! Спасибо
Девин Норгарб

2
@SyamsoulAzrien, если у вас есть, nvm:command not foundвы можете запустить это: командаsource ~/.nvm/nvm.sh
Ханс Тионо

12

Я установил Node.js на bluehost.com (общий сервер), используя:

wget <path to download file>
tar -xf <gzip file>
mv <gzip_file_dir> node

Это загрузит tar-файл, извлечет его в каталог, а затем переименует этот каталог в имя «узел», чтобы упростить использование.

затем

./node/bin/npm install jt-js-sample

Returns:
npm WARN engine jt-js-sample@0.2.4: wanted: {"node":"0.10.x"} (current: {"node":"0.12.4","npm":"2.10.1"})
jt-js-sample@0.2.4 node_modules/jt-js-sample
└── express@4.12.4 (merge-descriptors@1.0.0, utils-merge@1.0.0, cookie-signature@1.0.6, methods@1.1.1, cookie@0.1.2, fresh@0.2.4, escape-html@1.0.1, range-parser@1.0.2, finalhandler@0.3.6, content-type@1.0.1, vary@1.0.0, parseurl@1.3.0, serve-static@1.9.3, content-disposition@0.5.0, path-to-regexp@0.1.3, depd@1.0.1, qs@2.4.2, on-finished@2.2.1, debug@2.2.0, etag@1.6.0, proxy-addr@1.0.8, send@0.12.3, type-is@1.6.2, accepts@1.2.7)

Теперь я могу использовать команды:

# ~/node/bin/node -v
v0.12.4

# ~/node/bin/npm -v
2.10.1

В целях безопасности я переименовал свой каталог узлов во что-то другое.


1
Я пытался npm startв jt-js-sampleи я пошел mysite.com:5000 но сказал страница не доступна. Мне нужно вместо этого перейти на IP-адрес?
zachdyer 05

этот порт, вероятно, заблокирован, вам следует использовать стандартный порт 80
RicardoE

~ / node / bin / npm -v дает мне сообщение об ошибке: let notifier = require ('update-notifier') ({pkg}) SyntaxError: неожиданный идентификатор в exports.runInThisContext (vm.js: 69: 16) в модуле ._compile (module.js: 432: 25) в Object.Module._extensions..js (module.js: 467: 10) в Module.load (module.js: 349: 32) в Function.Module._load (module .js: 305: 12) в Function.Module.runMain (module.js: 490: 10) при запуске (node.js: 123: 16) в node.js: 1027: 3
codeinprogress

10

Хостинг A2 разрешает использование node.js в своих учетных записях общего хостинга. Могу поручиться, что у меня был положительный опыт общения с ними.

Вот инструкции в их базе знаний по установке node.js с использованием Apache / LiteSpeed ​​в качестве обратного прокси: https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed- хостинг-аккаунты . Настройка конфигурации занимает около 30 минут, и она будет работать с npm, Express, MySQL и т. Д.

См. A2hosting.com.


1
Спасибо! Именно то, что я искал.
Педро Феррейра

Спустя почти два года A2 Hosting по-прежнему остается одним из немногих хостинг-провайдеров, официально поддерживающих Node.js на своих общих серверах. Недавнее руководство по
началу работы

1
хорошо ли реагирует и передняя часть работает на плане хостинга js с общим узлом? любая идея
Самкит Шах

Написал блог о том же. medium.com/@pampas93/…
Абхиджит С.

3

Вам следует искать хостинговую компанию, которая предоставляет такую ​​возможность, но стандартный простой статический + PHP + MySQL-хостинг не позволит вам использовать node.js.

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


Вы имеете в виду, что невозможно разместить приложение Node.js с использованием виртуального хостинга
somesh

3
@somesh Возможно - см. мой ответ.
niutech

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

1
технически возможно, как сказал @niutech, но я определенно не считаю это безопасным для производства, другой коллега (не может упоминать более одного пользователя) прав, я считаю, что большинство хостинг-провайдеров убьют процесс узла, или у вас закончится время цикла процессора очень скоро
Марек
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.