PostgreSQL के साथ Cursor ऐप कैसे डिप्लॉय करें
PostgreSQL के साथ Cursor ऐप डिप्लॉय करने के लिए ऐप्लिकेशन को किसी होस्ट पर चलाएँ, एक डेटाबेस बनाएँ, उसे सर्वर-साइड DATABASE_URL के ज़रिए कनेक्ट करें और अपने स्कीमा माइग्रेशन लागू करें। Cursor का एजेंट यह सब Lizard CLI के ज़रिए Lizard पर कर सकता है। डिप्लॉयमेंट के बाद पब्लिक URL जाँचें और पक्का करें कि कोई रिकॉर्ड नए ब्राउज़र सेशन और रीडिप्लॉय के बाद भी बना रहता है।
यह गाइड ऐसे Next.js ऐप्लिकेशन के लिए है जिसे आप पहले से लोकल मशीन पर चलाते हैं। इसमें ऐप के लिए Lizard और डेटाबेस के लिए Managed Postgres इस्तेमाल होता है। आप Cursor के डेस्कटॉप एजेंट में प्रॉम्प्ट इस्तेमाल कर सकते हैं, उसका प्लान देख सकते हैं और उसे वही चरण चलाने दे सकते हैं जिन्हें आप मंज़ूरी दें।
लैपटॉप से बाहर क्या-क्या ले जाना होगा?
एक टास्क ऐप का उदाहरण लें: आप टास्क जोड़ते हैं, उसे पूरा मार्क करते हैं और बाद में वापस आते हैं। पेज पब्लिश करना डिप्लॉयमेंट का सिर्फ़ एक हिस्सा है। सर्वर को डेटाबेस तक पहुँचना चाहिए, टेबल मौजूद होनी चाहिए और नई रिक्वेस्ट को सेव हुआ डेटा पढ़ना चाहिए।
| आपके ऐप का हिस्सा | प्रोडक्शन में क्या चाहिए |
|---|---|
| Next.js पेज और सर्वर कोड | प्रोडक्शन बिल्ड और चालू Node.js सर्विस |
| टास्क, यूज़र और सेव किए गए दूसरे रिकॉर्ड | ऐसा PostgreSQL जिस तक डिप्लॉय किया गया सर्वर पहुँच सके |
| डेटाबेस क्रेडेंशियल और API की | सर्वर-साइड एनवायरनमेंट वेरिएबल |
| स्कीमा में बदलाव | प्रोडक्शन डेटाबेस के लिए माइग्रेशन का चरण |
| शेयर करने लायक लिंक | पब्लिक HTTPS पता |
आपका लोकल डेटाबेस और .env.local फ़ाइल GitHub पुश के साथ नहीं जाते। तय करें कि आपको कौन-सा डेटा रखना है। नए ऐप के लिए नया डेटाबेस ठीक है; मौजूदा डेटाबेस ले जाने के लिए एक्सपोर्ट और इम्पोर्ट का अलग प्लान चाहिए।
1. Cursor में प्रोडक्शन बिल्ड जाँचें
Cursor में ऐप्लिकेशन का फ़ोल्डर खोलें। डिप्लॉयमेंट सेटिंग्स बदलने से पहले एजेंट से प्रोजेक्ट जाँचने को कहें:
Prepare this Next.js app for deployment with PostgreSQL. Read its package.json,
lockfile, Next.js configuration, database client, and migration files.
Run the existing checks and production build using this project's package
manager. Identify the start command, port, required environment-variable
names, and production migration command. Do not print secret values.
Check whether any page queries the database during the build. Explain what
must be available at build time and what the app can read at request time.
Show any fixes needed before deploying.ऐसा हो सकता है कि डेवलपमेंट सर्वर चल रहा हो, लेकिन प्रोडक्शन बिल्ड फ़ेल हो रहा हो। Next.js के सामान्य Node.js डिप्लॉयमेंट में बिल्ड के लिए next build और सर्वर के लिए next start इस्तेमाल होता है। Static export और standalone आउटपुट के लिए लॉन्च सेटिंग्स अलग होती हैं। आपका ऐप जो कॉन्फ़िगरेशन इस्तेमाल करता है, उसके लिए Next.js डिप्लॉयमेंट गाइड फ़ॉलो करें।
लॉकफ़ाइल को सोर्स कंट्रोल में रखें। डेटाबेस क्रेडेंशियल उससे बाहर रखें। NEXT_PUBLIC_DATABASE_URL जैसा वेरिएबल सीक्रेट को ब्राउज़र तक पहुँचा देगा: Next.js बिल्ड के समय NEXT_PUBLIC_* मानों को क्लाइंट JavaScript में शामिल कर देता है। सिर्फ़ सर्वर पर पढ़ा जाने वाला DATABASE_URL इस्तेमाल करें। यह फ़र्क़ Next.js एनवायरनमेंट वेरिएबल डॉक्स में समझाया गया है।
2. Cursor को डिप्लॉयमेंट के मौजूदा निर्देश दें
Cursor का एजेंट टर्मिनल कमांड चला सकता है। अगर Lizard CLI पहले से उपलब्ध नहीं है, तो उसे Cursor के टर्मिनल में इंस्टॉल करें:
npm install -g @lizard-build/cliफिर एजेंट से यह कमांड चलाकर उसका आउटपुट पढ़ने को कहें:
lizard skills get core --jsonयह कमांड इंस्टॉल किए गए CLI से मेल खाने वाली गाइड लौटाती है। यह वर्कफ़्लो सीधे CLI इस्तेमाल करता है; आपको MCP सर्वर कॉन्फ़िगर करने की ज़रूरत नहीं है। अगर Lizard ऑथेंटिकेशन माँगे, तो आगे बढ़ने से पहले साइन-इन लिंक खोलकर साइन इन पूरा करें। नए अकाउंट को कुछ भी बनाने से पहले 7 दिन का Pro ट्रायल भी शुरू करना होगा (कार्ड ज़रूरी है, ट्रायल खत्म होने तक कोई शुल्क नहीं लगता)। तब तक lizard add Checkout लिंक के साथ HTTP 402 लौटाता है; lizard billing start वह लिंक खोलता है।
यह डिप्लॉयमेंट प्रॉम्प्ट Cursor में पेस्ट करें:
Deploy this app with Lizard and Managed Postgres. First read the full output
of `lizard skills get core --json`. Check the current project link and git
remote, then show me the target project, service, region, and resources.
Wait for approval before creating resources or changing a live service.
If this app has a GitHub remote, connect that repository without starting
the first build. If it has no GitHub remote, use local source upload.
Create or select the intended database. Set DATABASE_URL on the app service
to a reference to that database's DATABASE_PRIVATE_URL, using its actual name. Configure the app's other
required variables and its reviewed production migration command before
deploying. Keep secret values out of the chat and repository.
Use the build settings this project needs. Read build and runtime logs,
check the final deployment status, and return the public URL. Test the
app's database-backed action and report what passed or failed.कोडिंग एजेंट गाइड में सोर्स के दोनों रास्तों के लिए पूरी कमांड दी गई हैं। एजेंट के काम की समीक्षा करते समय यह गाइड खुली रखें।
3. पहले डिप्लॉय से पहले Postgres कनेक्ट करें
ऐसा हो सकता है कि सर्विस सफलतापूर्वक बिल्ड हो जाए और फिर डेटाबेस की पहली रिक्वेस्ट पर फ़ेल हो जाए। पहला बिल्ड या रिलीज़ शुरू करने से पहले कनेक्शन कॉन्फ़िगर करें।
तय किए गए लिंक्ड प्रोजेक्ट में web नाम की नई सर्विस के लिए, जब ऐप GitHub रिपॉज़िटरी के रूट में हो, कनेक्शन का चरण कुछ ऐसा दिखता है। YOUR_ORG/YOUR_REPO की जगह अपनी रिपॉज़िटरी लिखें:
lizard add --repo YOUR_ORG/YOUR_REPO --name web --no-deploy --json
lizard add postgres --json
lizard secrets set DATABASE_URL='${{postgres.DATABASE_PRIVATE_URL}}' --service web --jsonअगर कोई मौजूदा सर्विस या डेटाबेस ही आपका टारगेट है, तो उसे दोबारा इस्तेमाल करें। उदाहरण में माना गया है कि नए डेटाबेस का नाम postgres है। अगर Lizard कोई दूसरा नाम लौटाए, तो रेफ़रेंस में वही नाम इस्तेमाल करें। प्राइवेट URL उसी प्रोजेक्ट और रीजन की सर्विसेज़ से काम करता है; लोकल टूल्स DATABASE_URL इस्तेमाल करते हैं। सिंगल कोट्स आपके शेल को ${{...}} का मतलब निकालने से रोकते हैं।
--no-deploy से आपको डेटाबेस, माइग्रेशन कमांड और दूसरी ज़रूरी सेटिंग्स कॉन्फ़िगर करने का समय मिलता है। मोनोरिपो या किसी दूसरी ब्रांच के लिए डिप्लॉय करने से पहले ऐप की डायरेक्टरी और ब्रांच भी सेट करें। कनेक्शन की जानकारी के लिए Managed Postgres देखें।
अगर आपके पास GitHub रिमोट नहीं है, तो एजेंट एक खाली सर्विस बनाकर lizard up से लोकल सोर्स अपलोड कर सकता है। GitHub से जुड़ी सर्विस के लिए आगे के अपडेट उसके GitHub डिप्लॉयमेंट फ़्लो से ही करें: lizard up सर्विस को अपलोड किए गए सोर्स पर बदल देता है। ये दोनों रास्ते अलग-अलग विकल्प हैं।
4. वह स्कीमा लागू करें जिसकी आपके ऐप को ज़रूरत है
PostgreSQL बनाने से आपके ऐप की टेबल नहीं बनतीं। कनेक्शन एरर और गायब टेबल वाले एरर को ठीक करने के तरीके अलग-अलग हैं।
प्रोजेक्ट में पहले से मौजूद माइग्रेशन टूल इस्तेमाल करें। जिन Prisma प्रोजेक्ट्स में माइग्रेशन फ़ाइलें कमिट की गई हैं, उनमें prisma migrate deploy प्रोडक्शन में बाकी माइग्रेशन लागू करता है। Prisma इसे डिप्लॉयमेंट प्रोसेस के दौरान चलाने की सलाह देता है। यह Prisma Client जनरेट नहीं करता, इसलिए आपके प्रोजेक्ट को जो भी जनरेशन चरण चाहिए, वह बिल्ड में फिर भी होना चाहिए। यह सेटअप Prisma के डिप्लॉयमेंट डॉक्स में बताया गया है।
Cursor से कहें कि वह सर्विस के preDeployCommand में समीक्षा की हुई माइग्रेशन कमांड सेट करे। Lizard इसे तभी चलाता है जब सर्विस में startCommand भी सेट हो, जैसे npm run start; स्टार्ट कमांड सेट होने पर Lizard जनरेट किए गए Dockerfile से बिल्ड करता है, जब तक dockerfilePath सेट न हो। प्री-डिप्लॉय कमांड हर बार कंटेनर शुरू होने पर, हर रेप्लिका पर चलती है, इसलिए माइग्रेशन ऐसा होना चाहिए जिसे एक से ज़्यादा बार और एक साथ चलाना सुरक्षित हो। पक्का करें कि बिल्ड हुई इमेज में माइग्रेशन फ़ाइलें, ज़रूरी CLI पैकेज और उसका कॉन्फ़िगरेशन मौजूद हों। अगर माइग्रेशन को डेटाबेस कनेक्शन चाहिए, तो कमांड चलने के समय वह कनेक्शन उपलब्ध होना चाहिए। जिस डेटा को आपको रखना है, उस पर डेवलपमेंट वाली रीसेट कमांड न चलाएँ।
Next.js पेज बिल्ड करते समय भी डेटा पढ़ सकता है। चालू सर्वर के लिए कॉन्फ़िगर किया गया डेटाबेस कनेक्शन यह साबित नहीं करता कि बिल्ड के समय की क्वेरी भी सफल होगी। Cursor से कहें कि वह जाँचे कि हर क्वेरी कब चलती है और पेज के लिए ज़रूरी रेंडरिंग तरीका अपनाए। रनटाइम और बिल्ड के समय का व्यवहार Next.js सेल्फ़-होस्टिंग गाइड में बताया गया है।
5. पब्लिक URL पर सेव हुआ डेटा जाँचें
डिप्लॉयमेंट का नतीजा पढ़ें और उसका HTTPS URL खोलें। सिर्फ़ होम पेज लोड होने पर न रुकें, बल्कि वह फ़ीचर टेस्ट करें जिसे Postgres चाहिए।
टास्क ऐप के लिए यह क्रम अपनाएँ:
- ऐसे नाम से टास्क बनाएँ जिसे आप पहचान सकें, जैसे
deployment-check-0909। - पेज रीलोड करें और पक्का करें कि टास्क दिख रहा है।
- एक प्राइवेट ब्राउज़र विंडो खोलें, ज़रूरत हो तो उसी अकाउंट में साइन इन करें और टास्क फिर से जाँचें। इससे उन ऐप्स का पता चलता है जो डेटा सिर्फ़ ब्राउज़र स्टोरेज में सेव करते हैं।
- उसी सोर्स रास्ते से कोड में एक छोटा बदलाव डिप्लॉय करें। पक्का करें कि टास्क अब भी मौजूद है और आप उसे अपडेट कर सकते हैं।
यह जाँच अपने ऐप के हिसाब से बदलें: बुकिंग, नोट या फ़ॉर्म सबमिशन से भी यही मक़सद पूरा हो सकता है। टेस्ट डेटा इस्तेमाल करें, और यूज़र्स को बुलाने से पहले जाँच लें कि हर अकाउंट सिर्फ़ अपने रिकॉर्ड देख सकता है।
अगर कोई जाँच फ़ेल हो, तो Cursor को फ़ेल हुआ ऐक्शन बताएँ और उससे सर्विस के लॉग्स देखने को कहें:
lizard logs --build --service web --json
lizard logs --service web --json
lizard ps --jsonपहली कमांड बिल्ड लॉग्स पढ़ती है; दूसरी ऐप्लिकेशन लॉग्स। फ़िल्टर और समस्या के हल के लिए लॉग्स रेफ़रेंस खुला रखें।
Cursor ऐप लोकल मशीन पर चलता है, लेकिन डिप्लॉयमेंट के बाद फ़ेल क्यों होता है?
डिप्लॉय किए गए ऐप में वेरिएबल अलग हो सकते हैं, डेटाबेस नया हो सकता है या स्टार्ट कमांड अलग हो सकती है। लक्षण के हिसाब से सही जाँच चुनें:
| लक्षण | क्या जाँचें |
|---|---|
| पेज लोड होता है, लेकिन सेव करना फ़ेल होता है | ऐप सर्विस का डेटाबेस रेफ़रेंस, डेटाबेस तैयार है या नहीं, और रिक्वेस्ट लॉग्स |
| Postgres बताता है कि टेबल गायब है | प्रोडक्शन माइग्रेशन इसी डेटाबेस पर चला या नहीं |
| बिल्ड किसी डेटाबेस क्वेरी पर फ़ेल होता है | वह पेज बिल्ड के दौरान डेटा पढ़ता है या नहीं, और उस समय डेटाबेस तक पहुँच पाता है या नहीं |
| सर्विस कभी हेल्दी नहीं होती | प्रोडक्शन स्टार्ट कमांड, 0.0.0.0 पर सुनने वाला लिसनर, और ऐप व सर्विस के पोर्ट एक जैसे हैं या नहीं |
ब्राउज़र अब भी localhost को कॉल करता है | हार्डकोड किए गए URL या पुराना NEXT_PUBLIC_* मान; पब्लिक वेरिएबल बदलने पर रीबिल्ड ज़रूरी है |
| दूसरे ब्राउज़र में रिकॉर्ड गायब हो जाते हैं | सिर्फ़ ब्राउज़र वाला स्टोरेज, मॉक डेटा, या कोई दूसरा अकाउंट या डेटाबेस |
एजेंट से कहें कि लॉग्स में दिख रही वजह को ठीक करे। एक ही कॉन्फ़िगरेशन के साथ बार-बार डिप्लॉय करने से गायब वेरिएबल या टेबल ठीक नहीं होगी।
ऐप और Postgres होस्ट करने में कितना खर्च आता है?
Lizard Pro की कीमत टैक्स सहित $19 प्रति माह है और इसमें हर महीने $19 का उपयोग शामिल है। इससे ज़्यादा उपयोग का बिल प्रकाशित रेट पर pay as you go आधार पर बनता है, और जैसे-जैसे उपयोग बढ़ता है, शुल्क आपके कार्ड से कटता है। नए अकाउंट 7 दिन के ट्रायल से शुरू होते हैं, जिसके लिए कार्ड ज़रूरी है और जिसमें $5 का उपयोग शामिल है; ट्रायल खत्म होने तक कोई शुल्क नहीं लगता। मौजूदा रेट देखें।
ऐप्लिकेशन और Managed Postgres, दोनों रिसोर्स इस्तेमाल करते हैं। Lizard सिर्फ़ सक्रिय रिसोर्स का बिल बनाता है, और प्लान की शर्तों के तहत CPU, मेमोरी, स्टोरेज और एग्रेस का शुल्क लेता है। ऐप रोकने से अलग से चल रहा डेटाबेस नहीं रुकता, और रखे गए वॉल्यूम स्टोरेज पर शुल्क लगता रह सकता है।
जितने लोड की उम्मीद है, उस पर ऐप और डेटाबेस दोनों को साथ मापें। ट्रायल का $5 का उपयोग डिप्लॉयमेंट टेस्ट करने के लिए है। यह खत्म होने पर चल रहे रिसोर्स तब तक पॉज़ रहते हैं जब तक आप Pro शुरू नहीं करते; आपका डेटा सुरक्षित रहता है। ट्रायल न तो मुफ़्त होस्टिंग का वादा है, न ही हर ऐप के लिए किसी तय मासिक खर्च का।
डिप्लॉय करने से पहले के सवाल
क्या मुझे Cursor से अपना ऐप एक्सपोर्ट करना होगा?
लोकल प्रोजेक्ट में आपकी सोर्स फ़ाइलें पहले से प्रोजेक्ट फ़ोल्डर में हैं। उस कोड को कनेक्ट की गई GitHub रिपॉज़िटरी या लोकल अपलोड के ज़रिए डिप्लॉय करें। जाँच लें कि सोर्स में ऐप को बिल्ड करने और चलाने के लिए ज़रूरी सभी फ़ाइलें हैं।
क्या Cursor सब्सक्रिप्शन से Lizard होस्टिंग का भुगतान होता है?
नहीं। Cursor और Lizard अलग-अलग सर्विसेज़ हैं। इस वर्कफ़्लो में Cursor से Lizard CLI चलाया जाता है; डिप्लॉय किए गए ऐप और डेटाबेस का भुगतान Lizard अकाउंट से उसके अपने प्लान के तहत होता है।
क्या मैं अपना मौजूदा PostgreSQL डेटाबेस रख सकता हूँ?
हाँ, अगर डिप्लॉय किया गया सर्वर उस तक पहुँच सकता है और उसकी कनेक्शन सेटिंग्स डेटाबेस प्रोवाइडर की शर्तें पूरी करती हैं। सर्वर-साइड कनेक्शन स्ट्रिंग कॉन्फ़िगर करें, नेटवर्क एक्सेस जाँचें और ऐप्लिकेशन के वही टेस्ट चलाएँ। सिर्फ़ इस वर्कफ़्लो के लिए नया डेटाबेस बनाना ज़रूरी नहीं है।
क्या डिप्लॉय करने से पहले कस्टम डोमेन चाहिए?
शुरुआत में Lizard आपकी वेब सर्विस के लिए जो पब्लिक पता देता है, उसे जाँचें। वह काम करने लगे, तो अपना होस्टनेम कनेक्ट करने और DNS रिकॉर्ड वेरिफ़ाई करने के लिए कस्टम डोमेन के निर्देश फ़ॉलो करें। अगर आपका ऐप लॉगिन कॉलबैक इस्तेमाल करता है, तो वे URL भी अपडेट करें।
Cursor में अपना प्रोजेक्ट खोलें और ऊपर दिए गए तैयारी वाले प्रॉम्प्ट से शुरू करें। डिप्लॉयमेंट का सटीक क्रम जानने के लिए कोडिंग एजेंट गाइड देखें।
AI के साथ बिल्ड करें। Lizard के साथ शिप करें।
लाइव जाने के लिए आपको प्लेटफ़ॉर्म टीम की ज़रूरत नहीं है। आपका पूरा क्लाउड, बस एक CLI कमांड की दूरी पर।
- सर्विसेज़
- —
- ऐडऑन
- —
- डिप्लॉयमेंट्स
- —
- सैंडबॉक्स स्टार्ट्स
- —