VPS पर Java एप्लिकेशन डिप्लॉय: संपूर्ण गाइड A से Z तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

VPS पर Java एप्लिकेशन डिप्लॉय: चरण-दर-चरण संपूर्ण गाइड

\n\n

Java एप्लिकेशन बनाना तो आधा काम है। दूसरा और उतना ही महत्वपूर्ण काम है इसे प्रोडक्शन सर्वर पर डिप्लॉय करना। इस गाइड में हम Java (Spring Boot) एप्लिकेशन को Ubuntu 22.04 VPS पर डिप्लॉय करने की पूरी प्रक्रिया सीखेंगे। आप जानेंगे कि सर्वर कैसे सेटअप करें, प्रोजेक्ट को कैसे बिल्ड करें, इसे systemd सर्विस के रूप में चलाएं और वेब सर्वर के ज़रिए सुरक्षित एक्सेस कैसे दें।

\n\n

1. VPS तैयार करना और ज़रूरी सॉफ्टवेयर इंस्टॉल करना

\n\n

पहला कदम है SSH के ज़रिए अपने VPS से कनेक्ट करना और Java Runtime Environment (JRE) और Git इंस्टॉल करना।

\n\n

सर्वर से कनेक्ट करें

\n
ssh root@आपका-सर्वर-आईपी
\n\n

पैकेज अपडेट करें और Java (OpenJDK 17) इंस्टॉल करें

\n

Spring Boot 3.x के लिए Java 17 की सिफारिश की जाती है। चलिए OpenJDK इंस्टॉल करते हैं।

\n
apt update && apt upgrade -y\napt install openjdk-17-jdk git -y\njava -version
\n

आपको Java 17 का वर्जन दिखना चाहिए।

\n\n

Nginx इंस्टॉल करें (reverse proxy के लिए)

\n
apt install nginx -y\nsystemctl start nginx\nsystemctl enable nginx
\n\n

2. 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 के ज़रिए सर्वर पर कॉपी करें:

\n
scp target/my-app-0.0.1-SNAPSHOT.jar root@आपका-आईपी:/opt/myapp/
\n\n

विकल्प B: सीधे सर्वर पर बिल्ड करना

\n

रिपॉजिटरी क्लोन करें और प्रोजेक्ट बिल्ड करें:

\n
cd /opt\ngit clone https://github.com/आपका-यूज़रनेम/आपका-रिपॉजिटरी.git myapp\ncd myapp\n./mvnw clean package -DskipTests\n# या, अगर Maven ग्लोबली इंस्टॉल है:\nmvn clean package -DskipTests
\n\n

3. प्रोडक्शन कॉन्फ़िगरेशन और systemd सर्विस बनाना

\n\n

एप्लिकेशन को सिस्टम बूट पर ऑटोमैटिक शुरू होने और क्रैश होने पर रीस्टार्ट होने के लिए, हम systemd यूनिट फ़ाइल बनाएंगे।

\n\n

स्टार्टअप स्क्रिप्ट बनाएं

\n

एप्लिकेशन के लिए डायरेक्टरी बनाएं (अगर नहीं बनाई है):

\n
mkdir -p /opt/myapp\n# JAR फ़ाइल को इस डायरेक्टरी में ले जाएं, अगर वहाँ नहीं है
\n\n

systemd सर्विस बनाएं

\n

फ़ाइल बनाएं /etc/systemd/system/myapp.service:

\n
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
\n\n

सर्विस शुरू करें और जांचें

\n
systemctl daemon-reload\nsystemctl start myapp\nsystemctl status myapp\nsystemctl enable myapp  # बूट पर ऑटोस्टार्ट
\n

जांचें कि एप्लिकेशन लोकल रूप से रिस्पॉन्स कर रहा है:

\n
curl http://localhost:8080/actuator/health
\n

आपको UP स्टेटस के साथ JSON रिस्पॉन्स मिलना चाहिए।

\n\n

4. Nginx के ज़रिए Reverse Proxy सेटअप करना

\n\n

पोर्ट 8080 पर सीधी एक्सेस सुरक्षित नहीं है। Nginx को प्रॉक्सी सर्वर के रूप में सेटअप करें जो पोर्ट 80 (HTTP) और 443 (HTTPS) पर रिक्वेस्ट लेकर आपके Java एप्लिकेशन तक पहुंचाएगा।

ब्लॉग

पुस्तक अनुशंसाएँ