macOS पर ServBay के साथ लोकल NestJS प्रोजेक्ट बनाएं और चलाएं
NestJS एक प्रोग्रेसिव Node.js फ्रेमवर्क है जो कुशल, स्केलेबल सर्वर-साइड एप्लिकेशन बनाने के लिए बनाया गया है। इसे TypeScript में लिखा गया है और इसमें Angular से प्रेरित मॉड्यूलर आर्किटेक्चर और डिपेंडेंसी इंजेक्शन (DI) पैटर्न का उपयोग होता है। NestJS डेवलपर्स को मजबूत, मेन्टेनेबल, टेस्टेबल और हाईली डिकपल्ड जटिल एप्लिकेशन बनाने के लिए आवश्यक सभी टूल और फीचर प्रदान करता है।
NestJS के मुख्य फ़ीचर और लाभ
- मॉड्यूलर आर्किटेक्चर: कोड को मॉड्यूल्स में ऑर्गनाइज़ करके एप्लिकेशन को अधिक संगठित, समझने में आसान और मेंटेन करने योग्य बनाता है।
- डिपेंडेंसी इंजेक्शन: आसान और शक्तिशाली DI सिस्टम देती है, जिससे कोड की टेस्टेबिलिटी और मेंटेनेबिलिटी काफी बढ़ जाती है।
- TypeScript का उपयोग: TypeScript की स्टैटिक टाइपिंग, इंटरफेस और आधुनिक JavaScript की खूबियाँ लेकर आती है, जिससे डेवलपमेंट एफिशिएंसी और कोड क्वालिटी बढ़ती है, रनटाइम एरर्स कम होते हैं।
- रिच डेकोरेटर्स: कंट्रोलर, सर्विस, और मॉड्यूल्स को क्लीन और डिक्लेरेटिव तरीके से डिफाइन करने के लिए डेकोरेटर्स का इस्तेमाल।
- मजबूत इकोसिस्टम: एक्टिव कम्युनिटी और ढेरों थर्ड-पार्टी मॉड्यूल व प्लगइन्स — आसानी से TypeORM, Mongoose, GraphQL, WebSockets, कैश, वेलिडेशन आदि को जोड़ सकते हैं।
- स्टैंडर्ड बेस्ड: Express या Fastify जैसे लोकप्रिय HTTP सर्वर फ्रेमवर्क्स के ऊपर बना है, जिससे बेहतरीन कम्पैटिबिलिटी और परफॉर्मेंस मिलती है।
NestJS के साथ, डेवलपर्स backend के बेस्ट प्रैक्टिसेज़ (जैसे SOLID प्रिंसिपल्स, डिजाइन पैटर्न्स) को अपना सकते हैं और आसानी से उच्च-प्रदर्शन, एंटरप्राइज़-ग्रेड Web ऐप्स, API सर्विसेस, या माइक्रोसर्विसेस का निर्माण कर सकते हैं।
ServBay का उपयोग करके NestJS प्रोजेक्ट बनाना और चलाना
ServBay macOS यूज़र्स के लिए एक पावरफुल और इंटीग्रेटेड लोकल वेब डेवलपमेंट एनवायरनमेंट है, जिसमें विभिन्न वर्जन्स के Node.js, सामान्य डाटाबेस, और वेब सर्वर्स बिल्ट-इन होते हैं। इस गाइड में हम ServBay के Node.js एनवायरनमेंट और “वेबसाइट” फीचर का इस्तेमाल करेंगे — इसमें रिवर्स प्रॉक्सी कॉन्फ़िगरेशन की मदद से आप अपने लोकल NestJS ऐप को कस्टम डोमेन पर एक्सेस कर सकते हैं।
आवश्यक शर्तें
शुरू करने से पहले, कृपया यह सुनिश्चित करें:
- ServBay इंस्टॉल होना चाहिए: आपने अपने macOS पर ServBay सफलतापूर्वक इंस्टॉल कर लिया है।
- Node.js पैकेज इनेबल करें: ServBay कंट्रोल पैनल के 'Packages' टैब से आवश्यक Node.js वर्शन सेलेक्ट कर और इंस्टॉल कर लें। यदि Node.js अब तक इनेबल नहीं किया है, तो ServBay Node.js गाइड देखें।
NestJS प्रोजेक्ट बनाएँ
NestJS CLI को ग्लोबली इंस्टॉल करें
टर्मिनल खोलें और npm का उपयोग करके NestJS CLI को ग्लोबली इंस्टॉल करें। NestJS CLI आपके एप्लिकेशन को इनिशियलाइज़, डेवलप और मेन्टेन करने के लिए पावरफुल टूल्स प्रदान करता है।
bashnpm install -g @nestjs/cli1प्रोजेक्ट इनिशियलाइज़ करें
ServBay के रेकमेंडेड वेब साइट रूट
/Applications/ServBay/wwwडायरेक्ट्री में जाएं। यहीं पर प्रोजेक्ट बनाना आगे की वेबसाइट कॉन्फ़िगरेशन के लिए सुविधाजनक रहता है। फिर CLI का उपयोग करके नया प्रोजेक्ट बनाएं:bashcd /Applications/ServBay/www nest new servbay-nest-app1
2इस कमांड से प्रोजेक्ट निर्माण प्रक्रिया शुरू होगी — साथ ही आपको पैकेज मैनेजर (npm, yarn या pnpm) चुनने के लिए कहा जाएगा। विशेष रूप से npm चुनना बेहतर रहता है। प्रोजेक्ट
/Applications/ServBay/www/servbay-nest-appमें बनेगा।प्रोजेक्ट डिपेंडेंसी इंस्टॉल करें
नए प्रोजेक्ट फोल्डर में जाएं और डिपेंडेंसीज़ इंस्टॉल करें:
bashcd servbay-nest-app npm install1
2nest newपर ‘npm install’ ऑटो-रन हो जाता है, लेकिन दोबारा चलाने से सुनिश्चित होता है कि सभी डिपेंडेंसियाँ सही ढंग से इंस्टॉल या अपडेट हुई हैं।
NestJS प्रोजेक्ट आउटपुट कंटेंट बदलना (वैकल्पिक)
प्रोजेक्ट और ServBay सेटअप काम कर रहा है या नहीं, यह देखने के लिए आप डिफ़ॉल्ट रूट का रेस्पॉन्स बदल सकते हैं।
src/app.controller.tsमें बदलाव करेंअपने पसंदीदा कोड एडिटर में
src/app.controller.tsखोलें। इसका कंटेंट कुछ ऐसा कर दें कि जब रूट (/) पर अनुरोध आए तो "Hello ServBay!" रिटर्न हो —typescriptimport { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; // मान लें AppService उपयोग में है @Controller() export class AppController { constructor(private readonly appService: AppService) {} // अगर AppService है @Get() getHello(): string { // return this.appService.getHello(); // AppService का उपयोग हो तो return 'Hello ServBay!'; // डायरेक्ट स्ट्रिंग वापस } }1
2
3
4
5
6
7
8
9
10
11
12
13यह कोड एक सिंपल कंट्रोलर को डिफाइन करता है, जो HTTP GET रिक्वेस्ट पर
/के लिए "Hello ServBay!" रिटर्न करेगा।
डेवलपमेंट मोड में NestJS चलाएँ व ServBay से एक्सेस करें
NestJS इनबिल्ट सर्वर के साथ एक पोर्ट पर रन करता है। ServBay का “वेबसाइट” फीचर इस्तेमाल करके, आप एक रिवर्स प्रॉक्सी बना सकते हैं जो आपके कस्टम डोमेन को रनिंग NestJS प्रोसेस के पोर्ट से कनेक्ट करता है।
डेवलपमेंट सर्वर शुरू करें
प्रोजेक्ट फोल्डर में रहें और यह कमांड चलाएँ जिससे, उदाहरण स्वरूप, पोर्ट
8585पर ऑटो-रिलोड के साथ सर्वर रन हो जाएगा।bashcd /Applications/ServBay/www/servbay-nest-app PORT=8585 npm run start:dev1
2npm run start:devएक predefined NestJS script है। यहts-nodeका उपयोग करके TypeScript सर्वर चलाता है, और कोड बदलने पर ऑटो-रीस्टार्ट करता है। सर्वरlocalhost:8585पर चलेगा।ServBay वेबसाइट रिवर्स प्रॉक्सी कॉन्फ़िगर करें
ServBay कंट्रोल पैनल खोलें, 'Websites' टैब चुनें। नया वेबसाइट जोड़ने के लिए
+बटन दबाएँ —- Name: कोई ऐसा नाम दें जो पहचानने में आसान हो — जैसे
My first NestJS dev site। - Domains: उदाहरण के लिए,
servbay-nest-test.dev। ServBay.devटॉप-लेवल डोमेन को अपने आप लोकल होस्ट से लिंक कर देगा; आपको hosts फाइल बदलने की जरूरत नहीं। - Type:
Reverse Proxyचुनें। - IP Address: आमतौर पर
127.0.0.1(लोकल एड्रेस)। - Port: NestJS ऐप का पोर्ट — यहां,
8585।
सब सेट करने के बाद सेव कर दें। ServBay आपके लिए वेब सर्वर (Caddy या Nginx) की सेटिंग्स ऑटोमेटिकली अपडेट कर देगा। वेबसाइट सेटअप के बारे में अधिक जानकारी के लिए देखें — ServBay वेबसाइट जोड़ें।
- Name: कोई ऐसा नाम दें जो पहचानने में आसान हो — जैसे
डेवलपमेंट वेबसाइट एक्सेस करें
अपने ब्राउज़र में
https://servbay-nest-test.devखोलें।ध्यान दें:
- ServBay लोकल वेबसाइट्स के लिए (ServBay User CA द्वारा साइन किए गए) फ्री SSL सर्टिफिकेट देता है — आप https के साथ सिक्योर एक्सेस करेंगे। यदि कोई सर्टिफिकेट चेतावनी आती है, तो आपको ServBay User CA को ट्रस्ट करना पड़ सकता है। अधिक जानें: SSL से वेबसाइट सेफ करें।
- देखें कि आपका NestJS डेवलपमेंट सर्वर (
PORT=8585 npm run start:dev) चल रहा है, नहीं तो डोमेन एक्सेस नहीं होगा।
प्रोडक्शन वर्शन तैनात करें व ServBay से एक्सेस करें
प्रोडक्शन पर डिप्लॉय (चाहे लोकल भी क्यों न हो) से पहले आम तौर पर आपको NestJS प्रोजेक्ट को build करना होता है।
प्रोडक्शन बिल्ड बनाएँ
प्रोजेक्ट रूट पर यह कमांड चलाएँ —
bashcd /Applications/ServBay/www/servbay-nest-app npm run build1
2यह TypeScript कोड को
distफोल्डर में JavaScript में कंपाइल कर देगा।प्रोडक्शन सर्वर चलाएँ
build होने के बाद निचे वाला कमांड रन करें। यहाँ
8586पोर्ट औरNODE_ENV=productionध्यान रखें।bashcd /Applications/ServBay/www/servbay-nest-app PORT=8586 NODE_ENV=production node dist/main.js1
2प्रोडक्शन में ऑटो-रिलोड और हॉट रीलोड नहीं होता।
ServBay वेबसाइट रिवर्स प्रॉक्सी कॉन्फ़िगर करें
अब 'Websites' टैब में नया वेबसाइट जोड़ें/एडिट करें —
- Name: उदाहरण स्वरूप
My first NestJS production site। - Domains: जैसे
servbay-nest-test.prod। - Type:
Reverse Proxy। - IP Address:
127.0.0.1। - Port:
8586(प्रोडक्शन सर्वर का पोर्ट)।
सेव कर दें।
- Name: उदाहरण स्वरूप
प्रोडक्शन वेबसाइट एक्सेस करें
ब्राउज़र में
https://servbay-nest-test.prodपर जाएं और अपने प्रोडक्शन वर्शन को देखें। यहाँ भी ServBay SSL-एन्क्रिप्शन उपलब्ध कराता है।
ServBay द्वारा प्रदान किए गए डाटाबेस से कनेक्ट करें
ServBay बिल्ट-इन या सपोर्टेड डाटाबेस सिस्टम्स — MariaDB (MySQL संगत), PostgreSQL, MongoDB, और Redis — के साथ आता है। NestJS ऐप डेवलप करते समय आप इनमें से किसी से भी कनेक्ट कर सकते हैं।
महत्वपूर्ण: डाटाबेस से कनेक्ट करने से पहले ServBay कंट्रोल पैनल के 'Packages' टैब में प्रासंगिक डाटाबेस पैकेज चालू करना न भूलें। डिफ़ॉल्ट पोर्ट, यूज़रनेम और पासवर्ड की जानकारी ServBay कंट्रोल पैनल या डॉक्यूमेंटेशन में मिल जाएगी। प्रोडक्शन के लिए डिफ़ॉल्ट क्रेडेंशियल अवश्य बदलें और एक डेडिकेटेड यूज़र बनाएं।
नीचे दिए उदाहरण कोड सामान्यतः आपके एप्लिकेशन के मुख्य मॉड्यूल (AppModule) या एक अलग डाटाबेस मॉड्यूल में रखे जाते हैं।
MongoDB कनेक्शन
@nestjs/mongooseका उपयोग करें। पहले आवश्यक पैकेज इंस्टॉल करें:bashnpm install @nestjs/mongoose mongoose1फिर अपने NestJS मॉड्यूल में
MongooseModuleकॉन्फिगर करें:typescriptimport { Module } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; // ... अन्य इंपोर्ट्स @Module({ imports: [ MongooseModule.forRoot('mongodb://localhost:27017/servbay-nest-app'), // डिफ़ॉल्ट पोर्ट 27017 // ... अन्य मॉड्यूल्स ], controllers: [], // ... providers: [], // ... }) export class AppModule {}1
2
3
4
5
6
7
8
9
10
11
12
13ServBay का MongoDB कनेक्शन स्ट्रिंग आमतौर पर
mongodb://localhost:27017/ही होती है। अपने प्रोजेक्ट के लिए MongoDB क्लाइंट (Compass याmongosh) सेservbay-nest-appडाटाबेस क्रिएट करें।Redis कनेक्शन
@nestjs/redisसे कनेक्ट करें। पहले जरूरी पैकेज इंस्टॉल करें:bashnpm install @nestjs/redis redis @types/redis1फिर अपने NestJS मॉड्यूल में
RedisModuleकॉन्फिगर करें:typescriptimport { Module } from '@nestjs/common'; import { RedisModule } from '@nestjs/redis'; // ... अन्य इंपोर्ट्स @Module({ imports: [ RedisModule.forRoot({ url: 'redis://localhost:6379', // डिफ़ॉल्ट पोर्ट 6379 }), // ... अन्य मॉड्यूल्स ], controllers: [], // ... providers: [], // ... }) export class AppModule {}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15ServBay में डिफ़ॉल्ट Redis एड्रेस
localhost:6379ही रहेगा।MariaDB (MySQL संगत) कनेक्शन
@nestjs/typeormसे कनेक्ट करें।bashnpm install @nestjs/typeorm mysql2 typeorm1फिर मॉड्यूल में:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... अन्य इंपोर्ट्स @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mariadb', // या 'mysql' host: 'localhost', port: 3306, // डिफ़ॉल्ट पोर्ट 3306 username: 'root', // ServBay MariaDB/MySQL डिफ़ॉल्ट root password: 'password', // डिफ़ॉल्ट root पासवर्ड database: 'servbay_nest_app', // पहले यह डाटाबेस बना लें entities: [], // आपकी entity क्लासेज़ synchronize: true, // डेव में true OK, प्रोड में सावधानी }), // ... अन्य मॉड्यूल्स ], controllers: [], // ... providers: [], // ... }) export class AppModule {}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22नोट: MariaDB/MySQL में root पासवर्ड डिफ़ॉल्ट ‘password’ है। TablePlus, DBeaver या MySQL CLI से
localhost:3306पर लॉगिन करें औरservbay_nest_appडाटाबेस बनाएं। बेहतर सुरक्षा के लिए root पासवर्ड बदलें व एक कस्टम मिनिमल यूज़र बनाएं।PostgreSQL कनेक्शन
@nestjs/typeormका उपयोग करें।bashnpm install @nestjs/typeorm pg typeorm1फिर मॉड्यूल में:
typescriptimport { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // ... अन्य इंपोर्ट्स @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, // डिफ़ॉल्ट पोर्ट 5432 username: 'servbay', // सर्वबेस PostgreSQL डिफ़ॉल्ट यूज़र उदाहरण, कृपया सत्यापित करें password: 'password', // डिफ़ॉल्ट पासवर्ड उदाहरण, कृपया सत्यापित करें database: 'servbay_nest_app', // पहले यह डाटाबेस बनाएं entities: [], // आपकी entities synchronize: true, // डेव true, प्रोड false रखें }), // ... अन्य मॉड्यूल्स ], controllers: [], // ... providers: [], // ... }) export class AppModule {}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22नोट: PostgreSQL डिफ़ॉल्ट यूज़र और पासवर्ड वर्शन अनुसार अलग हो सकते हैं। आमतौर पर
servbayयाpostgresहो सकता है। कंट्रोल पैनल या documentation में सही जानकारी देखें।localhost:5432से PostgreSQL क्लाइंट से लॉगिन करservbay_nest_appडाटाबेस और आवश्यक यूज़र बना लें। प्रोडक्शन में डिफ़ॉल्ट क्रेडेंशियल्स बदलना जरूरी है।
संक्षेप
इस गाइड के साथ, आपने सीखा कि ServBay के साथ macOS पर NestJS प्रोजेक्ट को कितनी जल्दी और आसानी से बनाएं, चलाएं और उसे एक्सेस करें। ServBay का इंटीग्रेटेड Node.js एनवायरनमेंट, सुविधा जनक वेबसाइट (रिवर्स प्रॉक्सी सहित), और कई डाटाबेस सपोर्ट लोकल डेवेलपमेंट व टेस्टिंग को आसान बना देता है। आप डेवलपमेंट और प्रोडक्शन के बीच तेजी से स्विच कर सकते हैं, कस्टम डोमेन व HTTPS सिक्योरिटी का लाभ ले सकते हैं, और साथ ही विभिन्न डाटाबेस कंट्रोल के साथ अपनी ऐप को और भी मजबूत बना सकते हैं।
