परिचय: VPS पर डेवलपमेंट से प्रोडक्शन तक
\n\nVPS (वर्चुअल प्राइवेट सर्वर) पर TypeScript एप्लिकेशन का डिप्लॉयमेंट किसी भी वेब प्रोजेक्ट के जीवनचक्र का एक महत्वपूर्ण चरण है। शेयर्ड-होस्टिंग पर सरल प्लेसमेंट के विपरीत, VPS एनवायरनमेंट पर पूर्ण नियंत्रण देता है, जो Node.js, Express, NestJS या Next.js के साथ काम करने वाले आधुनिक TypeScript-एप्लिकेशन के लिए महत्वपूर्ण है।
\n\nइस लेख में, हम डिप्लॉयमेंट की उन्नत प्रक्रिया पर विचार करेंगे: TypeScript कंपाइलेशन से लेकर ऑटोमैटिक रीस्टार्ट, लोड बैलेंसिंग और मॉनिटरिंग के साथ प्रोडक्शन-एनवायरनमेंट सेटअप तक। आप सीखेंगे कि कच्चे कोड को स्थिर रूप से काम करने वाली सेवा में कैसे बदला जाए।
\n\n1. TypeScript एप्लिकेशन को प्रोडक्शन के लिए तैयार करना
\n\n1.1. बिल्ड और कॉन्फ़िगरेशन सेटअप
\n\nपहला कदम यह सुनिश्चित करना है कि आपका tsconfig.json प्रोडक्शन के लिए ऑप्टिमाइज़ किया गया है। यहाँ अनुशंसित कॉन्फ़िगरेशन है:
{\n "compilerOptions": {\n "target": "ES2020",\n "module": "commonjs",\n "lib": ["ES2020"],\n "outDir": "./dist",\n "rootDir": "./src",\n "strict": true,\n "esModuleInterop": true,\n "skipLibCheck": true,\n "forceConsistentCasingInFileNames": true,\n "resolveJsonModule": true,\n "declaration": true,\n "declarationMap": true,\n "sourceMap": true\n },\n "include": ["src/**/*"],\n "exclude": ["node_modules", "dist", "tests"]\n}\n\n\npackage.json में बिल्ड और रन के लिए स्क्रिप्ट जोड़ें:
{\n "scripts": {\n "build": "tsc",\n "start": "node dist/index.js",\n "dev": "ts-node src/index.ts",\n "clean": "rm -rf dist"\n }\n}\n\n\n1.2. एनवायरनमेंट वेरिएबल्स का प्रबंधन
\n\ndotenv लाइब्रेरी के साथ .env फ़ाइलों का उपयोग करें। प्रोडक्शन के लिए एक अलग फ़ाइल .env.production बनाएँ:
NODE_ENV=production\nPORT=3000\nDB_HOST=localhost\nDB_PORT=5432\nDB_NAME=myapp_prod\nDB_USER=app_user\nDB_PASSWORD=secure_password_here\nREDIS_URL=redis://localhost:6379\n\n\nएनवायरनमेंट के अनुसार कॉन्फ़िगरेशन लोड करें:
\n\nimport dotenv from 'dotenv';\nimport path from 'path';\n\nconst envFile = process.env.NODE_ENV === 'production' \n ? '.env.production' \n : '.env.development';\n\ndotenv.config({ path: path.resolve(__dirname, `../${envFile}`) });\n\nexport const config = {\n port: parseInt(process.env.PORT || '3000', 10),\n db: {\n host: process.env.DB_HOST || 'localhost',\n port: parseInt(process.env.DB_PORT || '5432', 10),\n name: process.env.DB_NAME || 'myapp',\n user: process.env.DB_USER || 'user',\n password: process.env.DB_PASSWORD || '',\n },\n redis: {\n url: process.env.REDIS_URL || 'redis://localhost:6379',\n },\n isProduction: process.env.NODE_ENV === 'production',\n};\n\n\n2. VPS सेटअप और एप्लिकेशन डिप्लॉयमेंट
\n\n2.1. सर्वर का बेसिक सेटअप
\n\nVPS खरीदने के बाद (हम Ubuntu 22.04 LTS की सलाह देते हैं) प्रारंभिक सेटअप करें:
\n\n- \n
- पैकेज अपडेट:
sudo apt update && sudo apt upgrade -y\n - Node.js 20 LTS इंस्टॉल करें:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt install -y nodejs\n - Git इंस्टॉल करें:
sudo apt install git -y\n - यूज़र बनाएँ:
sudo adduser deployer && sudo usermod -aG sudo deployer\n
2.2. प्रोजेक्ट क्लोन और बिल्ड
\n\nSSH के माध्यम से सर्वर से कनेक्ट करें और निष्पादित करें:
\n\n# यूज़र पर स्विच करें\nsudo -i -u deployer\ncd ~\n\n# रिपॉजिटरी क्लोन करें\ngit clone https://github.com/your-username/your-app.git\ncd your-app\n\n# डिपेंडेंसी इंस्टॉल करें\nnpm ci --only=production\n\n# TypeScript बिल्ड करें\nnpm run build\n\n# प्रोडक्शन के लिए .env फ़ाइल बनाएँ\nnano .env.production\n\n\n2.3. प्रोसेस मैनेजमेंट के लिए PM2 सेटअप
\n\nPM2 एक है