공유 호스팅에서 Node.js 애플리케이션을 호스팅하는 방법 [닫기]


110

공유 호스팅에서 Node.js 애플리케이션을 호스팅하는 방법

공유 호스팅에서 node.js 애플리케이션을 호스팅하고 싶습니다. 참조 할 참조 나 문서가있는 사람이 있습니까?


npm 빌드를 실행하여 내가 생각한 방식은 js 파일을 생성하여 축소 한 다음 스크립트 태그에 포함시킬 수 있습니다. vuejs 또는 angular2 cli로 빌드하는 경우의 예
Geoff

1
이 일 - 수치 나는 대답 ... 게시 할 수 없습니다 a2hosting.com/kb/installable-applications/manual-installations/...
eddyparkinson

1
@ Dan-Cornilescu는 다시 열 수 있습니다. 귀중합니다. 수퍼 유저에서 더 좋을 것입니다. 또한 추가하고 싶은 답변을 찾았습니다.
eddyparkinson

대부분의 공유 호스트에서 Node 및 NPM 설치가 실패합니다 (CentOS가 지원되지 않음). 여기에 해결책이 있습니다 (노드 v6.2.2 사용) -medium.com/@yatko/…
Yatko

답변:


158

Linux, Apache 및 PHP (LAMP)를 사용하는 일반적인 공유 호스팅에서 node.js 서버를 실행할 수 있습니다 . 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) 동일한 방법으로 npm을 사용하여 노드 앱 (예 : jt-js-sample)을 설치합니다.

<?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 공유 호스팅에서 노드 앱데모를 살펴보십시오 .

편집 : GitHub 에서 Node.php 프로젝트를 시작했습니다 .


2
mongoDB도 설치 하시겠습니까?
jsky

3
@jsky mongodb는 루트가 필요하지 않기 때문에 가능해야합니다. 수동 설치 가이드를 따르십시오 .
niutech

3
그것을 시도하지만 외모 만 아름다운 않았 느냐! ... 멋진 일을
가브리엘 로드리게스에게

2
당신이 업데이트된다 알린다 다운로드 URL을 따라
주앙 멘텔 페레이라를

5
node.php는 아주 좋습니다!
Hemant Sharma 2015

51

SSH로 연결하고 다음 지침에 따라 공유 호스팅에 노드를 설치합니다.

간단히 말해 NVM을 먼저 설치 한 다음 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을 사용하여 설치하면 노드를 찾을 수 없다는 메시지가 표시됩니다. 도움이 필요하세요?
Amit Saxena

nvm 에서 해당 노드를 찾을 수 없음 오류 가있는 경우 stackoverflow.com/a/33874050/328117 을 시도해야 할 수도 있습니다
vinyll

대부분의 공유 호스팅 제공 업체는 SSH 액세스를 제공하지 않습니다. 적어도 내 것은 아닙니다.
coder.in.me

4
완벽하게 작동했습니다 !! 감사합니다
데빈 Norgarb

2
@SyamsoulAzrien 당신이 가지고있는 경우 nvm:command not found명령이 실행source ~/.nvm/nvm.sh
한스 Tiono

12

다음을 사용하여 bluehost.com (공유 서버)에 Node.js를 설치했습니다.

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.com:5000으로 갔지만 페이지를 사용할 수 없다고 말했습니다. 대신 IP 주소로 이동해야합니까?
zachdyer 2015-06-05

해당 포트가 차단되었을 수 있습니다. 표준 80 포트를 사용해야합니다
RicardoE

~ / node / bin / npm -v는 다음과 같은 오류를 표시합니다. let notifier = require ( 'update-notifier') ({pkg}) SyntaxError : Unexpected identifier at exports.runInThisContext (vm.js : 69 : 16) at Module ._compile (module.js : 432 : 25) at Object.Module._extensions.js (module.js : 467 : 10) at Module.load (module.js : 349 : 32) at Function.Module._load (module .js : 305 : 12) at Function.Module.runMain (module.js : 490 : 10) at startup (node.js : 123 : 16) at node.js : 1027 : 3
codeinprogress

10

A2 호스팅은 공유 호스팅 계정에서 node.js를 허용합니다. 나는 그들과 긍정적 인 경험을했다는 것을 보증 할 수 있습니다.

다음은 Apache / LiteSpeed를 역방향 프록시로 사용하여 node.js를 설치하기위한 KnowledgeBase의 지침입니다. https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed- 호스팅 계정 . 구성을 설정하는 데 약 30 분이 걸리며 npm, Express, MySQL 등에서 작동합니다.

a2hosting.com을 참조하십시오.


1
감사합니다! 내가 찾던 바로 그것.
Pedro Ferreira

거의 2 년이 지난 지금도 A2 호스팅은 공유 서버에서 Node.js를 공식적으로 지원하는 몇 안되는 호스팅 제공 업체 중 하나입니다 . 최근 시작 안내서는 여기
Dalie

1
반응 및 프런트 엔드가 공유 노드 js 호스팅 계획에서 잘 실행됩니까? 어떤 생각
Samkit 샤

같은 블로그를 썼습니다. medium.com/@pampas93/…
Abhijit S

2

이러한 기능을 제공하는 호스팅 회사를 찾아야하지만 표준 단순 static + PHP + MySQL 호스팅으로는 node.js를 사용할 수 없습니다.

node.js 용으로 설계된 호스팅을 찾거나 Virtual Private Server를 구입하여 직접 설치해야합니다.


공유 호스팅을 사용하여 Node.js 애플리케이션을 호스팅 할 수 없다는 의미
입니까

3
@somesh 가능합니다-내 대답을 참조하십시오.
niutech 2014

많은 공유 호스팅 제공 업체가이 프로세스를 종료하고 공유 호스팅 계정의 오용을 고려할 것이라는 점을 명심하십시오.
Tiago

@niutech가 말했듯이 기술적으로는 가능하지만 생산 안전을 고려하지 않을 것입니다. 다른 동료 (한 명 이상의 사용자는 말할 수 없음)가 옳습니다. 대부분의 호스팅 제공 업체가 노드 프로세스를 종료하거나 프로세서주기 시간이 부족할 것이라고 생각합니다. 곧
Marek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.