Node.js: Pradžia
Sužinokite, kaip greitai ir saugiai diegti Node.js paslaugą Stackhero platformoje
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti Node.js cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:
- Įdiekite savo programą per kelias sekundes su paprastu
git push.- Naudokite savo domeno vardą ir pasinaudokite automatiniu HTTPS sertifikatų konfigūravimu, kad padidintumėte saugumą.
- Mėgaukitės ramybe su automatinėmis atsarginėmis kopijomis, vieno paspaudimo atnaujinimais ir paprasta, skaidria bei prognozuojama kainodara.
- Gaukite optimalią veikimo ir tvirtą saugumą dėka privačios ir dedikuotos VM.
Taupykite laiką ir supaprastinkite savo gyvenimą: išbandyti Stackhero Node.js cloud hosting sprendimą užtrunka tik 5 minutes!
Node.js paslaugos diegimas Stackhero yra greitas, efektyvus ir patikimas. Šis vadovas padės jums atlikti esminius veiksmus, kad galėtumėte diegti savo programą per kelias sekundes, užtikrinant aukščiausio lygio saugumą ir našumą.
Pradėti Node.js paslaugą
Pradėkite kurdami Node.js paslaugą Stackhero. Šis žingsnis sudaro pagrindą jūsų programos diegimui ir leidžia jums išnaudoti visus Stackhero debesų prieglobos sprendimo privalumus.
Reikalavimai
Prieš diegdami Stackhero, įsitikinkite, kad turite įdiegtus šiuos įrankius:
- Git. Jį galite atsisiųsti iš https://git-scm.com/downloads.
- Windows vartotojams rekomenduojame naudoti Windows Terminal, kurį galima rasti Microsoft Store, kad patirtis būtų geresnė.
Konfigūruokite savo paslaugą
Vienintelė reikalinga konfigūracija yra jūsų SSH viešojo rakto atnaujinimas. Šis raktas leidžia Stackhero saugiai pasiekti jūsų kodo saugyklą.
Norėdami rasti savo viešąjį raktą, vykdykite vieną iš šių komandų:
cat ~/.ssh/id_rsa.pub
arba
cat ~/.ssh/id_ed25519.pub
Jei dar neturite SSH raktų poros, galite ją sugeneruoti vykdydami ssh-keygen Linux arba macOS arba ssh-keygen.exe Windows.
Gavę savo viešąjį raktą, prisijunkite prie Stackhero valdymo skydelio, pasirinkite savo Node.js paslaugą, eikite į jos konfigūraciją ir įklijuokite savo raktą.
Patarimas: Galite nustatyti savo SSH viešąjį raktą globaliai, kad visi būsimi paslaugos automatiškai jį įtrauktų. Norėdami tai padaryti, eikite į Stackhero valdymo skydelį, spustelėkite savo profilio nuotrauką (esančią viršutiniame dešiniajame kampe), eikite į 'Jūsų profilis' ir įklijuokite savo SSH viešąjį raktą.
Klonuokite pavyzdį
Pateikiama pavyzdinė Node.js programa, iliustruojanti diegimo procesą Stackhero. Galite klonuoti saugyklą naudodami šias komandas:
git clone https://github.com/stackhero-io/nodejsGettingStarted.git stackhero-nodejs-getting-started
cd stackhero-nodejs-getting-started
Konfigūruokite nuotolinio saugyklos serverį
Programos diegimas per git yra greitas, patikimas ir paprastas Stackhero. Jūsų paslaugos pagrindiniame puslapyje rasite komandą, kaip pridėti git nuotolinį. Tai gali atrodyti taip:
git remote add stackhero ssh://stackhero@XXXXX.stackhero-network.com:222/project.git
Tiesiog nukopijuokite ir įklijuokite komandą į savo terminalą.
Diegti savo Node.js programą
Stumkite savo kodą į Stackhero naudodami šią komandą:
git push stackhero main
Pirmą kartą stumiant, jums bus paprašyta pridėti rakto pirštų atspaudą. Įveskite "yes", kad tęstumėte.
Po kelių akimirkų jūsų programa bus gyva. Galite patikrinti jos būseną apsilankę svetainės URL, pateiktame Stackhero valdymo skydelyje (pvz., https://XXXXX.stackhero-network.com).
Viskas. Jūsų programa dabar įdiegta!
Jei atliksite pakeitimus app.js faile, tiesiog įsipareigokite ir stumkite savo pakeitimus:
git add -A .
git commit -m "Update app.js"
git push stackhero main
Diegti esamą programą
Esamoms programoms pridėkite nuotolinę saugyklą, kaip aprašyta anksčiau skyriuje Konfigūruokite nuotolinio saugyklos serverį. Tada diekite savo pakeitimus su:
git push stackhero main
Tvarkyti klaidą "failed to push some refs to '[...]'"
Jei susiduriate su šia klaida:
error: failed to push some refs to '[...]'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
(e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Ši klaida rodo, kad jūsų vietinė saugykla nėra sinchronizuota su nuotoline saugykla. Tokiu atveju galite priversti stumti vykdydami:
git push -f stackhero main
Tvarkyti klaidą "src refspec main does not match any"
Jei matote šią klaidą vykdydami git push stackhero main:
error: src refspec main does not match any
error: failed to push some refs to 'ssh://<XXXXXX>.stackhero-network.com:222/project.git'
Tai rodo, kad šaka main neegzistuoja. Galite pabandyti stumti šaką master vietoj:
git push stackhero master
Tvarkyti klaidą "Everything up-to-date" stumiant
Jei git atsako "Everything up-to-date", bet jūsų pakeitimai nėra įdiegti, tai gali būti dėl to, kad pamiršote įsipareigoti savo pakeitimus. Tokiu atveju vykdykite:
git add -A .
git commit -m "Your commit message"
git push stackhero main
Jei nebuvo atlikta jokių pakeitimų, bet vis tiek norite priversti diegimą, galite priversti tuščią įsipareigojimą:
git commit --allow-empty -m "Force update"
git push stackhero main
Diegti kitą šaką nei main
Jei norite diegti kitą šaką nei main, pvz., production, galite naudoti šią komandą:
git push stackhero production:main
Diegti žymą
Jei dirbate su žymomis ir norite diegti konkrečią žymą (pvz., v1.0), vykdykite:
git push stackhero 'v1.0^{}:main'
Čia ^{} užtikrina, kad su žyma susijęs įsipareigojimas būtų stumiamas.
Grįžti atgal arba diegti konkretų įsipareigojimą
Jei reikia diegti konkretų įsipareigojimą, pirmiausia nustatykite įsipareigojimo hash naudodami git log. Tada diekite jį su:
git push -f stackhero <HASH>:main
Diegti į kelias aplinkas
Galite nustatyti kelias Node.js paslaugas skirtingoms aplinkoms, pvz., produkcijai ir testavimui. Norėdami pervadinti dabartinį nuotolinį iš stackhero į stackhero-staging, vykdykite:
git remote rename stackhero stackhero-staging
Tada sukurkite naują Node.js paslaugą Stackhero valdymo skydelyje ir pridėkite ją kaip stackhero-production:
git remote add stackhero-production ssh://stackhero@XXXXX.stackhero-network.com:222/project.git
Diekite į produkciją arba testavimą naudodami atitinkamas komandas:
git push stackhero-production main
arba
git push stackhero-staging main
Išsaugokite savo SSH privataus rakto slaptažodį macOS raktų pakabuke
macOS gali paprašyti jūsų SSH rakto slaptažodžio kiekvieną kartą stumiant kodą. Dėl patogumo ir saugumo (nepašalinant rakto slaptažodžio) galite jį išsaugoti macOS raktų pakabuke vykdydami:
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_rsa
Ši komanda išsaugo jūsų rakto slaptažodį raktų pakabuke, kad ateityje diegiant nebūtų prašoma.
Tvarkyti paslaptis
Testavimo ir produkcijos aplinkose saugiai valdyti paslaptis, tokias kaip žetonai ar slaptažodžiai, yra būtina. Vietoj to, kad šias paslaptis saugotumėte tiesiogiai savo saugykloje, naudokite aplinkos kintamuosius, kad padidintumėte saugumą.
Galite pridėti aplinkos kintamuosius per Stackhero valdymo skydelį ir pasiekti juos savo Node.js kode. Pavyzdžiui, jei apibrėžiate kintamąjį pavadinimu mySecret, galite jį pasiekti savo programoje taip:
process.env.mySecret
Atidaryti kitus tinklo prievadus
Jei jūsų programa nenaudoja HTTP, gali tekti atidaryti papildomus TCP ir UDP prievadus per Stackhero valdymo skydelį. Tiesiog nurodykite viešąjį įėjimo prievadą, paskirties prievadą jūsų Node.js paslaugoje ir protokolą (TCP arba UDP), kad užtikrintumėte tinkamą ryšį.
Failų saugojimas
Norint saugoti failus, tokius kaip vartotojų nuotraukos, geriausia naudoti objektų saugojimo sprendimą. Šis požiūris leidžia dalintis failais tarp kelių paslaugų ir instancijų, tuo pačiu atskiriant jūsų kodą nuo duomenų. Rekomenduojame MinIO kaip paprastą, greitą ir galingą sprendimą, suderinamą su Amazon S3 protokolu.
Jei pageidaujate vietinio saugojimo, galite naudoti nuolatinį saugojimą, prieinamą su jūsų Node.js instancija. Šis saugojimas yra /persistent/storage/.
DĖMESIO: Niekada nesaugokite duomenų už
/persistent/storage/aplanko ribų!Duomenys, saugomi už šio aplanko ribų, gali būti prarasti, jei jūsų instancija bus paleista iš naujo arba jei stumsite kodo pakeitimus.
Švelnus išjungimas
Diegiant naują jūsų programos versiją, senoji versija iš anksto gauna nutraukimo signalą. Tai suteikia jai laiko švelniai uždaryti duomenų bazės ryšius ir sustabdyti kitas paslaugas.
Nutraukimo signalas SIGTERM yra siunčiamas. Galite užfiksuoti šį signalą savo kode taip:
process.on('SIGTERM', () => {
// Šis logas pasirodo Stackhero valdymo skydelyje 'logs' skirtuke
console.info('😯 SIGTERM signalas gautas.');
// Uždarykite atidarytus duomenų bazės ryšius ar kitas paslaugas čia
// ...
});
Vykdykite savo kodą keliuose CPU branduoliuose
Pagal numatymą, Node.js veikia viename branduolyje naudodamas vieną giją. Norėdami pilnai išnaudoti visus galimus CPU branduolius, apsvarstykite galimybę naudoti Node.js cluster API. Galite peržiūrėti oficialią dokumentaciją čia: https://nodejs.org/api/cluster.html.
Žemiau pateiktas paprastas pavyzdys, kuris sukuria HTTP serverį, naudojantį visus galimus CPU:
const cluster = require('cluster');
const http = require('http');
const cpusCount = require('os').cpus().length;
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
// Fork workers
for (let i = 0; i < cpusCount; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`Worker ${worker.process.pid} died`);
});
} else {
// Workers share any TCP connection; in this case, an HTTP server
http.createServer((req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(8000);
console.log(`Worker ${process.pid} started`);
}