نشر تطبيق Kotlin على VPS: دليل كامل خطوة بخطوة
تطوير تطبيق Kotlin هو نصف المهمة فقط. عاجلاً أم آجلاً، يطرح السؤال: كيف ننقل التطبيق من البيئة المحلية إلى خادم حقيقي؟ في هذه المقالة، سنشرح بالتفصيل نشر تطبيق Kotlin (باستخدام Spring Boot كمثال) على VPS. ستتعلم كيفية تجهيز الخادم، بناء ملف JAR، إعداد التشغيل التلقائي، وضمان اتصال آمن عبر HTTPS. هذا الدليل مناسب للمبتدئين والمطورين الذين يرغبون في تنظيم معرفتهم.
1. تجهيز VPS وتثبيت البرامج الضرورية
قبل تحميل الكود، يجب تجهيز الخادم. نوصي باستخدام Ubuntu 22.04 LTS أو أحدث. اتصل بالخادم عبر SSH:
ssh root@your-server-ipقم بتحديث قاعدة الحزم وتثبيت Java (يتم ترجمة Kotlin إلى bytecode JVM، لذا نحتاج JDK 17 أو 21):
sudo apt update && sudo apt upgrade -ysudo apt install openjdk-17-jdk -yjava -versionتأكد من أن إصدار Java يتوافق مع بنائك. قم أيضاً بتثبيت Git (إذا كنت تستخدم مستودعاً) وأدوات للعمل مع الأرشيفات:
sudo apt install git unzip curl -yللعمل مع مشروع Kotlin على الخادم، ليس من الضروري تثبيت مترجم Kotlin نفسه — سنقوم بالبناء محلياً أو عبر CI/CD. ومع ذلك، إذا كنت تخطط للترجمة على الخادم، أضف SDKMAN! و Kotlin:
curl -s "https://get.sdkman.io" | bashsource "$HOME/.sdkman/bin/sdkman-init.sh"sdk install kotlinمهم: في هذه المرحلة، قم أيضاً بإعداد جدار الحماية (UFW) للأمان الأساسي:
sudo ufw allow OpenSSHsudo ufw allow 8080/tcp # منفذ التطبيقsudo ufw enable2. بناء تطبيق Kotlin ونقله إلى الخادم
لنفكر في مشروع نموذجي على Spring Boot مع Kotlin. قم ببناء ملف JAR محلياً (أو على الخادم إذا قمت باستنساخ المستودع). في جذر المشروع، نفذ:
./gradlew clean bootJarأو، إذا كنت تستخدم Maven:
mvn clean packageبعد البناء، سيظهر في المجلد build/libs/ (Gradle) أو target/ (Maven) ملف باسم app-0.0.1-SNAPSHOT.jar. انسخه إلى الخادم باستخدام SCP:
scp build/libs/app-0.0.1-SNAPSHOT.jar root@your-ip:/opt/myapp/app.jarأنشئ دليلاً للتطبيق على الخادم وانقل JAR:
sudo mkdir -p /opt/myappsudo mv app.jar /opt/myapp/تحقق من أن JAR يعمل يدوياً:
cd /opt/myappjava -jar app.jar --server.port=8080إذا تم تشغيل التطبيق واستجاب على المنفذ 8080 — فكل شيء على ما يرام. أوقفه (Ctrl+C) وانتقل إلى إعداد التشغيل الدائم.
3. إعداد systemd للتشغيل التلقائي والمراقبة
لكي يبدأ التطبيق تلقائياً عند إعادة تشغيل الخادم ويتعافى بعد الأعطال، سننشئ خدمة systemd. أنشئ ملفاً:
sudo nano /etc/systemd/system/kotlin-app.serviceألصق القالب التالي (استبدل المعلمات حسب تطبيقك):
[Unit]Description=Kotlin Spring Boot ApplicationAfter=network.target
[Service]Type=simpleUser=rootWorkingDirectory=/opt/myappExecStart=/usr/bin/java -jar /opt/myapp/app.jar --server.port=8080Restart=on-failureRestartSec=10StandardOutput=journalStandardError=journal
[Install]WantedBy=multi-user.targetأعد تحميل إعدادات systemd وابدأ الخدمة:
sudo systemctl daemon-reloadsudo systemctl start kotlin-appsudo systemctl status kotlin-appإذا كانت الحالة active (running) — فكل شيء يعمل. أضف الخدمة إلى التشغيل التلقائي:
sudo systemctl enable kotlin-app