Cách lưu trữ ứng dụng Node.Js trong chia sẻ lưu trữ [đã đóng cửa]


110

Cách lưu trữ ứng dụng Node.Js trong một máy chủ được chia sẻ

Tôi muốn lưu trữ một ứng dụng node.js trong lưu trữ được chia sẻ. Có ai có bất kỳ tài liệu tham khảo hoặc tài liệu để tham khảo?


Theo cách tôi đã tìm ra bằng cách chạy bản dựng npm sẽ tạo ra các tệp js mà bạn có thể rút gọn và sau đó đưa vào các thẻ tập lệnh của mình. Ví dụ khi xây dựng với vuejs hoặc thậm chí cli angular2
Geoff

1
làm việc này - xấu hổ tôi không thể đăng một câu trả lời ... a2hosting.com/kb/installable-applications/manual-installations/...
eddyparkinson

1
@ Dan-Cornilescu có thể được mở lại. Nó có giá trị. Nó sẽ tốt hơn trong superuser. Cũng tìm thấy một câu trả lời mà tôi muốn thêm.
eddyparkinson

Trên hầu hết các máy chủ chia sẻ, việc cài đặt Node và NPM sẽ không thành công (Không hỗ trợ CentOS); đây là một giải pháp (sử dụng Node v6.2.2) - medium.com/@yatko/...
Yatko

Câu trả lời:


158

Bạn có thể chạy máy chủ node.js trên một máy chủ được chia sẻ thông thường với Linux, Apache và PHP (LAMP). Tôi đã cài đặt thành công nó, ngay cả với NPM, Express và Grunt vẫn hoạt động tốt. Làm theo các bước:

1) Tạo một tệp PHP mới trên máy chủ với mã sau và chạy nó:

<?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) Cùng một cách cài đặt ứng dụng nút của bạn, ví dụ: jt-js-sample, sử dụng npm:

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

3) Chạy ứng dụng nút từ 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);

Thì đấy! Hãy xem bản demo của một ứng dụng nút trên lưu trữ chia sẻ PHP .

CHỈNH SỬA: Tôi đã bắt đầu một dự án Node.php trên GitHub .


2
và cài đặt cả mongoDB?
jsky

3
@jsky Có thể thực hiện được vì mongodb không cần root. Chỉ cần làm theo hướng dẫn cài đặt thủ công .
niutech

3
Chưa thử, nhưng trông thật đẹp !!! ... Làm tốt lắm
Gabriel Rodriguez

2
Xin lưu ý bạn sẽ cập nhật các URL tải phù hợp
João Ferreira Pimentel

5
node.php rất tốt!
Hemant Sharma

51

Kết nối với SSH và làm theo các hướng dẫn sau để cài đặt Node trên một máy chủ được chia sẻ

Tóm lại, trước tiên bạn cài đặt NVM, sau đó bạn cài đặt phiên bản Node mà bạn chọn với NVM.

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

Khởi động lại trình bao của bạn (đóng và mở lại các phiên của bạn). Sau đó bạn

nvm install stable

để cài đặt phiên bản ổn định mới nhất chẳng hạn. Bạn có thể cài đặt bất kỳ phiên bản nào mà bạn chọn. Kiểm tra node --versionphiên bản nút bạn hiện đang sử dụng và nvm listđể xem bạn đã cài đặt những gì.

Ngoài ra, bạn có thể chuyển đổi phiên bản rất dễ dàng ( nvm use <version>)

Không cần PHP hoặc bất kỳ giải pháp phức tạp nào nếu bạn có SSH.


Xin chào, cảm ơn trả lời của bạn. Mặc dù, tôi đang gặp sự cố, nó nói rằng không tìm thấy nút, sau khi tôi thực hiện cài đặt bằng nvm. Bất kỳ giúp đỡ?
Amit Saxena

Có lẽ bạn nên thử stackoverflow.com/a/33874050/328117 nếu bạn có nút không tìm thấy lỗi với nvm
vinyll

Hầu hết các nhà cung cấp dịch vụ lưu trữ được chia sẻ không cấp quyền truy cập SSH. Ít nhất không phải của tôi.
coder.in.me

4
Hoạt động hoàn hảo !! Cảm ơn
Devin Norgarb

2
@SyamsoulAzrien nếu bạn có nvm:command not foundbạn có thể chạy này: lệnhsource ~/.nvm/nvm.sh
Hans Tiono

12

Tôi đã cài đặt Node.js trên bluehost.com (một máy chủ được chia sẻ) bằng cách sử dụng:

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

Thao tác này sẽ tải xuống tệp tar, giải nén vào một thư mục và sau đó đổi tên thư mục đó thành tên 'nút' để dễ sử dụng hơn.

sau đó

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

Bây giờ tôi có thể sử dụng các lệnh:

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

# ~/node/bin/npm -v
2.10.1

Vì lý do bảo mật, tôi đã đổi tên thư mục nút của mình thành một thứ khác.


1
Tôi đã thử npm starttrong jt-js-samplevà tôi đã truy cập vào mysite.com:5000 nhưng nó cho biết trang không khả dụng. Tôi có cần chuyển đến địa chỉ IP không?
zachdyer

rằng cổng có lẽ là bị chặn, bạn nên sử dụng các tiêu chuẩn 80 cổng
RicardoE

~ / node / bin / npm -v cho tôi lỗi khi nói: let notifier = Required ('update-notifier') ({pkg}) SyntaxError: Định danh không mong muốn tại export.runInThisContext (vm.js: 69: 16) tại Mô-đun ._compile (module.js: 432: 25) tại Object.Module._extensions..js (module.js: 467: 10) tại Module.load (module.js: 349: 32) tại Function.Module._load (module .js: 305: 12) tại Function.Module.runMain (module.js: 490: 10) lúc khởi động (Node.js: 123: 16) tại Node.js: 1027: 3
codeinprogress

10

A2 Hosting cho phép node.js trên các tài khoản lưu trữ được chia sẻ của họ. Tôi có thể đảm bảo rằng tôi đã có một trải nghiệm tích cực với chúng.

Dưới đây là hướng dẫn trong KnowledgeBase của họ để cài đặt node.js bằng Apache / LiteSpeed ​​làm proxy ngược: https://www.a2hosting.com/kb/installable-application/manual-installations/installing-node-js-on-managed- tài khoản lưu trữ . Mất khoảng 30 phút để thiết lập cấu hình và nó sẽ hoạt động với npm, Express, MySQL, v.v.

Xem a2hosting.com.


1
Cảm ơn bạn! Chỉ cần những gì tôi đang tìm kiếm.
Pedro Ferreira

Gần hai năm sau, A2 Hosting vẫn là một trong số rất ít nhà cung cấp dịch vụ lưu trữ chính thức hỗ trợ Node.js trên máy chủ chia sẻ của họ. Một hướng dẫn bắt đầu gần đây có thể tìm thấy ở đây
Dalie

1
Phản ứng và giao diện người dùng có chạy tốt trên gói lưu trữ js nút được chia sẻ không? bất kỳ ý tưởng nào
Samkit Shah

Đã viết một blog trên cùng một. medium.com/@pampas93/…
Abhijit S

2

Bạn nên tìm một công ty lưu trữ cung cấp tính năng như vậy, nhưng lưu trữ tĩnh + PHP + MySQL đơn giản tiêu chuẩn sẽ không cho phép bạn sử dụng node.js.

Bạn cần tìm một máy chủ được thiết kế cho node.js hoặc mua Máy chủ riêng ảo và tự cài đặt.


Bạn có nghĩa là nó không thể đến máy chủ ứng dụng Node.js bằng cách sử dụng chia sẻ lưu trữ
somesh

3
@somesh Có thể - hãy xem câu trả lời của tôi.
niutech

Đó là một thủ thuật mát mẻ, mặc dù giữ trong tâm trí rất nhiều nhà cung cấp hosting chia sẻ sẽ giết chết quá trình này và coi đó là lạm dụng của một tài khoản chia sẻ lưu trữ ...
Tiago

về mặt kỹ thuật có thể như @niutech đã nói, nhưng tôi chắc chắn sẽ không coi đó là sản xuất an toàn, đồng nghiệp khác (không thể đề cập đến nhiều người dùng) đúng, tôi tin rằng hầu hết các nhà cung cấp dịch vụ lưu trữ sẽ giết chết quy trình nút hoặc bạn sẽ hết thời gian chu kỳ xử lý rất sớm
Marek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.