نشر تطبيق Swift على VPS: خطوة بخطوة من الألف إلى الياء
\n\nلم يعد Swift لغة مخصصة لتطوير iOS فقط. بفضل إطار العمل Vapor والدعم الرسمي لنظام Linux، يمكنك إنشاء تطبيقات خادم عالية الأداء بلغة Swift ونشرها على VPS. في هذا الدليل، سنمر بجميع الخطوات من إعداد الخادم إلى تشغيل الإصدار الإنتاجي لتطبيق Swift الخاص بك.
\n\n1. إعداد VPS وتثبيت Swift
\n\nللبدء، ستحتاج إلى VPS يعمل بنظام Ubuntu 22.04 LTS (أو 20.04). اتصل عبر SSH وقم بتحديث النظام:
\n\nssh root@your-server-ip\napt update && apt upgrade -y\n\nقم بتثبيت التبعيات اللازمة لـ Swift:
\n\napt install -y curl git build-essential libssl-dev libcurl4-openssl-dev\napt install -y libxml2-dev libicu-dev libsqlite3-dev libz-dev\n\nالآن قم بتنزيل وتثبيت Swift لنظام Ubuntu. تحقق من الإصدار الحالي على swift.org. وقت كتابة هذا المقال، الإصدار هو Swift 5.9:
\n\ncd /opt\nwget https://download.swift.org/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gz\ntar xzf swift-5.9-RELEASE-ubuntu22.04.tar.gz\necho 'export PATH=/opt/swift-5.9-RELEASE-ubuntu22.04/usr/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc\n\nتحقق من التثبيت:
\n\nswift --version\n\nيجب أن ترى إصدار Swift 5.9.
\n\n2. إنشاء وبناء تطبيق Swift/Vapor
\n\nقم بتثبيت Vapor Toolbox (اختياري ولكنه مفيد):
\n\ngit clone https://github.com/vapor/toolbox.git\ncd toolbox\nswift build -c release\ncp .build/release/vapor /usr/local/bin/\n\nلنقم بإنشاء تطبيق Vapor تجريبي. إذا كان لديك مشروع بالفعل، فما عليك سوى نسخه إلى الخادم عبر SCP أو Git.
\n\ncd ~\nvapor new HelloServer\ncd HelloServer\n\nقم بتحرير Sources/App/routes.swift لإضافة نقطة نهاية بسيطة:
import Vapor\n\nfunc routes(_ app: Application) throws {\n app.get { req async in\n "Hello from Swift on VPS!"\n }\n \n app.get("status") { req async -> HTTPStatus in\n return .ok\n }\n}\n\nقم ببناء المشروع في وضع الإنتاج:
\n\nswift build -c release\n\nسيظهر الملف الثنائي في .build/release/HelloServer.
3. إعداد التشغيل وخدمة systemd
\n\nلضمان تشغيل التطبيق تلقائيًا بعد إعادة تشغيل الخادم، سنقوم بإنشاء خدمة systemd. أولاً، قم بإنشاء مستخدم للتطبيق (لأغراض الأمان):
\n\nuseradd -m -s /bin/bash swiftuser\nchown -R swiftuser:swiftuser /root/HelloServer\n\nقم بإنشاء ملف الخدمة:
\n\nnano /etc/systemd/system/helloserver.service\n\nأدخل المحتوى التالي:
\n\n[Unit]\nDescription=HelloServer Swift App\nAfter=network.target\n\n[Service]\nType=simple\nUser=swiftuser\nWorkingDirectory=/root/HelloServer\nExecStart=/root/HelloServer/.build/release/HelloServer --host 127.0.0.1 --port 8080\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target\n\nقم بتشغيل الخدمة:
\n\nsystemctl daemon-reload\nsystemctl enable helloserver\nsystemctl start helloserver\nsystemctl status helloserver\n\nتحقق من استجابة التطبيق محليًا:
\n\ncurl http://127.0.0.1:8080\n\n4. إعداد Nginx كوكيل عكسي
\n\nفي بيئة الإنتاج، لا يُنصح بفتح المنفذ 8080 مباشرة. سنقوم بتثبيت Nginx وإعداد الوكيل مع SSL (Let's Encrypt).
\n\napt install -y nginx certbot python3-certbot-nginx\n\nقم بإنشاء تكوين Nginx:
\n\nnano /etc/nginx/sites-available/helloserver\n\nأدخل:
\n\nserver {\n listen 80;\