نشر تطبيق Swift على VPS: دليل خطوة بخطوة
تطوير تطبيقات الخادم باستخدام Swift وإطار العمل Vapor يكتسب شعبية متزايدة. ومع ذلك، بعد كتابة الكود، يطرح السؤال: كيف ننشر تطبيق Swift على خادم بعيد؟ في هذه المقالة، سنشرح العملية الكاملة لنشر تطبيق Swift على VPS (Ubuntu 22.04) — بدءًا من تثبيت المكونات الضرورية وصولاً إلى إعداد reverse proxy والتشغيل في وضع الإنتاج.
1. إعداد الخادم وتثبيت Swift
أولاً، نتصل بـ VPS عبر SSH ونحدث قاعدة الحزم:
sudo apt update && sudo apt upgrade -yيتطلب Swift تبعيات للبناء. نقوم بتثبيتها:
sudo apt install clang libicu-dev libcurl4-openssl-dev libssl-dev python3 pkg-config -yثم نقوم بتنزيل وتثبيت Swift لنظام Ubuntu. وقت كتابة هذه المقالة، الإصدار الحالي هو 5.9. نقوم بتحميل الأرشيف:
wget https://download.swift.org/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gzنقوم بفك الضغط ونقل المجلد إلى /usr/share:
tar xzf swift-5.9-RELEASE-ubuntu22.04.tar.gzsudo mv swift-5.9-RELEASE-ubuntu22.04 /usr/share/swiftنضيف Swift إلى PATH. افتح ~/.bashrc:
nano ~/.bashrcأضف السطر التالي في نهاية الملف:
export PATH="/usr/share/swift/usr/bin:$PATH"طبق التغييرات:
source ~/.bashrcنتحقق من التثبيت:
swift --versionيجب أن يظهر إصدار Swift 5.9.
2. بناء تطبيق Swift (Vapor) على الخادم
نقوم باستنساخ المستودع الذي يحتوي على التطبيق أو نسخ الملفات عبر SCP. كمثال، سننشئ مشروع Vapor تجريبي:
mkdir ~/myapp && cd ~/myappswift package init --type executableنضيف Vapor إلى Package.swift (مثال لخادم بسيط):
// swift-tools-version:5.9import PackageDescription
let package = Package( name: "myapp", platforms: [.macOS(.v13)], dependencies: [ .package(url: "https://github.com/vapor/vapor.git", from: "4.89.0") ], targets: [ .executableTarget(name: "myapp", dependencies: [ .product(name: "Vapor", package: "vapor") ]) ])ننشئ ملف Sources/myapp/main.swift:
import Vapor
let app = try Application(.detect())app.get { req in return "Hello, Swift on VPS!"}try app.run()نبني المشروع في وضع release:
swift build -c releaseبعد البناء، سيكون الملف الثنائي في .build/release/myapp. ننسخه إلى مكان مناسب:
cp .build/release/myapp /usr/local/bin/myapp3. إعداد Nginx كـ reverse proxy
سوف يستمع تطبيق Swift على المنفذ 8080، وسيقوم Nginx بتوجيه حركة المرور من المنفذ 80 (أو 443 لـ HTTPS). نقوم بتثبيت Nginx:
sudo apt install nginx -yننشئ ملف تكوين لتطبيقنا:
sudo nano /etc/nginx/sites-available/myappمحتوى الملف:
server { listen 80; server_name your-domain.com;
location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }}نقوم بتفعيل التكوين وإعادة تشغيل Nginx:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl restart nginxلا تنسَ إعداد سجل DNS من النوع A لنطاقك ليشير إلى عنوان IP الخاص بـ VPS.