نشر تطبيق Kotlin على VPS: خطوة بخطوة من الألف إلى الياء
لقد كتبت تطبيقًا رائعًا بلغة Kotlin (Ktor، Spring Boot أو مجرد خدمة وحدة تحكم)، والآن تحتاج إلى تشغيله على خادم حقيقي. في هذه المقالة، سنشرح دورة النشر الكاملة لتطبيق Kotlin على VPS: من شراء الخادم وإعداد SSH إلى التشغيل عبر systemd وربط النطاق مع HTTPS. جميع الأمثلة عملية ومُختبرة على Ubuntu 22.04.
1. إعداد VPS والاتصال
أولاً، استأجر VPS (على سبيل المثال، من Timeweb أو Selectel أو DigitalOcean). الحد الأدنى من المتطلبات: 1 vCPU، 1 GB RAM، 20 GB SSD. نظام التشغيل: Ubuntu 22.04 LTS.
بعد الحصول على عنوان IP وكلمة مرور root، اتصل عبر SSH:
ssh root@your_server_ipقم فورًا بتحديث النظام وإنشاء مستخدم غير مميز (العمل كـ root ممارسة سيئة):
apt update && apt upgrade -yadduser kotlinuserusermod -aG sudo kotlinusersu - kotlinuserقم بإعداد مفاتيح SSH للدخول الآمن والمريح:
ssh-keygen -t ed25519 -C "your_email@example.com"ssh-copy-id kotlinuser@your_server_ipالآن، قم بتعطيل الدخول بكلمة المرور في /etc/ssh/sshd_config (السطر PasswordAuthentication no) وأعد تشغيل SSH: sudo systemctl restart sshd.
2. تثبيت Java (JRE/JDK) وبناء التطبيق
تطبيقات Kotlin تعمل على JVM. قم بتثبيت OpenJDK 17 أو 21 (موصى به للمشاريع الحديثة):
sudo apt install openjdk-17-jdk -yjava -versionالآن، على جهاز الكمبيوتر المحلي الخاص بك (حيث يتم التطوير)، قم ببناء التطبيق في ملف JAR. بالنسبة لـ Gradle (Ktor أو Spring Boot):
./gradlew clean buildسيكون ملف JAR الجاهز في build/libs/. على سبيل المثال، myapp-1.0.0.jar. قم بتحميله إلى الخادم:
scp build/libs/myapp-1.0.0.jar kotlinuser@your_server_ip:~/app/قم بإنشاء هيكل المجلدات على الخادم:
mkdir -p ~/app/logs ~/app/configضع ملفات التكوين (application.conf، application.yml) في ~/app/config/. تحقق من أن التطبيق يبدأ يدويًا:
cd ~/appjava -jar myapp-1.0.0.jar --spring.config.location=file:./config/إذا كان كل شيء يعمل، انتقل إلى التشغيل التلقائي.
3. إعداد systemd للتشغيل التلقائي
للتأكد من أن التطبيق يبدأ تلقائيًا بعد إعادة تشغيل الخادم ولا يتعطل عند حدوث أخطاء، سنقوم بإنشاء خدمة systemd.
قم بإنشاء ملف /etc/systemd/system/kotlin-app.service:
sudo nano /etc/systemd/system/kotlin-app.serviceألصق المحتوى التالي (استبدل المسارات بمساراتك الخاصة):
[Unit]Description=Kotlin Application ServiceAfter=network.target
[Service]Type=simpleUser=kotlinuserWorkingDirectory=/home/kotlinuser/appExecStart=/usr/bin/java -jar /home/kotlinuser/app/myapp-1.0.0.jar --spring.config.location=file:/home/kotlinuser/app/config/Restart=on-failureRestartSec=10StandardOutput=append:/home/kotlinuser/app/logs/app.logStandardError=append:/home/kotlinuser/app/logs/error.log
[Install]WantedBy=multi-user.targetشرح المعلمات الرئيسية:
- User — المستخدم الذي سيتم التشغيل باسمه (وليس root)؛
- ExecStart — أمر التشغيل الكامل مع تحديد ملف التكوين؛
- Restart=on-failure — إعادة التشغيل التلقائي عند التعطل؛
- StandardOutput/Error — تسجيل السجلات في الملفات.
نقوم بتفعيل الخدمة:
sudo systemctl daemon-reloadsudo systemctl enable kotlin-app.servicesudo systemctl start kotlin-app.serviceنتحقق من الحالة:
sudo systemctl status kotlin-app.service