مقدمة: لماذا يتطلب نشر تطبيق Kotlin نهجًا خاصًا
\nالتطوير باستخدام Kotlin هو نصف النجاح فقط. النصف الآخر هو النشر الصحيح (التوزيع) لتطبيقك على خادم بعيد. بدون هذه المرحلة، سيبقى كودك مجرد مشروع محلي، غير متاح للمستخدمين.
\nفي هذا الدليل، سنقوم بتحليل الدورة الكاملة لنشر تطبيق Kotlin على VPS (خادم خاص افتراضي). ستتعلم كيفية بناء المشروع في ملف JAR قابل للتنفيذ، وإعداد بيئة الخادم، وتشغيل التطبيق كخدمة، وضمان عمله المستقر. المقالة موجهة للمطورين الذين لديهم بالفعل معرفة أساسية بـ Kotlin و Linux.
\n\n1. تحضير المشروع وبناء ملف JAR
\nقبل تحميل الكود إلى الخادم، يجب بناء التطبيق في قطعة أثرية واحدة. لمشاريع Kotlin المكتوبة باستخدام Spring Boot أو Ktor، التنسيق القياسي هو ملف JAR (أرشيف Java).
\n\n1.1. إعداد ملف build.gradle.kts
\nتأكد من وجود إضافة (plugin) في ملف build.gradle.kts الخاص بك لبناء JAR قابل للتنفيذ. بالنسبة لـ Spring Boot، يبدو الأمر كالتالي:
plugins {\n kotlin("jvm") version "1.9.22"\n id("org.springframework.boot") version "3.2.2"\n id("io.spring.dependency-management") version "1.1.4"\n}\n\ndependencies {\n implementation("org.springframework.boot:spring-boot-starter-web")\n implementation("com.fasterxml.jackson.module:jackson-module-kotlin")\n}\n\nبالنسبة لـ Ktor الخالص (بدون Spring)، استخدم الإضافة application:
plugins {\n kotlin("jvm") version "1.9.22"\n application\n}\n\napplication {\n mainClass.set("com.example.ApplicationKt")\n}\n\n\n1.2. بناء المشروع
\nنفذ أمر البناء في المجلد الجذر للمشروع:
\n./gradlew clean build\nبعد البناء الناجح، سيظهر ملف app-0.0.1-SNAPSHOT.jar في الدليل build/libs/ (الاسم يعتمد على التكوين). انسخه إلى جهاز الكمبيوتر المحلي الخاص بك.
src/main/resources/application.conf يحتوي على المنفذ الصحيح (عادةً 8080) ووضع التشغيل.2. إعداد خادم VPS
\nللنشر، سنحتاج إلى VPS مثبت عليه نظام تشغيل Ubuntu 22.04 LTS. من المفترض أن لديك وصول عبر SSH وصلاحيات المستخدم المتميز (sudo).
\n\n2.1. تثبيت Java (JRE)
\nيتم تجميع Kotlin إلى كود بايت JVM، لذلك يجب تثبيت بيئة تشغيل Java (JRE) الإصدار 17 أو أعلى على الخادم:
\nsudo apt update\nsudo apt install openjdk-17-jre -y\njava -version\n\n2.2. إنشاء مستخدم للتطبيق
\nلأسباب أمنية، لا يُنصح بتشغيل التطبيق كمستخدم root. سنقوم بإنشاء مستخدم منفصل:
\nsudo useradd -m -s /bin/bash kotlinapp\nsudo passwd kotlinapp\n\n2.3. تحميل ملف JAR إلى الخادم
\nاستخدم SCP لنسخ الملف من الجهاز المحلي إلى VPS:
\nscp build/libs/app-0.0.1-SNAPSHOT.jar kotlinapp@your-server-ip:/home/kotlinapp/app.jar\n\n3. تشغيل التطبيق وإعداد Systemd
\nلكي يبدأ التطبيق تلقائيًا عند بدء تشغيل النظام ولا يتوقف عند فقدان اتصال SSH، سنقوم بإعداده كخدمة Systemd.
\n\n3.1. التشغيل اليدوي (للتحقق)
\nاتصل بالخادم كمستخدم kotlinapp ونفذ:
cd /home/kotlinapp\njava -jar app.jar\nإذا بدأ التطبيق واستجاب على المنفذ 8080، انتقل إلى الخطوة التالية. أوقف العملية (Ctrl+C).
\n\n3.2. إنشاء ملف وحدة Systemd
\nأنشئ ملف الخدمة:
\nsudo nano /etc/systemd/system/kotlin-app.service\nألصق المحتوى التالي:
\n[Unit]\nDescription=Kotlin Application Service\nAfter=net