نشر تطبيق Swift على VPS: دليل متقدم

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

نشر تطبيق Swift على VPS: دليل خطوة بخطوة للمتقدمين

\n

لقد قمت بإنشاء تطبيق خادم رائع باستخدام Swift مع إطار عمل Vapor. الآن تحتاج إلى تشغيله في بيئة الإنتاج. يتطلب نشر تطبيق Swift على VPS فهم خصوصية عمل Swift على Linux، وإعداد بيئة الخادم، واستخدام الأدوات الصحيحة لضمان الاستقرار والأداء. في هذا الدليل المتقدم، سنشرح الدورة الكاملة: بدءًا من التجميع لنظام Linux وصولاً إلى إعداد CI/CD، والعمل مع Docker و Supervisor.

\n\n

1. إعداد الخادم وتجميع Swift لنظام Linux

\n

أول شيء يجب فهمه: Swift على macOS و Linux هما بيئتان مختلفتان. للنشر على VPS (Ubuntu 22.04 LTS) يلزم إما التجميع المتقاطع أو البناء مباشرة على الخادم. يُوصى بالبناء على الخادم لتجنب مشاكل المكتبات.

\n\n

1.1 تثبيت Swift على Ubuntu

\n

نتصل بالخادم عبر SSH ونقوم بتثبيت التبعيات اللازمة:

\n
sudo apt update\nsudo apt install -y curl git clang libicu-dev libcurl4-openssl-dev libssl-dev \\\n    libsqlite3-dev libxml2-dev pkg-config uuid-dev\n\n# تحميل أحدث إصدار من Swift Toolchain\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\nsudo mv swift-5.9.2-RELEASE-ubuntu22.04 /usr/share/swift\n\n# إضافة إلى PATH\necho 'export PATH=/usr/share/swift/usr/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc\nswift --version
\n\n

1.2 استنساخ وبناء المشروع

\n

نقوم باستنساخ المستودع وبناء نسخة الإصدار من التطبيق:

\n
git clone https://github.com/your-username/your-swift-app.git\ncd your-swift-app\nswift build --configuration release
\n

بعد البناء الناجح، سيكون الملف الثنائي في .build/release/YourApp. تحقق من تشغيله يدويًا:

\n
./.build/release/YourApp serve --hostname 0.0.0.0 --port 8080
\n\n

2. إعداد بيئة الإنتاج: Nginx و Supervisor

\n

تشغيل تطبيق Swift مباشرة على المنفذ 80 هو ممارسة سيئة. نستخدم مجموعة Nginx (وكيل عكسي) + Supervisor (مدير العمليات).

\n\n

2.1 تكوين Nginx

\n

نقوم بتثبيت Nginx وإنشاء تكوين لتوجيه الطلبات إلى تطبيق Swift الخاص بنا:

\n
sudo apt install nginx\nsudo nano /etc/nginx/sites-available/yourapp
\n

محتوى الملف:

\n
server {\n    listen 80;\n    server_name yourdomain.com www.yourdomain.com;\n\n    location / {\n        proxy_pass http://127.0.0.1:8080;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection 'upgrade';\n        proxy_set_header Host $host;\n        proxy_cache_bypass $http_upgrade;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n\n    # إعداد الملفات الكبيرة (إذا لزم الأمر)\n    client_max_body_size 50m;\n}
\n

نقوم بتفعيل التكوين والتحقق منه:

\n
sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/\nsudo nginx -t\nsudo systemctl restart nginx
\n\n

2.2 إعداد Supervisor لإعادة التشغيل التلقائي

\n

سيراقب Supervisor العملية ويعيد تشغيلها في حالة تعطلها. نقوم بتثبيته وإنشاء التكوين:

\n
sudo apt install supervisor\nsudo nano /etc/supervisor/conf.d/yourapp.conf
\n

محتوى التكوين:

\n
[program:yourapp]\ncommand=/home/ubuntu/your-swift-app/.build/release/YourApp serve --hostname 0.0.0.0 --port 8080\ndirectory=/home/ubuntu/your-swift-app\nuser=ubuntu\nautostart=true\nautorestart=true\nstartretries=3\nstderr_logfile=/var/log/yourapp.err.log\nstdout_logfile=/var/log/yourapp.out.log\nenvironment=ENVIRONMENT="producti                

المدونات

توصيات الكتب