NB! cPanel serveritel käib NPM kasutamine ainult Node’i environmenti kaudu. Sinna sisenemiseks tuleks kõigepealt luua cPanel kaudu uus NodeJS äpp kas vastavast rakendusest või käsurealt vastavalt alltoodud juhenditele ning kasutada kuvatavat source käsku käsureal!
1. Node.JS installimine cPaneli jagatud veebimajutuse kontole
1. Logi oma cPaneli kontole
2. Lisa oma node script soovitud domeeni või alamdomeeni doc_root’i (uue äpi loomise korral seda sammu teha vaja ei ole)
3. Liigu cPanelis kohta:
cPanel -> SOFTWARE -> Setup Nodejs app -> Create application
4. Vali:
– NodeJS versioon – mida su äpp kasutab
– Kas on tegemist DEVELOPMENT või PRODUCTION äpiga
– App root on sama mis app url – ehk alamdomeen või domeen, mille all äpp jooksma peaks
– Startup file on fail mis käivitatakse sinu äpil/käivitab äpi.
5. Kliki CREATE – luuakse vastavad käivitamisskriptid ja lisatakse vajalikud süsteemsed muutujad kontole.
Minnes tagasi eelmisele lehele, saate oma äppi käivitada/sulgeda/restartida/muuta
2. Näidis-skript nodejs rakenduse kasutamisel veebis
(NB! Kood on toodud näidisena “as-is” põhimõttel. Koodi käivitamine ja/või sellest tuleneva võimaliku toimimatuse/toimimise/kahju on selle koodi kasutaja omal vastutusel! Otse domeenikaustast ja ĂĽhe äpi korral võib pordiks määrata ka 0 – mitme äppi ja alamkaustade korral on soovituslik määrata eraldi port!)
1. Lisa soovitud Node.JS käivitamise veebikausta .htaccess fail (näidises on kasutatud public_html ehk domeeni juurkausta!):
RewriteEngine On
RewriteRule ^$ http://127.0.0.1:8080/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:8080/$1 [P,L]
2. Loo näidisfail (näiteks test.js):
var http = require('http')
http.createServer(onRequest).listen(8080);
console.log('Server has started');
function onRequest(request, response){
response.writeHead(200);
response.write('!!!!!TESTRAKENDUS TOIMIB!!!!!');
response.end();
}
3. Käivita cPaneli kaudu oma testscript
4. Mine oma domeeni veebiaadressile (vajadusel ja lisa lõppu “public” kaust)
Näidisena http://teiedomeeninimi.ee/ või http://teiedomeeninimi.ee/public/
Veebilehel peaks seega nĂĽĂĽd kuvatama:
“!!!!!TESTRAKENDUS TOIMIB!!!!!”
– kui te ei soovi eraldi public kausta kasutada url’is, võite vastava suunamise teha .htaccess failiga:
RewriteEngine On
#RewriteBase /public/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:8080/public/$1 [P,L]
NB! Näidises on kasutatud porti 8080 – Rangelt soovituslik on kasutada mõnda muud porti vahemikus 49152 ja 65535
(Vastasel juhul võite sattuda kasutama kellegi teise Node.JS rakendust, mis on suunatud kasutama kindlat localhosti porti!)
Lisainfot:
– Kui teie rakendus ei käivitu teie valitud pordil, tähendab et see port on juba kasutusel – valige mõni muu port!
– Kui port on juba kasutusel, soovitame valida uue pordi ja muuta selle nii seadistuste failis kui ka .htaccess failis!
3. Node.JS installimine cPaneli jagatud veebimajutuse kontole käsurealt
(NB! Tegemist on näidisega ja soovitatav on alati teha NodeJS install punktis 1. mainitud rakenduse kaudu cPanel kontolt!)
1. Logi oma cPaneli kontole SSH kaudu või cPanel konto kaudu Terminali rakendusse
2. Käivita käsk:
cloudlinux-selector create --json --interpreter nodejs --version 12 --app-root apikaust --domain nodetest.teiedomeeninimi.ee --app-uri /
Kus siis:
–version kohal olev number 12 vaheta endale sobiliku versiooniga. Hetkel on meil kasutatavad versioonid:

–app-root kohal olev “apikaust” peaks olema siis kausta asukoht sinu veebimajutusekontol (Näitena lisadomeeni korral siis kujul domains/lisadomeeninimi/public_html)
–domain kohal olev domeeninimi peaks olema kasutatava domeeni nimi
–app-uri kohal peaks olema domeeni veebikausta korral / ja näiteks “apitest” nimelise alamkausta korral /apitest
3. Loo Node äpile sätete fail:
cd ~/apikaust nano package.json
(Kus siis /apikaust on sinu poolt varem määratud kaust)
4. Lisa faili kood ja salvesta:
{
"name": "minuapp",
"version": "1.0.0",
"description": "Minu Äpp",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
5. Installi vajalikud moodulid/lisad ja liiku node environmenti
cloudlinux-selector install-modules --json --interpretecdr nodejs --user rXXXXXXX --app-root apikaust source /home/rXXXXXXX/nodevenv/apikaust/12/bin/activate && cd /home/rXXXXXXX/apikaust
Kus siis:
– rXXXXXXX on sinu cPanel kasutajatunnus
–app-root kohal olev “apikaust” võib olla ka domeeninimena
– number 12 siis varem määratud versiooninumbrina ja peale cd käsklust olev path peab olema täielik tee siis konkreetse äpi veebikausta.
Peale seda saab edukalt kasutada ka npm käsku kui ka muid äpiga toimetamiseks vajalikke käsurea käske!
K: Kas Teil on toetatud ka NextJS ja React kasutamine
V: Jah
—
K: Kas on reaalselt vaja teha nö. pordisuunamist .htaccess failiga
V: .htaccess failiga on vaja teha pordisuunamine ainult juhul, kui kasutatakse cPanelis “Application Manager”‘i ja selle kaudu lisatakse NodeJS app. Kui NodeJS app lisatakse “Setup NodeJS app” rakenduse kaudu, siis on kasutusel Cloudlinux’i kaudu olev Passenger’i rakendus, mis ei vaja eraldi pordi suunamist .htaccessi kaudu!
—
K: Next äpi build annab WebAssemblyMemory (WASM) errori – kas oleks võimalik suurendada mälu?
V: Ei. Kasutusel olev mälumaht on seotud paketiga ning rakenduvad Cloudlinux’i LVE piirangud! Kui saate WASM’i veateate, ĂĽritab app kasutada build all liigselt mälu ja seal annab vea – lahendus oleks:
– Lokaalseadmes eemaldada .next ja node_modules kaustad
– Buildida app lokaalmasinas
– Laadida ĂĽles “.next/” kaust koos sisuga serverisse
NB! Tasub kontrollida, et oleks lisaks ĂĽles laetud/olemas ka vajalikud failid serveri poolel:
package.json package-lock.json .next/ next.config.js app.js (või server.js - olenevalt kuidas olete oma äpi seadistanud/loonud) public/ (kui kasutusel)
– Käivitada cPanelis “Setup NodeJS app” all oma äpi “Edit” vaates “Run NPM Install” (see loob ka vajalikud node_modules kaustad)
– Teha oma äpile restart – peale seda peaks rakendus korrektselt toimima!
(Kui ei toimi, salvestage cPanelis oma äpi “Edit” vaates logifail, soovitatavalt näites toodud logs kausta alla kujul äpinimi_passenger.log)
NB! Kui endiselt ei toimi ja on kahtlus, et võis jääda mingi mainitud äpi all varem olnud/seadistatud konf või failide nö. “jäänuk” alles, soovitaksin:
1. Sisene cPanel Terminal kaudu või SSH kaudu käsureale ning oma Node environmenti
2. Tühjenda vahemälu
npm cache clean --force
3. TĂĽhjenda node_modules kaust
4. cPanelist äpi “Edit” vaatest uuesti “Run NPM install” või käsurealt:
npm install
5. cPanelist äpi vaates, teha äpile restart ning peaks äpp korrektselt toimima (muudel juhtudel tasuks kontrollida passenger.log failis olevat infot)
—
K: Minul lokaalmasinas/-serveris kõik toimib, teil on ilmselt NodeJS keskkond katki?
V: Ei. Kahjuks, kuna on erinevad süsteemid, on erinevad ka rakendused ja nende versioonid kui ka näiteks mälukasutus. Lihtsate näidetena:
– kui teil lokaalmasinas on näiteks 16-32GB mälu, millest äpi installimisele/käivitamisele läheb 8GB mälu ja näiteks Starter paketis on Teil tellitud ainult 2GB mälu terve Teie kontol toimiva jaoks – siis ei ole mingil võimalusel võimalik et antud Ă„pp’i mainitud toiming mainitud paketis käivituks selliselt!
– kui lokaalmasinas on kasutusel Node versioon 20.19 aga serverisse impordite kogemata versiooniga 19.9, siis võib olla enamus asju toimivad korrektselt kuid siiski esinevad vead
– kontrollige ĂĽle “env” muutujad, et neid ei oleks kogemata lokaalmasinasse lisatud ja serveris unustatud lisada!
– kontrollige ĂĽle, et serverisse laadimisel on kõik vajalikud failid olemas/kaasas
– kontrollige ĂĽle, et seadistatud pathid jms. oleks config failides korrektsed! (pahatihti võib esineda olukord kus Node käitub erinevalt just tänu eri OS versioonide all olevatele Node seadistustele, kus lokaalmasinas võetakse osad pathid vaikimisi ja vajadusel luuakse kuid serveris näiteks mitte selliselt – need peaks samas välja tulema vealogidest…)
Kui murekoht on paketis olevates ressurssides näiteks, on alati võimalik tellida/ĂĽle minna suuremale paketile jooksvalt – selleks saatke palun vastavasisuline soov kliendikonto kontaktmaililt meile: support@radicenter.eu
—