لماذا Swift ليس فقط لتطوير الأجهزة المحمولة
\nعندما تسمع "Swift"، أول ما يتبادر إلى الذهن هو تطبيقات iOS وXcode ومحاكي iPhone. لكن خلال السنوات الخمس الماضية، تحولت اللغة إلى أداة كاملة لتطوير الخوادم. Vapor وHummingbird وSwiftNIO ليست مجرد مكتبات، بل نظام بيئي قادر على منافسة Go وRust. المشكلة مختلفة: العديد من المطورين يكتبون خلفية رائعة بلغة Swift، لكنهم يتوقفون عند مرحلة النشر. هل هذا مألوف؟
\nلقد مررت بهذه الرحلة بنفسي: من "انشر على Heroku وانسَ الأمر" إلى VPS خاص بي مع Docker وCI/CD. في هذه المقالة، سأشرح كيفية نشر تطبيقات Swift بشكل صحيح، بحيث لا تتعطل في الساعة 3 صباحًا، ولا يكتب المستخدمون رسائل غاضبة. مفاجأة: السحابات ليست دائمًا الحل السحري، وVPS قد يكون أكثر موثوقية مما يبدو.
\n\nما سننشره: مثال تطبيق على Vapor
\nللتوضيح، سنأخذ REST API نموذجي على Vapor 4. سيكون خادمًا بسيطًا بنقطة نهاية واحدة تُرجع JSON. الكود ضئيل ولكنه كافٍ لعرض جميع مراحل النشر.
\n\n// Sources/App/routes.swift\nimport Vapor\n\nfunc routes(_ app: Application) throws {\n app.get { req async in\n return "Hello, Swift on Server!"\n }\n \n app.get("api", "health") { req -> HTTPStatus in\n return .ok\n }\n}\n\nيتم تشغيل هذا كله عبر swift run أو vapor run. لكن في الإنتاج، لا أحد يفعل ذلك. نحتاج إلى عملية مستقرة: بناء، تغليف، تشغيل ومراقبة.
الخيار 1: VPS — الصديق القديم أفضل من الجديدين
\nالخادم الخاص الافتراضي (VPS) يشبه امتلاك شقة خاصة: سيطرة كاملة، ولكن أيضًا مسؤولية التنظيف. بالنسبة لـ Swift، هذا خيار مثالي إذا كنت تريد فهم كيفية عمل النظام تحت الغطاء.
\n\nكيفية تجهيز VPS لـ Swift
\nنأخذ Ubuntu 22.04 (أو 24.04) على DigitalOcean أو Hetzner أو Vscale. يدعم Swift رسميًا Ubuntu، لذلك لن تكون هناك مشاكل.
\n\n- \n
- نتصل عبر SSH:
ssh root@your-server-ip\n - نثبت التبعيات:
apt update && apt install -y clang libicu-dev libcurl4-openssl-dev libssl-dev\n - نقوم بتنزيل Swift 5.9+ من swift.org ونفك الضغط في
/usr/local\n
# مثال على تثبيت Swift على Ubuntu\nwget https://download.swift.org/swift-5.9.2-release/ubuntu2204/swift-5.9.2-RELEASE/swift-5.9.2-RELEASE-ubuntu22.04.tar.gz\ntar xzf swift-5.9.2-RELEASE-ubuntu22.04.tar.gz\nmv swift-5.9.2-RELEASE-ubuntu22.04 /usr/local/swift\necho 'export PATH=/usr/local/swift/usr/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc\nswift --version\n\nالنشر عبر Git + systemd
\nأبسط طريقة: نستنسخ المستودع على الخادم، نبني الملف الثنائي ونشغله كخدمة.
\n\n# على الخادم\ngit clone https://github.com/yourname/your-swift-app.git\ncd your-swift-app\nswift build -c release\ncp .build/release/Run /usr/local/bin/myapp\n\n# إنشاء وحدة systemd\nsudo nano /etc/systemd/system/myapp.service\n\n[Unit]\nDescription=My Swift App\nAfter=network.target\n\n[Service]\nExecStart=/usr/local/bin/myapp\nWorkingDirectory=/root/your-swift-app\nRestart=always\nUser=root\nEnvironment="PORT=8080"\n\n[Install]\nWantedBy=multi-user.target\n\nنشغل: systemctl enable myapp && systemctl start myapp. تم! الآن تطبيقك يعمل كخدمة خلفية ويعاد تشغيله عند التعطل.
مزايا VPS: سيطرة كاملة، سعر منخفض (5-10 دولار/شهر)، يمكن تثبيت أي أدوات. العيوب: تحتاج إلى إعداد المراقبة والتحديثات والأمان بنفسك. إذا نما تطبيقك، ستحتاج إلى التوسع يدويًا.
\n\nالخيار 2: Docker — حاويات Swift
\nDocker يحل مشكلة "يعمل على جهازي". تقوم بتغليف التطبيق مع البيئة و...