Namunaviy loyihani .zip formatida yuklab olish
node-sample.zip
Express.js framework-da qilingan Node.js loyihasini cPanel-ga deploy qilish bo'yicha namunaviy qo'llanma
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:
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.
Bu qo'llanmada ishlatilgan barcha qadamlar Express.js asosida qurilgan har qanday Node.js loyihasi uchun ham amal qiladi — faqat loyiha tarkibidagi fayl nomlari va baza sozlamalari farq qilishi mumkin.
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.
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.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.src/ — loyihaning asosiy kodi: server marshrutlari (routes/), o'yin mantig'i (gameLogic.js), baza ulanishi (db.js) va frontend statik fayllari (public/)..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.app.js — loyihaning kirish (entry point) fayli. Express serverini ishga tushiradi va cPanel/Passenger aynan shu faylni chaqiradi.knexfile.js — ma'lumotlar bazasi sozlamalari fayli. Bu faylda development (SQLite) va production (MySQL) uchun alohida konfiguratsiya mavjud.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:
node-sample.zip
Loyiha papkasini terminal orqali oching va:
Birinchi o'rinda qilinadigan ishlar tartibini rejalashtirib olamiz:
.zip formatidagi arxivini yuklaymizTayyor bo'lsangiz, boshlaymiz!
Biz loyiha uchun bizdagi hostingda node.scroll.uz subdomenini yaratib olamiz.
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.
scroll_node deb nomlaymiz (sizda scroll_ qismi hosting username dan olinadi va boshqacha bo'ladi)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 olasizuser bazadan foydalanishning to'liq boshqaruviga ega bo'ladi.Baza nomi, baza foydalanuvchisi nomi va uning parolini o'zingizda vaqtincha saqlab oling.
cPanelning "Setup Node.js App" interfeysini ochamiz va "+ Create Application" tugmasini bosamiz.
Paydo bo'ladigan formani quyidagicha to'ldiramiz:
node.scroll.uz deb kiritdik, sababi, biz xuddi shu nomda subdomen yaratganimizda cPanel unga mos holda papka yaratadi.
Yana ham soddaroq qilib tushuntirsak,
node.scroll.uz subdomenini yaratdik;/home/scroll/ ichida "node.scroll.uz" nomli papka yaratdiapp.js deb yozamiz — bu bizning Express serverimiz ishga tushadigan fayl.Node.js App yaratiladi va unda ahamiyat qaratilishi kerak bo'lgan qismlar mavjud:
Bunda biz cPanel-ning "File Manager" interfeysidan foydalanamiz.
Arxivni tayyorlashda node_modules, dev.sqlite3 va .env fayllarini arxiv ichiga qo'shmang — ular production serverda kerak emas yoki qaytadan yaratiladi.
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 nomi | Qiymati |
|---|---|
NODE_ENV | production |
DB_HOST | localhost |
DB_PORT | 3306 |
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) |
PORT o'zgaruvchisini qo'lda qo'shmang — buni Passenger avtomatik ravishda ilovaga taqdim etadi. Express ilovasi process.env.PORT orqali shu qiymatni o'qib oladi.
"Save" tugmasini bosib o'zgarishlarni saqlaymiz.
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:
Shundan so'ng, npm run migrate buyrug'i orqali baza strukturasini (jadvallarini) yangi MySQL bazasiga migratsiya qilib olamiz:
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.
Bu — Knex kabi query builder ishlatishning asosiy afzalligi: bir xil migratsiya fayllari ham local SQLite, ham production MySQL bazasida bir xil natija beradi.
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:
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.
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