วิธีโฮสต์แอปพลิเคชัน Node.js ในโฮสติ้งที่ใช้ร่วมกัน [ปิด]


110

วิธีโฮสต์แอปพลิเคชัน Node.js ในโฮสติ้งที่ใช้ร่วมกัน

ฉันต้องการโฮสต์แอปพลิเคชัน node.js ในโฮสติ้งที่ใช้ร่วมกัน ใครมีข้อมูลอ้างอิงหรือเอกสารที่จะอ้างถึงหรือไม่?


วิธีที่ฉันคิดโดยการรัน npm build จะสร้างไฟล์ js ซึ่งคุณสามารถย่อขนาดแล้วรวมไว้ในแท็กสคริปต์ของคุณ ตัวอย่างเมื่อสร้างด้วย vuejs หรือแม้แต่ angular2 cli
Geoff

1
ได้ผล - อัปยศฉันไม่สามารถโพสต์คำตอบ ... a2hosting.com/kb/installable-applications/manual-installations/…
eddyparkinson

1
@ Dan-Cornilescu สามารถเปิดใหม่ได้ มันมีคุณค่า มันจะดีกว่าใน superuser ยังพบคำตอบที่ฉันต้องการเพิ่ม
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 พื้นที่สาธารณะ

แก้ไข:ผมเริ่มโครงการ Node.php บน GitHub


2
และติดตั้ง mongoDB ด้วย?
jsky

3
@jsky น่าจะเป็นไปได้เนื่องจาก mongodb ไม่จำเป็นต้องรูท เพียงทำตามคู่มือการติดตั้งด้วยตนเอง
niutech

3
ยังไม่ได้ลอง แต่ดูสวย !!! ... ทำได้ดีมาก
Gabriel Rodriguez

2
ขอแนะนำให้คุณอัปเดตURL ดาวน์โหลดตามนั้น
João Pimentel Ferreira

5
node.php ดีมาก!
Hemant Sharma

51

เชื่อมต่อกับ SSH และปฏิบัติตามคำแนะนำเหล่านี้เพื่อติดตั้ง Node บนโฮสติ้งที่ใช้ร่วมกัน

ในระยะสั้นคุณต้องติดตั้ง NVM ก่อนจากนั้นคุณติดตั้งรุ่นโหนดที่คุณเลือกด้วย 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 ความช่วยเหลือใด ๆ
Amit Saxena

บางทีคุณควรลองstackoverflow.com/a/33874050/328117หากคุณมีโหนดนั้นไม่พบข้อผิดพลาดกับ nvm
vinyll

ผู้ให้บริการโฮสติ้งที่ใช้ร่วมกันส่วนใหญ่ไม่ให้การเข้าถึง SSH อย่างน้อยก็ไม่ใช่ของฉัน
coder.in.me

4
ทำงานได้อย่างสมบูรณ์ !! ขอบคุณ
Devin Norgarb

2
@SyamsoulAzrien ถ้าคุณมีnvm:command not foundคุณสามารถเรียกใช้สิ่งนี้: commandsource ~/.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.com:5000 แต่ก็กล่าวว่าหน้าไม่สามารถใช้ได้ ฉันต้องไปที่ที่อยู่ IP แทนหรือไม่?
zachdyer

พอร์ตนั้นอาจถูกบล็อกคุณควรใช้พอร์ตมาตรฐาน 80
RicardoE

~ / node / bin / npm -v ทำให้ฉันมีข้อผิดพลาดว่า: let notifier = ต้องใช้ ('update-notifier') ({pkg}) SyntaxError: ตัวระบุที่ไม่คาดคิดที่ exports.runInThisContext (vm.js: 69: 16) ที่ Module ._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 Hosting อนุญาตให้ node.js บนบัญชีโฮสติ้งที่ใช้ร่วมกัน ฉันสามารถรับรองได้ว่าฉันมีประสบการณ์ที่ดีกับพวกเขา

นี่คือคำแนะนำใน KnowledgeBase สำหรับการติดตั้ง node.js โดยใช้ Apache / LiteSpeed ​​เป็น reverse proxy: https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed- โฮสติ้งบัญชี ใช้เวลาประมาณ 30 นาทีในการตั้งค่าและจะทำงานกับ npm, Express, MySQL และอื่น ๆ

ดู a2hosting.com


1
ขอบคุณ! สิ่งที่ฉันกำลังมองหา
Pedro Ferreira

เกือบสองปีต่อมา A2 Hosting ยังคงเป็นหนึ่งในผู้ให้บริการโฮสติ้งเพียงไม่กี่รายที่สนับสนุน Node.js บนเซิร์ฟเวอร์ที่ใช้ร่วมกันอย่างเป็นทางการ ดูคู่มือเริ่มต้นใช้งานล่าสุดได้ที่นี่
Dalie

1
ตอบสนองและส่วนหน้าทำงานได้ดีบนแผนโฮสต์ js โหนดที่ใช้ร่วมกันหรือไม่ ความคิดใด ๆ
Samkit Shah

เขียนบล็อกในเรื่องเดียวกัน medium.com/@pampas93/…
Abhijit S

3

คุณควรมองหา บริษัท โฮสติ้งที่มีคุณสมบัติดังกล่าว แต่โฮสติ้งแบบ static + PHP + MySQL แบบธรรมดาจะไม่อนุญาตให้คุณใช้ node.js

คุณต้องหาโฮสติ้งที่ออกแบบมาสำหรับ node.js หรือซื้อVirtual Private Serverและติดตั้งด้วยตัวเอง


คุณหมายความว่าเป็นไปไม่ได้ที่จะโฮสต์แอปพลิเคชัน Node.js โดยใช้โฮสติ้งที่ใช้ร่วมกัน
somesh

3
@somesh เป็นไปได้ - ดูคำตอบของฉัน
niutech

1
มันเป็นเคล็ดลับที่ยอดเยี่ยมแม้ว่าโปรดจำไว้ว่าผู้ให้บริการโฮสติ้งที่ใช้ร่วมกันจำนวนมากจะฆ่ากระบวนการนี้และพิจารณาว่าเป็นการใช้บัญชีโฮสติ้งที่ใช้ร่วมกันในทางที่ผิด ...
Tiago

1
เป็นไปได้ทางเทคนิคอย่างที่ @niutech กล่าว แต่ฉันจะไม่คิดว่าการผลิตปลอดภัยแน่นอนเพื่อนร่วมงานคนอื่น ๆ (ไม่สามารถพูดถึงผู้ใช้มากกว่าหนึ่งคน) ถูกต้องฉันเชื่อว่าผู้ให้บริการโฮสติ้งส่วนใหญ่จะฆ่ากระบวนการโหนดหรือคุณจะหมดเวลาของวงจรโปรเซสเซอร์ เร็ว ๆ นี้
Marek
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.