Як розмістити додаток Node.Js у спільному хостингу [закрито]


110

Як розмістити додаток Node.Js у спільному хостингу

Я хочу розмістити додаток node.js у спільному хостингу. У когось є посилання або документація, на яку слід посилатися


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

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

1
@ Дан-Корнілеску можна буде знову відкрити. Це цінно. Було б краще в суперпопулярному. Також знайшов відповідь, який хотів би додати.
eddyparkinson

На більшості спільних хостів встановлення Node та NPM не вдасться (CentOS не підтримується); ось рішення (використовуючи Node 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 .

EDIT: Я запустив проект Node.php на GitHub .


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

3
@jsky Це повинно бути можливим, оскільки mongodb не потребує root. Просто дотримуйтесь посібника з встановлення вручну .
niutech

3
Не пробував, але виглядає просто красиво !!! ... Гарна робота
Габріель Родрігес

2
Радьте ви повинні оновити URL завантаження відповідно
Жоау Піментел Ferreira

5
node.php - це дуже добре!
Hemant Sharma

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>)

У вас немає потреби в PHP або будь-якому складному вирішенні, якщо у вас SSH.


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

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

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

4
Працювали чудово !! Спасибі
Девін Норгарб

2
@SyamsoulAzrien якщо у вас є nvm:command not found, можете запустити це: командаsource ~/.nvm/nvm.sh
Hans Tiono

12

Я встановив Node.js на bluehost.com (спільний сервер), використовуючи:

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

Після цього буде завантажено файл tar, витягнути його в каталог, а потім перейменувати цей каталог на ім'я 'node', щоб полегшити його використання.

тоді

./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.comwhat000, але на ньому написана сторінка недоступна. Чи потрібно замість цього перейти до IP-адреси?
zachdyer

цей порт, ймовірно, заблокований, ви повинні використовувати стандартний порт 80
RicardoE

~ / node / bin / npm -v видає мені помилку, кажучи: нехай notifier = вимагає ('update-notifier') ({pkg}) SyntaxError: Несподіваний ідентифікатор на export.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 (модуль .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 хостинг все ще є одним з небагатьох постачальників послуг, що офіційно підтримують Node.js на своїх спільних серверах. Нещодавній посібник із початку роботи можна знайти тут
Dalie

1
реагує і передній кінець добре працює на плані хостингу спільного вузла js? будь-яка ідея
Самкіт Шах

Блог написав на тому ж. medium.com/@pampas93/…
Abhijit S

2

Вам слід шукати хостингову компанію, яка надає таку функцію, але стандартний простий статичний + PHP + MySQL хостинг не дозволить вам використовувати node.js.

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


ви маєте на увазі, що неможливо розмістити додаток Node.js за допомогою спільного хостингу
соме

3
@somesh Це можливо - дивіться мою відповідь.
нітех

Це крутий трюк, хоча майте на увазі, що багато спільних хостинг-провайдерів знищать цей процес і вважатимуть це зловживанням спільним хостинговим обліковим записом ...
Tiago

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