Cara menghosting aplikasi Node.Js di shared hosting [ditutup]


110

Cara menghosting aplikasi Node.Js di shared hosting

Saya ingin menghosting aplikasi node.js di shared hosting. Apakah ada yang punya referensi atau dokumentasi untuk dirujuk?


Cara saya mengetahuinya dengan menjalankan npm build akan menghasilkan file js yang dapat Anda minimalkan dan kemudian dimasukkan ke dalam tag skrip Anda. Contoh saat membangun dengan vuejs atau bahkan angular2 cli
Geoff

1
ini berhasil - sayang sekali saya tidak dapat mengirim jawaban ... a2hosting.com/kb/installable-applications/manual-installations/…
eddyparkinson

1
@ Dan-Cornilescu dapat dibuka kembali. Itu sangat berharga. Akan lebih baik di superuser. Juga menemukan jawaban yang ingin saya tambahkan.
eddyparkinson

Pada sebagian besar host bersama, menginstal Node dan NPM akan gagal (CentOS Not Supported); berikut adalah solusinya (menggunakan Node v6.2.2) - medium.com/@yatko/…
Yatko

Jawaban:


158

Anda dapat menjalankan server node.js pada hosting bersama biasa dengan Linux, Apache, dan PHP (LAMP). Saya telah berhasil menginstalnya, bahkan dengan NPM, Express dan Grunt berfungsi dengan baik. Ikuti langkah-langkahnya:

1) Buat file PHP baru di server dengan kode berikut dan jalankan:

<?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) Cara yang sama menginstal aplikasi node Anda, misalnya jt-js-sample, menggunakan npm:

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

3) Jalankan aplikasi node dari 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);

Voila! Lihat demo aplikasi node di hosting bersama PHP .

EDIT: Saya memulai proyek Node.php di GitHub .


2
dan menginstal mongoDB juga?
jsky

3
@jsky Ini harus dimungkinkan karena mongodb tidak membutuhkan root. Ikuti saja panduan penginstalan manual .
niutech

3
Belum mencobanya, tapi terlihat cantik !!! ... Kerja bagus
Gabriel Rodriguez

2
Harap diperhatikan bahwa Anda harus memperbarui URL unduhan sesuai
João Pimentel Ferreira

5
node.php sangat bagus!
Hemant Sharma

51

Hubungkan dengan SSH dan ikuti petunjuk ini untuk menginstal Node di shared hosting

Singkatnya, Anda menginstal NVM terlebih dahulu, lalu menginstal versi Node pilihan Anda dengan NVM.

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

Anda restart shell Anda (tutup dan buka kembali sesi Anda). Maka kamu

nvm install stable

untuk menginstal versi stabil terbaru misalnya. Anda dapat menginstal versi apa pun pilihan Anda. Periksa node --versionversi node yang Anda gunakan saat ini dan nvm listuntuk melihat apa yang telah Anda instal.

Sebagai bonus, Anda dapat mengganti versi dengan sangat mudah ( nvm use <version>)

Tidak perlu PHP atau solusi rumit apa pun jika Anda memiliki SSH.


Hai, terima kasih atas jawabannya. Meskipun, saya mengalami masalah, dikatakan bahwa node tidak ditemukan, setelah saya menginstal menggunakan nvm. Ada bantuan?
Amit Saxena

Mungkin sebaiknya Anda mencoba stackoverflow.com/a/33874050/328117 jika Anda memiliki node yang tidak ditemukan kesalahan dengan nvm
vinyll

Sebagian besar penyedia hosting bersama tidak memberikan akses SSH. Setidaknya bukan milikku.
coder.in.me

4
Bekerja dengan sempurna !! Terima kasih
Devin Norgarb

2
@SyamsoulAzrien jika Anda punya, nvm:command not foundAnda dapat menjalankan ini: perintahsource ~/.nvm/nvm.sh
Hans Tiono

12

Saya menginstal Node.js di bluehost.com (server bersama) menggunakan:

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

Ini akan mengunduh file tar, mengekstrak ke direktori dan kemudian mengganti nama direktori itu menjadi nama 'node' agar lebih mudah digunakan.

kemudian

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

Saya sekarang dapat menggunakan perintah:

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

# ~/node/bin/npm -v
2.10.1

Untuk alasan keamanan, saya telah mengganti nama direktori node saya menjadi yang lain.


1
Saya mencoba npm startdi jt-js-sampledan saya pergi ke mysite.com:5000 tetapi dikatakan halaman tidak tersedia. Apakah saya harus pergi ke alamat IP?
zachdyer

port itu mungkin diblokir, Anda harus menggunakan port standar 80
RicardoE

~ / node / bin / npm -v memberi saya kesalahan yang mengatakan: let notifier = require ('update-notifier') ({pkg}) SyntaxError: Pengenal tak terduga di exports.runInThisContext (vm.js: 69: 16) di Modul ._compile (module.js: 432: 25) di Object.Module._extensions..js (module.js: 467: 10) di Module.load (module.js: 349: 32) di Function.Module._load (modul .js: 305: 12) di Function.Module.runMain (module.js: 490: 10) saat startup (node.js: 123: 16) di node.js: 1027: 3
codeinprogress

10

A2 Hosting mengizinkan node.js di akun hosting bersama mereka. Saya dapat menjamin bahwa saya memiliki pengalaman yang positif dengan mereka.

Berikut adalah instruksi di KnowledgeBase mereka untuk menginstal node.js menggunakan Apache / LiteSpeed ​​sebagai reverse proxy: https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed- akun-hosting . Diperlukan sekitar 30 menit untuk menyiapkan konfigurasi, dan ini akan berfungsi dengan npm, Express, MySQL, dll.

Lihat a2hosting.com.


1
Terima kasih! Hanya apa yang saya cari.
Pedro Ferreira

Hampir dua tahun kemudian, A2 Hosting masih menjadi salah satu dari sedikit penyedia hosting yang secara resmi mendukung Node.js di server bersama mereka. Panduan memulai baru-baru ini dapat ditemukan di sini
Dalie

1
apakah bereaksi dan ujung depan berjalan dengan baik pada paket hosting js node bersama? ide apa pun
Samkit Shah

Menulis blog yang sama. medium.com/@pampas93/…
Abhijit S

2

Anda harus mencari perusahaan hosting yang menyediakan fitur seperti itu, tetapi hosting statis + PHP + MySQL standar sederhana tidak mengizinkan Anda menggunakan node.js.

Anda perlu mencari hosting yang dirancang untuk node.js atau membeli Virtual Private Server dan menginstalnya sendiri.


maksud Anda tidak mungkin untuk menghosting aplikasi Node.js menggunakan shared hosting
terkadang

3
@somesh Mungkin - lihat jawaban saya.
niutech

Ini trik yang keren, meskipun perlu diingat banyak penyedia hosting bersama akan menghentikan proses ini dan menganggapnya sebagai penyalahgunaan akun hosting bersama ...
Tiago

secara teknis mungkin seperti yang dikatakan @niutech, tetapi saya pasti tidak akan menganggapnya sebagai produksi yang aman, kolega lain (tidak dapat menyebutkan lebih dari satu pengguna) benar, saya yakin sebagian besar penyedia hosting akan menghentikan proses node atau Anda akan kehabisan waktu siklus prosesor segera
Marek
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.