ServBay के साथ Hapi.js डेवलपमेंट पर्यावरण सेट करें
Hapi.js एक शक्तिशाली और लचीला Node.js फ्रेमवर्क है, जो एप्लिकेशन और API बनाने के लिए उपयुक्त है। ServBay Node.js डेवेलपर्स के लिए एक सुविधाजनक लोकल डेवलपमेंट वातावरण प्रदान करता है, जिसमें Node.js रनटाइम, विभिन्न डेटाबेस और आसानी से कॉन्फ़िगर किया जाने वाला वेब सर्वर शामिल होता है। यह लेख आपको बताएगा कि ServBay पर्यावरण में Hapi.js प्रोजेक्ट कैसे बनाएं, चलाएं और ServBay की वेबसाइट सुविधा के साथ ऐक्सेस करें, साथ ही दिखाएगा कि ServBay में निर्मित डेटाबेस से कैसे कनेक्ट करें।
Hapi.js क्या है?
Hapi.js, Walmart Labs द्वारा विकसित किया गया, एप्लिकेशन और सेवा बनाने के लिए एक शक्तिशाली, लचीला Node.js फ्रेमवर्क है। यह अपने शक्तिशाली प्लगइन सिस्टम, कॉन्फ़िगरेशन-ड्रिवेन दृष्टिकोण और इनबिल्ट सुरक्षा फीचर्स के लिए प्रसिद्ध है, जिससे डेवलपर्स हाई परफॉर्मेंस, मेन्टेनेबल वेब एप्लिकेशन और API को अधिक कुशलता से बना सकते हैं।
Hapi.js की मुख्य विशेषताएं और फायदे
- प्लगइन सिस्टम: Hapi.js का शक्तिशाली और उपयोग में आसान प्लगइन सिस्टम है, जिसमें फ्रेमवर्क की क्षमता को बढ़ाना या ऐप लॉजिक को फिर से इस्तेमाल करने योग्य मॉड्यूल में व्यवस्थित करना आसान है।
- कॉन्फ़िगरेशन-प्राथमिकता: Hapi.js कॉन्फ़िगरेशन-ड्रिवेन विकास का समर्थन करता है, जिससे आप रूटिंग, सत्यापन, कैशिंग आदि व्यवहार को डिटेल्ड सेटिंग्स के जरिए परिभाषित कर सकते हैं।
- इनपुट वेलिडेशन: इसमें शक्तिशाली Joi लाइब्रेरी इनबिल्ट है, जो डिक्लेरेटिव डेटा वेलिडेशन सक्षम करती है और डेटा की अखंडता व सुरक्षा सुनिश्चित करती है।
- समृद्ध ईकोसिस्टम: इसमें जीवंत कम्युनिटी और बहुत सारे ऑफिशियल व थर्ड-पार्टी प्लगइन्स हैं, जिसमें प्रमाणीकरण, अधिकृत, कैशिंग, लॉगिंग आदि जरूरतों को कवर किया गया है।
- सुरक्षा: फ्रेमवर्क में कई सुरक्षा फीचर्स बाय डिफ़ॉल्ट हैं, जैसे इनपुट वेलिडेशन और CORS नियंत्रण, जो आम वेब थ्रेट्स से सुरक्षा करते हैं।
- लॉगिंग और डिबगिंग: डिटेल्ड रिक्वेस्ट लाइफसाइकल लॉग्स और डिबगिंग टूल्स उपलब्ध हैं।
Hapi.js के साथ, डेवलपर्स मुख्यतः अपनी बिजनेस लॉजिक पर ध्यान केंद्रित कर सकते हैं तथा फ्रेमवर्क HTTP हैंडलिंग, रूटिंग, वेलिडेशन और सिक्योरिटी से जुड़ी जटिलताओं को संभालता है।
ServBay का उपयोग करके Hapi.js प्रोजेक्ट सेट करना
इस सेक्शन में आप सीखेंगे कि ServBay द्वारा दिए गए Node.js वातावरण में एक बेसिक Hapi.js प्रोजेक्ट कैसे बनाएं और चलाएं, व ServBay की वेबसाइट फीचर (रिवर्स प्रॉक्सी) के माध्यम से इसे ऐक्सेस करें।
आवश्यक पूर्व-शर्तें
शुरू करने से पहले कृपया सुनिश्चित करें:
- आपने macOS पर सफलतापूर्वक ServBay इंस्टॉल कर लिया है।
- आपने ServBay एप्लिकेशन में Node.js पैकेज को इनेबल (सक्रिय) कर लिया है। आप ServBay कंट्रोल पैनल के "पैकेज" टैब में Node.js को खोज और इनेबल कर सकते हैं।
- आप बेसिक टर्मिनल ऑपरेशन और Node.js के npm पैकेज मैनेजर से परिचित हैं।
Hapi.js प्रोजेक्ट बनाएं
प्रोजेक्ट डायरेक्टरी इनिशियलाइज करें
टर्मिनल खोलें, और ServBay द्वारा सुझाए गए वेब डायरेक्टरी
/Applications/ServBay/www
में जाएं। इस डायरेक्ट्री के अंदर एक नया प्रोजेक्ट फोल्डर बनाएं (जैसे,servbay-hapi-app
) और इसमें प्रवेश करें:bashcd /Applications/ServBay/www mkdir servbay-hapi-app cd servbay-hapi-app
1
2
3Node.js प्रोजेक्ट इनिशियलाइज करें
प्रोजेक्ट डायरेक्ट्री में, npm का उपयोग करते हुए एक नया Node.js प्रोजेक्ट इनिशियलाइज करें:
bashnpm init -y
1इससे आपके प्रोजेक्ट के रूट में
package.json
फ़ाइल तैयार हो जाएगी।Hapi.js डिपेंडेंसी इंस्टॉल करें
npm से Hapi.js की मुख्य लाइब्रेरी इंस्टॉल करें:
bashnpm install @hapi/hapi
1इसका परिणामस्वरूप
@hapi/hapi
आपके प्रोजेक्ट की डिपेंडेंसी में जुड़ जाएगा।ऐप्लिकेशन एंट्री फाइल बनाएं
प्रोजेक्ट के रूट में एक
server.js
नाम की फाइल बनाएं और इसमें नीचे दिया गया कोड जोड़ें, जो एक सिंपल Hapi.js सर्वर बनाएगा:javascript'use strict'; // सख्त मोड सक्षम करें const Hapi = require('@hapi/hapi'); const init = async () => { const server = Hapi.server({ port: process.env.PORT || 3000, // डिफॉल्ट 3000 पोर्ट सुने, या पर्यावरण वेरिएबल PORT से सेट हो host: 'localhost' // स्थानीय होस्ट पता सुने }); // एक सिंपल रूट डिफाइन करें server.route({ method: 'GET', path: '/', handler: (request, h) => { return 'Hello from Hapi.js powered by ServBay!'; } }); // सर्वर प्रारंभ करें await server.start(); console.log('Server running on %s', server.info.uri); }; // अनहैंडल्ड प्रॉमिस रिजेक्शन एरर को संभालें process.on('unhandledRejection', (err) => { console.error(err); process.exit(1); // प्रक्रिया समाप्त करें }); // init फ़ंक्शन को कॉल करें और ऐप चलाएं init();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33इस कोड से एक Hapi सर्वर बनेगा, जो
localhost
पर दिए गए पोर्ट (डिफॉल्ट 3000) पर सुनता है और/
रूट के लिए सिंपल GET हैंडलर डिफाइन करता है।
डेवलपमेंट मोड में जाएं और ServBay वेबसाइट सेटअप करें
डेवलपमेंट के दौरान, आप सीधे Node.js एप्लिकेशन चला सकते हैं और ServBay की रिवर्स प्रॉक्सी से उसे कस्टम डोमेन पर ब्राउज़र में एक्सेस कर सकते हैं, साथ ही ServBay के SSL सर्टिफिकेट का फायदा ले सकते हैं।
Hapi.js डेवलपमेंट सर्वर चलाएं
टर्मिनल में, यह सुनिश्चत करें कि आप
servbay-hapi-app
प्रोजेक्ट डायरेक्टरी में हैं, फिरnode
कमांड सेserver.js
फाइल चलाएं। ServBay की रिवर्स प्रॉक्सी के साथ काम करने के लिए, आप एक विशेष पोर्ट, जैसे8585
, निर्दिष्ट कर सकते हैं:bashPORT=8585 node server.js
1सर्वर स्टार्ट होकर URI दिखाएगा, जैसे
Server running on http://localhost:8585
। टर्मिनल विंडो खुला रखें—आपका सर्वर चालू है।ServBay में वेबसाइट (रिवर्स प्रॉक्सी) सेट करें
ServBay एप्लिकेशन खोलें। "वेबसाइट" टैब में जाएं और सबसे नीचे बाईं ओर "+" बटन पर क्लिक कर के नई वेबसाइट जोड़ें।
- नाम (Name):
ServBay Hapi Dev
(इच्छानुसार कुछ भी, केवल पहचान के लिए) - डोमेन (Domain):
servbay-hapi-dev.servbay.demo
(.servbay.demo
डोमेन उपयोग करने की सलाह दी जाती है—यह असली डोमेन से टकराए बिना ServBay के लोकल CA प्रमाणपत्र का लाभ देती है) - वेबसाइट प्रकार (Type):
रिवर्स प्रॉक्सी (Reverse Proxy)
- प्रॉक्सी टू (Proxy to):
- प्रोटोकॉल (Protocol):
http
- IP पता (IP Address):
127.0.0.1
(Node.js सर्वर लोकल होस्ट पर चल रहा है) - पोर्ट (Port):
8585
(वही पोर्ट जो आपनेnode server.js
करते समय सेट किया था)
- प्रोटोकॉल (Protocol):
"Add" पर क्लिक करके सेटअप पूरा करें। ServBay आपके वेब सर्वर (जैसे Caddy या Nginx) को अपने आप ऐसी तरह कॉन्फ़िगर कर देगा कि
https://servbay-hapi-dev.servbay.demo
की सभी रिक्वेस्टhttp://127.0.0.1:8585
पर प्रॉक्सी हो जाएं। ServBay.servbay.demo
डोमेन के लिए SSL प्रमाणपत्र भी अपने आप बनाएगा व भरोसा दिलाएगा (ServBay User CA के माध्यम से), ताकि आप लोकली HTTPS का सुरक्षित उपयोग कर सकें।यदि आपको अधिक डिटेल्ड ServBay वेबसाइट सेटअप के निर्देश चाहिए, तो देखें: ServBay वेबसाइट सेटअप डोक्युमेंटेशन।
- नाम (Name):
डेवलपमेंट में चल रहे Hapi.js ऐप को देखें
अपने वेब ब्राउज़र में कॉन्फ़िगर किया गया डोमेन
https://servbay-hapi-dev.servbay.demo
खोलें। आपको "Hello from Hapi.js powered by ServBay!" दिखाई देगा।अब,
server.js
फ़ाइल में किए गए कोई भी परिवर्तन (आमतौर परnodemon
जैसी टूल्स के साथ हॉट रीलोडिंग प्राप्त की जाती है) वे ब्राउज़र में ServBay की रिवर्स प्रॉक्सी से दिखेंगे।
प्रोडक्शन वर्शन डिप्लॉय करें (उदाहरण)
प्रोडक्शन वातावरण के लिए, आमतौर पर आपको बेहतर प्रोसेस प्रबंधन (जैसे PM2) और अलग कॉन्फ़िगरेशन की आवश्यकता होती है। यहां एक उदाहरण है, जो दूसरे पोर्ट पर चलने और ServBay रिवर्स प्रॉक्सी के माध्यम से कार्यान्वित होने को दिखाता है:
Hapi.js प्रोडक्शन सर्वर चलाएं
मान लीजिए आप अलग पोर्ट (जैसे
8586
) और प्रोडक्शन वातावरण सेटिंग्स के साथ ऐप चलाते हैं:bashPORT=8586 NODE_ENV=production node server.js
1(कृपया ध्यान दें: असली प्रोडक्शन में आप PM2 या अन्य तथ्यों का इस्तेमाल करेंगे, ताकि Node.js प्रोसेस स्थिरता व आटोमेटिक रिस्टार्टिंग के साथ चलें। ServBay भी PM2 इंटीग्रेशन सपोर्ट करता है।)
ServBay में प्रोडक्शन वेबसाइट (रिवर्स प्रॉक्सी) सेटअप करें
ServBay एप में "वेबसाइट" टैब पर जाएं और फिर "+" बटन से एक और वेबसाइट जोड़ें:
- नाम (Name):
ServBay Hapi Prod
- डोमेन (Domain):
servbay-hapi-prod.servbay.demo
- वेबसाइट प्रकार (Type):
रिवर्स प्रॉक्सी (Reverse Proxy)
- प्रॉक्सी टू (Proxy to):
- प्रोटोकॉल (Protocol):
http
- IP पता (IP Address):
127.0.0.1
- पोर्ट (Port):
8586
- प्रोटोकॉल (Protocol):
"Add" पर क्लिक करें।
- नाम (Name):
प्रोडक्शन वर्शन के Hapi.js ऐप को खोलें
ब्राउज़र में
https://servbay-hapi-prod.servbay.demo
खोलें। आउटपुट वही रहेगा (यदिNODE_ENV
के अनुसार कोड अलग व्यवहार नहीं करता) पर यह अलग पोर्ट व प्रोडक्शन कॉन्फ़िगरेशन से चलता होगा।
ServBay की वेबसाइट फीचर से, आप आसानी से कई लोकल डोमेन संभाल सकते हैं—चाहे वे डेवेलपमेंट हों या प्रोडक्शन वातावरण के लिए सिमुलेटेड—और उन्हें विभिन्न पोर्ट पर चल रहे Hapi.js (या अन्य Node.js) इंस्टैंस से मैप कर सकते हैं।
ServBay में बने डेटाबेस से कनेक्ट करें
ServBay में कई डेटाबेस सिस्टम इनबिल्ट और समर्थित हैं, जैसे MySQL, MariaDB, PostgreSQL, MongoDB और Redis। इस सेक्शन में हम दिखाएंगे कि इन्हें Hapi.js प्रोजेक्ट में कैसे कनेक्ट करें।
महत्वपूर्ण: डेटाबेस से कनेक्ट करने से पहले, सुनिश्चित करें कि ServBay एप के "पैकेज" टैब में आपने आवश्यक डेटाबेस पैकेज को इनेबल कर दिया है और संबंधित डेटाबेस सर्विस शुरू है। डेटाबेस रनिंग स्थिति आप ServBay कंट्रोल पैनल में देख सकते हैं।
ServBay के डिफ़ॉल्ट डेटाबेस यूजर व पासवर्ड हैं:
- MySQL/MariaDB: यूज़रनेम
root
, पासवर्डpassword
- PostgreSQL: यूज़रनेम
user
, पासवर्डpassword
- MongoDB: डिफ़ॉल्ट रूप से कोई प्रमाणन आवश्यक नहीं
- Redis: डिफ़ॉल्ट रूप से कोई प्रमाणन आवश्यक नहीं
नोट: सुरक्षा कारणों से, खासकर जब नॉन-लोकल वातावरण के लिए उपयोग करें, हमेशा सलाह दी जाती है कि आप ServBay में डेटाबेस के डिफ़ॉल्ट पासवर्ड बदल लें। आप MySQL, MariaDB, PostgreSQL के root पासवर्ड ServBay की सुविधा से आसानी से रीसेट कर सकते हैं। रिफर करें: डेटाबेस पासवर्ड रिसेट डॉक्यूमेंटेशन।
नीचे विभिन्न डेटाबेस को कनेक्ट करने के कोड स्निपेट्स हैं। पहले npm से संबंधित डेटाबेस क्लाइंट लाइब्रेरी इंस्टॉल करें।
MySQL से कनेक्ट करें
MySQL क्लाइंट लाइब्रेरी इंस्टॉल करें:
bashnpm install mysql2 # या mysql
1उदाहरण कोड (
mysql2
के साथ):javascriptconst mysql = require('mysql2'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', // ServBay का डिफ़ॉल्ट यूजरनेम password: 'password', // ServBay का डिफ़ॉल्ट पासवर्ड database: 'servbay_hapi_app' // कृपया अपने डेटाबेस नाम में बदलें }); connection.connect(err => { if (err) { console.error('MySQL से कनेक्ट करते समय त्रुटि: ' + err.stack); return; } console.log('MySQL से id के साथ कनेक्ट किया ' + connection.threadId); }); // आवश्यकता पड़ने पर कनेक्शन बंद करें // connection.end();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19MariaDB से कनेक्ट करें
MariaDB क्लाइंट लाइब्रेरी इंस्टॉल करें:
bashnpm install mariadb
1उदाहरण कोड:
javascriptconst mariadb = require('mariadb'); const pool = mariadb.createPool({ host: 'localhost', user: 'root', // ServBay का डिफ़ॉल्ट यूजरनेम password: 'password', // ServBay का डिफ़ॉल्ट पासवर्ड database: 'servbay_hapi_app', // कृपया अपने डेटाबेस नाम में बदलें connectionLimit: 5 // पूल साइज }); pool.getConnection() .then(conn => { console.log("MariaDB से कनेक्ट किया"); // conn.query(...) क्वेरी चलाएं conn.release(); // कनेक्शन को पूल में वापस करें }) .catch(err => { console.error("त्रुटि के कारण MariaDB से कनेक्ट नहीं हो सका: " + err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18PostgreSQL से कनेक्ट करें
PostgreSQL क्लाइंट लाइब्रेरी इंस्टॉल करें:
bashnpm install pg
1उदाहरण कोड:
javascriptconst { Pool } = require('pg'); const pool = new Pool({ user: 'user', // ServBay का डिफ़ॉल्ट यूज़र host: 'localhost', database: 'servbay_hapi_app', // कृपया अपने डेटाबेस नाम में बदलें password: 'password', // ServBay का डिफ़ॉल्ट पासवर्ड port: 5432, // PostgreSQL का डिफ़ॉल्ट पोर्ट }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL से कनेक्ट करते समय त्रुटि: ', err); return; } console.log('PostgreSQL से कनेक्ट किया'); client.query('SELECT NOW()', (err, res) => { done(); // क्लाइंट कनेक्शन रिलीज़ करें if (err) { console.error('क्वेरी निष्पादन में त्रुटि', err.stack); } else { console.log('PostgreSQL का वर्तमान समय:', res.rows[0].now); } }); }); // एप्लिकेशन समाप्ति पर पूल अपने आप बंद हो जाता है // pool.end();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27MongoDB से कनेक्ट करें
MongoDB क्लाइंट लाइब्रेरी इंस्टॉल करें:
bashnpm install mongoose # या mongodb
1उदाहरण कोड (
mongoose
के साथ):javascriptconst mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/servbay-hapi-app', { useNewUrlParser: true, useUnifiedTopology: true, // ServBay के MongoDB डिफ़ॉल्ट रूप से प्रमाणीकरण के बिना चलता है, अगर आपने प्रमाणीकरण ऑन किया है, तो नीचे के विकल्प जोड़ें // authSource: 'admin', // user: 'your_username', // pass: 'your_password', }) .then(() => console.log('MongoDB से कनेक्ट किया')) .catch(err => console.error('MongoDB कनेक्शन में त्रुटि:', err)); // एप्लिकेशन के जीवनकाल में मोंगूस कनेक्शन चालू रहता है // डिस्कनेक्ट करने के लिए: mongoose.connection.close();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15Redis से कनेक्ट करें
Redis क्लाइंट लाइब्रेरी इंस्टॉल करें:
bashnpm install redis
1उदाहरण कोड:
javascriptconst redis = require('redis'); // डिफॉल्ट कनेक्शन पैरामीटर: host: 'localhost', port: 6379 const client = redis.createClient(); client.on('error', function (err) { console.error('Redis त्रुटि: ' + err); }); client.on('connect', function () { console.log('Redis क्लाइंट कनेक्टेड'); }); // Redis सर्वर से कनेक्ट करें client.connect(); // redis v4+ के लिए connect() आवश्यक है // उदाहरण: key/value सेट और प्राप्त करें // async function exampleRedisUsage() { // await client.set('mykey', 'myvalue'); // const value = await client.get('mykey'); // console.log('Redis से प्राप्त मान:', value); // await client.del('mykey'); // } // exampleRedisUsage(); // एप्लिकेशन समाप्ति पर कनेक्शन बंद करें // client.quit();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
इन कोड स्निपेट्स को अपने Hapi.js एप्लिकेशन में इंटीग्रेट करके, आप ServBay द्वारा उपलब्ध विभिन्न डेटाबेस सेवाओं का उपयोग कर सकते हैं।
निष्कर्ष
ServBay के साथ, macOS पर Hapi.js डेवलपमेंट वातावरण बनाना बेहद कुशल और फास्ट हो जाता है। ServBay एक वन-स्टॉप समाधान प्रदान करता है, जिसमें आसानी से इंस्टॉल/मैनेज होने वाला Node.js रनटाइम, कई आउट-ऑफ-द-बॉक्स डेटाबेस, और वेबसाइट सुविधा (रिवर्स प्रॉक्सी और ऑटो-SSL) के जरिए लोकल ऐक्सेस सेटिंग्स को बड़ा आसान बनाया गया है। ऊपर बताए गए स्टेप्स को फॉलो करके, आप जल्दी से अपना Hapi.js प्रोजेक्ट स्टार्ट कर सकते हैं, और ServBay की शक्तिशाली क्षमताओं से अपने विकास कार्य को गति दे सकते हैं।