نشر تطبيق Kotlin على VPS: دليل خطوة بخطوة
التطوير بلغة Kotlin هو نصف المهمة فقط. لكي يصبح تطبيقك متاحًا للمستخدمين، يجب نشره على خادم. في هذا الدليل، سنستعرض بالتفصيل عملية نشر تطبيق Kotlin (JVM) على VPS (خادم خاص افتراضي). ستتعلم كيفية تحضير الخادم، بناء التطبيق، إعداد التشغيل التلقائي، وضمان اتصال HTTPS آمن. المقال موجه للمطورين الملمين بأساسيات Kotlin وLinux.
1. تحضير الخادم والبيئة
قبل تحميل الكود، يجب تحضير VPS. سنستخدم Ubuntu 22.04 LTS. اتصل بالخادم عبر SSH:
ssh root@your-server-ipقم بتحديث الحزم وتثبيت المكونات الضرورية:
sudo apt update && sudo apt upgrade -ysudo apt install openjdk-17-jdk git nginx certbot python3-certbot-nginx -yتحقق من إصدار Java:
java -versionالآن سننشئ مستخدمًا للتطبيق (تشغيل العمليات من root غير آمن):
sudo useradd -m -s /bin/bash kotlinappsudo usermod -aG sudo kotlinappsu - kotlinappتأكد من أن المستخدم يمكنه تشغيل Java.
2. بناء وتحميل تطبيق Kotlin
سننظر في إطارين شائعين: Ktor و Spring Boot. كلاهما يتم بناؤهما في ملف JAR قابل للتنفيذ. مثال لـ Ktor:
// build.gradle.kts (مقتطف)plugins { kotlin("jvm") version "1.9.22" application id("io.ktor.plugin") version "2.3.7"}
application { mainClass.set("com.example.ApplicationKt")}
ktor { fatJar { archiveFileName.set("myapp.jar") }}قم ببناء fat JAR محليًا:
./gradlew buildFatJarقم بتحميل JAR إلى الخادم عبر SCP (نفذ على جهازك المحلي):
scp build/libs/myapp.jar kotlinapp@your-ip:/home/kotlinapp/app/على الخادم، أنشئ الهيكل:
mkdir -p /home/kotlinapp/app/logs3. إعداد systemd للتشغيل التلقائي
لكي يعمل التطبيق تلقائيًا عند بدء تشغيل الخادم ويعاد تشغيله عند الأعطال، سننشئ خدمة systemd. أنشئ ملف /etc/systemd/system/kotlinapp.service:
sudo nano /etc/systemd/system/kotlinapp.serviceألصق التكوين التالي:
[Unit]Description=Kotlin Application ServiceAfter=network.target
[Service]User=kotlinappGroup=kotlinappWorkingDirectory=/home/kotlinapp/appExecStart=/usr/bin/java -jar myapp.jarRestart=alwaysRestartSec=10StandardOutput=append:/home/kotlinapp/app/logs/out.logStandardError=append:/home/kotlinapp/app/logs/err.logEnvironment="PORT=8080"
[Install]WantedBy=multi-user.targetقم بتمكين وبدء الخدمة:
sudo systemctl daemon-reloadsudo systemctl enable kotlinappsudo systemctl start kotlinappتحقق من الحالة:
sudo systemctl status kotlinappيمكن عرض السجلات باستخدام الأمر:
journalctl -u kotlinapp -f4. إعداد Nginx و HTTPS (SSL)
سيقوم الخادم الوكيل Nginx بتوجيه الطلبات من المنفذ 80/443 إلى المنفذ 8080 الخاص بتطبيق Kotlin الخاص بك. أنشئ التكوين:
sudo nano /etc/nginx/sites-available/kotlinappمثال على التكوين:
server { listen 80; server_name yourdomain.com www.yourdomain.com;
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }}قم بتفعيل الموقع والحصول على شهادة SSL:
sudo ln -s /etc/ngin