Bir Node.Js uygulaması paylaşılan barındırmada nasıl barındırılır [kapalı]


110

Node.Js uygulamasını paylaşılan bir barındırmada barındırma

Paylaşılan barındırmada bir node.js uygulamasını barındırmak istiyorum. Başvuracak herhangi bir referans veya belge olan var mı?


Bunu npm build çalıştırarak anladığım yol, küçültebileceğiniz ve ardından betik etiketlerinize ekleyebileceğiniz js dosyaları oluşturacaktır. Vuejs veya hatta angular2 cli ile oluştururken örnek
Geoff

1
bu işe yaradı - yazık bir cevap gönderemiyorum ... a2hosting.com/kb/installable-applications/manual-installations/…
eddyparkinson

1
@ Dan-Cornilescu yeniden açılabilir. Değerlidir. Süper kullanıcıda daha iyi olurdu. Ayrıca eklemek istediğim bir cevap buldum.
eddyparkinson

Çoğu paylaşılan ana bilgisayarda Node ve NPM kurulumu başarısız olur (CentOS Desteklenmiyor); işte bir çözüm (Düğüm v6.2.2'yi kullanarak) - medium.com/@yatko/…
Yatko

Yanıtlar:


158

Sen edebilirsiniz Linux, Apache ve PHP (LAMP) ile barındırma paylaşılan tipik üzerinde node.js sunucuyu çalıştırın. NPM, Express ve Grunt iyi çalışıyor olsa bile onu başarıyla kurdum. Adımları takip et:

1) Aşağıdaki kodla sunucuda yeni bir PHP dosyası oluşturun ve çalıştırı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) Düğüm uygulamanızı aynı şekilde yükleyin, örneğin npm kullanarak jt-js-sample:

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

3) Düğüm uygulamasını PHP'den çalıştırın:

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

İşte bu kadar! PHP paylaşılan barındırmada bir düğüm uygulamasının demosuna bir göz atın .

DÜZENLEME: GitHub'da bir Node.php projesi başlattım .


2
ve mongoDB'yi de yüklüyor musunuz?
jsky

3
@jsky Mongodb'un root'a ihtiyacı olmadığı için mümkün olmalı. Manuel kurulum kılavuzunu izlemeniz yeterlidir .
niutech

3
Denemedim, ama çok güzel görünüyor !!! ...
Gabriel Rodriguez

2
İndirme URL'sini buna göre güncellemeniz gerektiğini unutmayın
João Pimentel Ferreira

5
node.php çok iyidir!
Hemant Sharma

51

SSH ile bağlanın ve Node'u paylaşılan bir barındırmaya yüklemek için bu talimatları izleyin

Kısacası önce NVM'yi kurarsınız, ardından seçtiğiniz Node sürümünü NVM ile kurarsınız.

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

Kabuğunuzu yeniden başlatın (oturumlarınızı kapatın ve yeniden açın). O zaman sen

nvm install stable

örneğin en son kararlı sürümü yüklemek için. İstediğiniz herhangi bir sürümü kurabilirsiniz. node --versionŞu anda kullanmakta olduğunuz düğüm sürümünü kontrol edin ve nvm listne yüklediğinizi görün.

Bonus olarak sürümü çok kolay bir şekilde değiştirebilirsiniz ( nvm use <version>)

SSH'niz varsa PHP'ye veya herhangi bir karmaşık çözüme gerek yoktur.


Merhaba, cevap için teşekkürler. Her ne kadar sorunla karşılaşsam da, nvm kullanarak kurulumu yaptıktan sonra düğümün bulunamadığını söylüyor. Herhangi bir yardım?
Amit Saxena

Belki denemelisiniz stackoverflow.com/a/33874050/328117 bunu varsa düğüm bulunamadı nvm hatayı
vinyll

Çoğu paylaşılan barındırma sağlayıcısı SSH erişimi sağlamaz. En azından benim değil.
coder.in.me

4
Mükemmel çalıştı !! Teşekkürler
Devin Norgarb

2
@SyamsoulAzrien eğer varsa şunu nvm:command not foundçalıştırabilirsin: commandsource ~/.nvm/nvm.sh
Hans Tiono

12

Node.js'yi bluehost.com'a (paylaşılan bir sunucu) kullanarak kurdum:

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

Bu, tar dosyasını indirir, bir dizine çıkartır ve daha sonra kullanımı kolaylaştırmak için bu dizini 'node' adıyla yeniden adlandırır.

sonra

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

Artık komutları kullanabilirim:

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

# ~/node/bin/npm -v
2.10.1

Güvenlik nedenleriyle düğüm dizinimi başka bir adla yeniden adlandırdım.


1
Denedim npm startde jt-js-sampleben mysite.com:5000 gitti ama sayfa mevcut değildir söyledi. Bunun yerine IP adresine gitmem gerekiyor mu?
zachdyer

bu bağlantı noktası muhtemelen engellendi, standart 80 bağlantı noktasını kullanmalısınız
RicardoE

~ / node / bin / npm -v bana şunu söyleyen bir hata veriyor: let notifier = require ('update-notifier') ({pkg}) SyntaxError: Export.runInThisContext'de (vm.js: 69: 16) Modülde beklenmeyen tanımlayıcı ._compile (module.js: 432: 25) Object.Module._extensions..js'de (module.js: 467: 10) Module.load'da (module.js: 349: 32) Function.Module._load'da (modül .js: 305: 12) Function.Module.runMain'de (module.js: 490: 10) başlangıçta (node.js: 123: 16) node.js'de: 1027: 3
codeinprogress

10

A2 Hosting, paylaşılan barındırma hesaplarında node.js'ye izin verir. Onlarla olumlu bir deneyim yaşadığımı garanti edebilirim.

Ters proxy olarak Apache / LiteSpeed ​​kullanarak node.js'yi yüklemek için KnowledgeBase'lerinde talimatlar: https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed- barındırma hesapları . Yapılandırmayı kurmak yaklaşık 30 dakika sürer ve npm, Express, MySQL vb. İle çalışır.

A2hosting.com adresine bakın.


1
Teşekkür ederim! Tam da aradığım şey.
Pedro Ferreira

Yaklaşık iki yıl sonra, A2 Hosting, paylaşılan sunucularında Node.js'yi resmi olarak destekleyen çok az sayıda barındırma sağlayıcısından biridir . Yeni bir başlangıç ​​kılavuzu burada
Dalie

1
Tepki ve ön uç paylaşılan düğüm js barındırma planında iyi çalışıyor mu? herhangi bir fikir
Samkit Shah

Aynı şekilde bir blog yazdı. medium.com/@pampas93/…
Abhijit S

2

Bu özelliği sağlayan bir barındırma şirketi aramalısınız, ancak standart basit statik + PHP + MySQL barındırma node.js kullanmanıza izin vermez.

Ya node.js için tasarlanmış bir barındırma bulmanız ya da bir Sanal Özel Sunucu satın alıp kendiniz yüklemeniz gerekir.


Paylaşılan barındırma kullanarak Node.js uygulamasını barındırmanın mümkün olmadığını mı
söylüyorsunuz

3
@somesh Mümkün - cevabıma bakın.
niutech

Bu harika bir numara, ancak birçok paylaşılan barındırma sağlayıcısının bu işlemi öldüreceğini ve paylaşılan bir barındırma hesabının kötüye kullanıldığını düşüneceğini unutmayın ...
Tiago

@niutech'in dediği gibi teknik olarak mümkün, ancak kesinlikle üretim güvenliğini düşünmüyorum, diğer meslektaşım (birden fazla kullanıcıdan bahsedilemez) haklı, çoğu barındırma sağlayıcısının düğüm sürecini öldüreceğine veya işlemci döngü süresinin biteceğine inanıyorum çok yakında
Marek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.