Node.js (Express.js) loyihasini hostingda ishga tushirib olish uchun namuna

Express.js framework-da qilingan Node.js loyihasini cPanel-ga deploy qilish bo'yicha namunaviy qo'llanma

cPanel v136.0.24

Ushbu maqola sizga Node.js (Express.js) asosidagi loyihangizni bizning hostingda, cPanel boshqaruv paneli orqali ishga tushirib olish uchun kichik qo'llanma vazifasini bajaradi.

Maqola quyidagi qadamlarni o'z ichiga oladi:

  1. Namunaviy loyiha bilan tanishib chiqish
  2. Loyihani alohida hostingda ishga tushirib olish - deployment on production
  3. Namunaviy loyihani hostingdan o'chirib tashlash

Jarayonni diqqat bilan kuzating va qadamlarni birgalikda, to'g'ri tartib asosida bajaring, zero shu asnoda sizda Node.js (Express.js) loyihasini deploy qilish borasida yaxshi tasavvur paydo bo'ladi va ushbu amaliyotni siz keyinchalik o'z loyihangizga ham qo'llaysiz.

Namunaviy loyiha

Biz tanlab olgan namunaviy loyiha "Tic-Tac Ledger", ya'ni ikki kishi o'ynaydigan, brauzer orqali ishlaydigan X-O (tic-tac-toe) o'yini hisoblanadi. Unda biz o'yin natijalari saqlanadigan reyting jadvali (leaderboard) qo'shishni ham ko'rib chiqamiz.

Loyiha Express.js serveri va statik frontend (HTML/CSS/JS, build qadamisiz) dan iborat. Ma'lumotlar bazasi sifatida biz Knex kutubxonasidan foydalanamiz — bu kutubxona local muhitda SQLite va production serverda MySQL orasida hech qanday SQL kodini o'zgartirmasdan almashish imkonini beradi.

  1. migrations/ — baza strukturasi (jadvallar) tasvirlangan fayllar joylashgan papka. Bu fayllar yordamida games va leaderboard jadvallari yaratiladi — local SQLite uchun ham, production MySQL uchun ham bir xil fayllar ishlatiladi.
  2. node_modules/ — loyihaga tegishli barcha kutubxonalar joylashadigan papka. Bu papka hostingga yuklanishi shart emas — production serverda u butunlay qaytadan, npm install buyrug'i orqali yaratiladi.
  3. src/ — loyihaning asosiy kodi: server marshrutlari (routes/), o'yin mantig'i (gameLogic.js), baza ulanishi (db.js) va frontend statik fayllari (public/).
  4. .env — bu barcha o'ta maxfiy saqlanadigan muhit kalitlari, parollari saqlanadigan fayl. Production serverda bu fayl o'rniga cPanel-ning "Environment variables" interfeysidan foydalanish mumkin.
  5. app.js — loyihaning kirish (entry point) fayli. Express serverini ishga tushiradi va cPanel/Passenger aynan shu faylni chaqiradi.
  6. knexfile.js — ma'lumotlar bazasi sozlamalari fayli. Bu faylda development (SQLite) va production (MySQL) uchun alohida konfiguratsiya mavjud.
  7. package.json — bu biz uchun barcha kerakli kutubxonalarni kerakli versiyalari bilan bir faylda saqlash va u orqali o'rnatib olish uchun qulay vosita hisoblanadi. Python loyihalaridagi requirements.txt fayliga to'g'ri keladi.

Loyiha to'laligicha sizga taqdim qilinadi, iltimos, uni ko'rib, o'rganib chiqing:

Namunaviy loyihani .zip formatida yuklab olish

node-sample.zip

Loyiha papkasini terminal orqali oching va:

Windows PowerShell
Linux bash
npm install
copy .env.example .env
npm run migrate
npm start

Loyihani serverga yuklash

Birinchi o'rinda qilinadigan ishlar tartibini rejalashtirib olamiz:

  1. Loyiha uchun alohida subdomen yaratib olamiz
  2. Loyiha bazasi va baza foydalanuvchisini yaratib olamiz (MySQL)
  3. "Setup Node.js App" interfeysi orqali yangi Node.js Environment(muhit) yaratib olamiz
  4. Subdomen papkasiga loyihaning .zip formatidagi arxivini yuklaymiz
  5. Muhit o'zgaruvchilarini (environment variables) production uchun moslab chiqamiz
  6. cPanel-ning "Run NPM Install" tugmasi orqali barcha kerakli kutubxonalarni o'rnatib olamiz; so'ng terminal orqali yangi bazaga schema migratsiya qilamiz
  7. "Node.js App" ni qayta ishga tushiramiz

Tayyor bo'lsangiz, boshlaymiz!

1. Subdomen yaratish

Biz loyiha uchun bizdagi hostingda node.scroll.uz subdomenini yaratib olamiz.

2. Ma'lumotlar bazasi va uning foydalanuvchisini yaratish

cPanelning "Database Wizard" interfeysining o'zi sizga MySQL bazasi, uning foydalanuvchisini yaratish va baza uchun foydalanuvchiga kerakli ruxsatlarni berish bo'yicha qadamma-qadam ko'rsatib turadi.

  1. Birinchi qadamda bazaga nom bering. Biz uni scroll_node deb nomlaymiz (sizda scroll_ qismi hosting username dan olinadi va boshqacha bo'ladi)
  2. Keyingi qadamda foydalanuvchi yaratasiz. Biz uni scroll_node-user deb nomlaymiz (bu yerda ham sizning foydalanuvchingiz boshqacha nomlanadi, sababi sizda uning nomi boshlanishi scroll_ bo'lmaydi). Shuningdek, unga kuchli parol sozlab, o'zingizda saqlab olasiz
  3. Uchinchi qadamda esa siz foydalanuvchi uchun bazadan foydalanish ruxsatlarini belgilaysiz, biz "ALL PRIVILEGES" deb belgilaymiz va shu tariqa bu user bazadan foydalanishning to'liq boshqaruviga ega bo'ladi.

Baza nomi, baza foydalanuvchisi nomi va uning parolini o'zingizda vaqtincha saqlab oling.

3. Node.js App yaratish

cPanelning "Setup Node.js App" interfeysini ochamiz va "+ Create Application" tugmasini bosamiz.

Paydo bo'ladigan formani quyidagicha to'ldiramiz:

  1. Birinchi o'rinda loyihamizga mos keladigan Node.js versiyasini tanlaymiz (iloji boricha eng yangi versiya — 18 va undan yuqori).
  2. Application mode uchun "Production" ni tanlaymiz.
  3. So'ng loyiha root papkasini, ya'ni loyiha qaysi papkadan ishga tushishini tanlash kerak bo'ladi. Biz bu maydonga node.scroll.uz deb kiritdik, sababi, biz xuddi shu nomda subdomen yaratganimizda cPanel unga mos holda papka yaratadi. Yana ham soddaroq qilib tushuntirsak,
    • biz node.scroll.uz subdomenini yaratdik;
    • cPanel bizning user papkamiz: /home/scroll/ ichida "node.scroll.uz" nomli papka yaratdi
  4. Bu qismda biz loyihamiz aynan qaysi domenda ishlashi kerakligini tanlaymiz.
  5. Application startup file sifatida app.js deb yozamiz — bu bizning Express serverimiz ishga tushadigan fayl.
  6. Har ehtimolga qarshi log faylini ham sozlab qo'yamiz. Kerakli bo'limlar to'ldirilgach "Create" tugmasini bosamiz.

Node.js App yaratiladi va unda ahamiyat qaratilishi kerak bo'lgan qismlar mavjud:

  1. Ilovani to'xtatish va qayta ishga tushirish amallari mavjudligiga ahamiyat berib qo'yamiz.
  2. Yuqori qismda esa Virtual muhitga kirib, uni aktivlashtirish uchun tayyor buyruq kodi beriladi. Uning ustida sichqonchani bosish orqali saqlab olsangiz bo'ladi. Hozircha uni biror joyga saqlab olib turing — bu buyruq terminal orqali qo'lda buyruq bajarishingiz kerak bo'lganda ishlatiladi.

4. Loyihani hostingga yuklash

Bunda biz cPanel-ning "File Manager" interfeysidan foydalanamiz.

Loyiha papkasiga kirib olamiz va "Upload" tugmasini bosamiz
"Select File" tugmasini bosamiz va arxivlangan loyihamizni tanlab, yuklaymiz
Yuklash yakunlangach "Go back ..." havolasini bosish orqali "File Manager" interfeysiga qaytamiz
Yuklangan arxiv faylimizni tanlaymiz, "Extract"(arxivdan chiqarish) tugmasini bosamiz va tasdiqlaymiz
Yashirin fayllarimiz ham ko'rinishi uchun "Settings" tugmasini bosamiz va "Show Hidden Files" funksiyasini yoqib qo'yamiz
Shu tariqa loyihani kerakli papkaga yuklab oldik. Istasangiz arxiv(.zip) faylini o'chirib yuboraverasiz

5. Muhit o'zgaruvchilarini (environment variables) production uchun sozlash

Siz uchun loyihada tayyor .env.example fayli mavjud. Fayl nomi ustida ikki marta bosish orqali uning nomini qayta tahrirlashingiz mumkin. Uning nomini .env-ga o'zgartiring. So'ng, tahrirlash uchun uning ustida sichqoncha o'ng tugmasini bosing(context menu) va ochilgan menyudan "Edit" bo'limini tanlang.

Bu fayl tahrirlovchisini ochadi va biz production qismini qoldiramiz va quyidagicha tahrirlaymiz:

O'zgaruvchi nomiQiymati
NODE_ENVproduction
DB_HOSTlocalhost
DB_PORT3306
DB_USER(2-qadamda yaratilgan baza foydalanuvchisi, masalan scroll_tt-user)
DB_PASSWORD(2-qadamda belgilangan parol)
DB_NAME(2-qadamda yaratilgan baza nomi, masalan scroll_tictactoe)

"Save" tugmasini bosib o'zgarishlarni saqlaymiz.

6. Kutubxonalarni o'rnatish va bazani migratsiya qilish

cPanel-ning Terminal interfeysiga kiramiz va "Setup Node App" bo'limida o'zimizga saqlab olgan buyruqni joylaymiz va ishga tushiramiz.

So'ng esa npm install buyrug'ini ishga tushiramiz. Bu buyruq package.json faylidagi barcha kutubxonalarni to'g'ri Node.js virtual muhitida o'rnatadi:

Terminal
npm install

Shundan so'ng, npm run migrate buyrug'i orqali baza strukturasini (jadvallarini) yangi MySQL bazasiga migratsiya qilib olamiz:

Terminal
npm run migrate

Bu buyruq migrations/ papkasidagi fayllar asosida games va leaderboard jadvallarini yaratadi — xuddi local (SQLite) muhitda ishlatilgan fayllarning o'zi, hech qanday qo'lda yoziladigan SQL kodisiz.

7. Ilovani qayta ishga tushirish

Bizning barcha qilgan o'zgarishlarimiz amal qila boshlashi uchun Node.js App ni qayta ishga tushirish(restart) kerak bo'ladi. Buning uchun cPanel-ning "Setup Node.js App" interfeysini qayta ochib olamiz va ilovamizni qayta ishga tushirish tugmasini bosamiz:


Shu tariqa loyihani hosting serverga yuklash jarayoni yakunlanadi. Uni alohida, maxsus yaratilgan subdomenimiz orqali ochib, tekshirib ko'ramiz:

Namunaviy loyihani o'chirib, hostingni undan tozalash

Endi siz Node.js (Express.js) loyihasini hosting serverda ishga tushirib olishni bilasiz. Bu bilan sizni tabriklaymiz!

— Ammo, chindan ham bu hammasimi? — Yo'q. Siz nafaqat loyihani to'g'ri yuklashni, balki uni to'g'ri tartibda o'chirishni, hostingdan bu loyihani tozalab olishni ham tartibini bilishingiz lozim.

Sababi, Node.js App loyihalarini noto'g'ri o'chirish tufayli turli xil qiyinchiliklarga duch kelgan mijozlarimiz bo'lgan.

Node.js loyihasini o'chirishning to'g'ri tartibi:

Birinchi o'rinda Virtual Muhit o'chirilishi kerak

cPanel-ning "Setup Node.js App" interfeysini oching va ilova uchun "Stop App" tugmasini bosing

So'ng "Delete" (yoki "Destroy") tugmasini bosib, ilovani o'chiring

Keyingi amal bu subdomenni o'chirish
Node.js App ni o'chirish ham, domenni o'chirish ham loyiha papkasini o'chirmaydi. Shuning uchun eng oxirida "File Manager" orqali loyiha papkasini o'chiramiz.
Shu bilan birga, agar baza endi kerak bo'lmasa, "MySQL Databases" bo'limidan bazani va uning foydalanuvchisini ham o'chirib tashlashni unutmang