VPS पर Java एप्लिकेशन डिप्लॉय: चरण-दर-चरण संपूर्ण गाइड
\n\nJava एप्लिकेशन बनाना तो आधा काम है। दूसरा और उतना ही महत्वपूर्ण काम है इसे प्रोडक्शन सर्वर पर डिप्लॉय करना। इस गाइड में हम Java (Spring Boot) एप्लिकेशन को Ubuntu 22.04 VPS पर डिप्लॉय करने की पूरी प्रक्रिया सीखेंगे। आप जानेंगे कि सर्वर कैसे सेटअप करें, प्रोजेक्ट को कैसे बिल्ड करें, इसे systemd सर्विस के रूप में चलाएं और वेब सर्वर के ज़रिए सुरक्षित एक्सेस कैसे दें।
\n\n1. VPS तैयार करना और ज़रूरी सॉफ्टवेयर इंस्टॉल करना
\n\nपहला कदम है SSH के ज़रिए अपने VPS से कनेक्ट करना और Java Runtime Environment (JRE) और Git इंस्टॉल करना।
\n\nसर्वर से कनेक्ट करें
\nssh root@आपका-सर्वर-आईपी\n\nपैकेज अपडेट करें और Java (OpenJDK 17) इंस्टॉल करें
\nSpring Boot 3.x के लिए Java 17 की सिफारिश की जाती है। चलिए OpenJDK इंस्टॉल करते हैं।
\napt update && apt upgrade -y\napt install openjdk-17-jdk git -y\njava -version\nआपको Java 17 का वर्जन दिखना चाहिए।
\n\nNginx इंस्टॉल करें (reverse proxy के लिए)
\napt install nginx -y\nsystemctl start nginx\nsystemctl enable nginx\n\n2. Java एप्लिकेशन बिल्ड करना (Maven/Gradle)
\n\nअपनी लोकल मशीन पर (या सीधे सर्वर पर, अगर आप रिपॉजिटरी क्लोन कर रहे हैं) JAR फ़ाइल बनानी होगी। दोनों तरीके देखते हैं।
\n\nविकल्प A: लोकल बिल्ड और सर्वर पर कॉपी करना
\nमान लीजिए आपके पास Maven के साथ Spring Boot प्रोजेक्ट है।
\n# लोकल मशीन पर\nmvn clean package -DskipTests\n# फ़ाइल target/my-app-0.0.1-SNAPSHOT.jar में बनेगी\nफिर इसे SCP के ज़रिए सर्वर पर कॉपी करें:
\nscp target/my-app-0.0.1-SNAPSHOT.jar root@आपका-आईपी:/opt/myapp/\n\nविकल्प B: सीधे सर्वर पर बिल्ड करना
\nरिपॉजिटरी क्लोन करें और प्रोजेक्ट बिल्ड करें:
\ncd /opt\ngit clone https://github.com/आपका-यूज़रनेम/आपका-रिपॉजिटरी.git myapp\ncd myapp\n./mvnw clean package -DskipTests\n# या, अगर Maven ग्लोबली इंस्टॉल है:\nmvn clean package -DskipTests\n\n3. प्रोडक्शन कॉन्फ़िगरेशन और systemd सर्विस बनाना
\n\nएप्लिकेशन को सिस्टम बूट पर ऑटोमैटिक शुरू होने और क्रैश होने पर रीस्टार्ट होने के लिए, हम systemd यूनिट फ़ाइल बनाएंगे।
\n\nस्टार्टअप स्क्रिप्ट बनाएं
\nएप्लिकेशन के लिए डायरेक्टरी बनाएं (अगर नहीं बनाई है):
\nmkdir -p /opt/myapp\n# JAR फ़ाइल को इस डायरेक्टरी में ले जाएं, अगर वहाँ नहीं है\n\nsystemd सर्विस बनाएं
\nफ़ाइल बनाएं /etc/systemd/system/myapp.service:
nano /etc/systemd/system/myapp.service\nनीचे दिया गया कंटेंट डालें (अपने प्रोजेक्ट के हिसाब से पथ और पैरामीटर बदलें):
\n[Unit]\nDescription=My Java Spring Boot Application\nAfter=syslog.target network.target\n\n[Service]\nUser=root\nWorkingDirectory=/opt/myapp\nExecStart=/usr/bin/java -Xms256m -Xmx512m -jar /opt/myapp/my-app-0.0.1-SNAPSHOT.jar --server.port=8080\nSuccessExitStatus=143\nRestart=always\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target\nपैरामीटर की व्याख्या:
\n- \n
-Xms256m -Xmx512m— Java हीप का शुरुआती और अधिकतम आकार। \n --server.port=8080— वह पोर्ट जिस पर एप्लिकेशन चलेगा। \n Restart=always— क्रैश होने पर ऑटोमैटिक रीस्टार्ट। \n
सर्विस शुरू करें और जांचें
\nsystemctl daemon-reload\nsystemctl start myapp\nsystemctl status myapp\nsystemctl enable myapp # बूट पर ऑटोस्टार्ट\nजांचें कि एप्लिकेशन लोकल रूप से रिस्पॉन्स कर रहा है:
\ncurl http://localhost:8080/actuator/health\nआपको UP स्टेटस के साथ JSON रिस्पॉन्स मिलना चाहिए।
4. Nginx के ज़रिए Reverse Proxy सेटअप करना
\n\nपोर्ट 8080 पर सीधी एक्सेस सुरक्षित नहीं है। Nginx को प्रॉक्सी सर्वर के रूप में सेटअप करें जो पोर्ट 80 (HTTP) और 443 (HTTPS) पर रिक्वेस्ट लेकर आपके Java एप्लिकेशन तक पहुंचाएगा।