من الجميل جدًا أن تقوم ببناء نظام CI/CD (التكامل والتسليم المستمر) لمشروعك بعد الانتهاء من التطوير أو من أجل بيئة Staging لاختبار المشروع على الخادم، لذلك سنشرح في هذا الدرس أفضل طريقة للقيام بذلك 🚀.
يمكنك اتباع خطوات هذا الدرس لتجعل تطبيقك يعمل أونلاين بسهولة.
🏯 تثبيت CloudPanel
لبدء العمل على خادم جديد، عادة ستحتاج لتثبيت العديد من الحزم أو استخدام Docker.
لكن الطريقة الأسهل لنشر تطبيق Laravel PHP هي الحصول على VPS من أحد مزودي الخدمة مثل AWS EC2 أو Hetzner Cloud… إلخ.
بعد الحصول على الـ VPS — ويجب أن يكون بنظام Ubuntu 22.01 — يمكنك متابعة الخطوات التالية.
ما هو CloudPanel
CloudPanel هو لوحة تحكم خوادم مجانية وحديثة لإدارة الخوادم بسهولة وبساطة.
يمكنك تشغيل PHP و Node.js و مواقع ثابتة و Reverse Proxies و تطبيقات Python بسرعة باستخدام تقنيات عالية الأداء.
يدعم الإطلاق السريع على:
- Amazon Web Services
- Digital Ocean
- Hetzner Cloud
- Google Compute Engine
- Microsoft Azure
- Oracle Cloud
- Vultr
- Other
.png)
✅ المميزات
- مجاني 100%
- سهل الاستخدام
- مدعوم من المجتمع
- سريع جدًا (حتى 250x)
- آمن (SSL مجاني)
- تكامل مع Cloudflare
- أداء عالي
- جاهز خلال دقيقة واحدة فقط
- يدعم كل مزودي الخدمة الكبار
- يدعم X86 و ARM
🧰 تثبيت CloudPanel
سجّل الدخول إلى الخادم الخاص بك باستخدام SSH:
ssh root@yourIpAddress
إذا كنت تستخدم كلمة مرور:
ssh -i path_to_your_private_key root@yourIpAddress
قم بتحديث النظام وتثبيت الحزم المطلوبة:
apt update && apt -y upgrade && apt -y install curl wget sudo
الآن قم بتثبيت CloudPanel:
curl -sS https://installer.cloudpanel.io/ce/v2/install.sh -o install.sh; \
echo "3c30168958264ced81ca9b58dbc55b4d28585d9066b9da085f2b130ae91c50f6 install.sh" | \
sha256sum -c && sudo bash install.sh
🌐 الوصول إلى لوحة CloudPanel
لأسباب أمنية، يجب الدخول إلى لوحة CloudPanel فورًا وإنشاء مستخدم المدير. افتح المتصفح وتوجه إلى:
https://yourIpAddress:8443
ثم تجاهل تحذير الشهادة واختر “Advanced” ثم “Proceed”.
🔓 ربط Cloudflare
.png)
لتحسين الأمان والأداء، سنستخدم Cloudflare كـ DNS و Reverse Proxy مع التخزين المؤقت.
✨ إنشاء حساب على Cloudflare
قم بإنشاء حساب جديد بسهولة عبر هذا الرابط.
➕ إضافة الدومين إلى Cloudflare
.png)
أضف موقعك إلى Cloudflare من تبويب Websites. أدخل الدومين ثم غيّر Nameservers من مزود الدومين إلى Cloudflare. تستغرق العملية بضع دقائق إلى 24 ساعة حسب المزود.
🌍 ربط الدومين بـ CloudPanel
- افتح DNS من لوحة Cloudflare وأضف سجل A يشير إلى IP الخادم.
- اجعل Proxy status = DNS Only.
- في CloudPanel، من الإعدادات غيّر الدومين إلى cp.YOUR_DOMAIN. سيتم توليد SSL تلقائيًا.
🌐 ربط دومين المشروع
.png)
- من تبويب Website أضف موقع جديد واختَر “Create PHP Site App”.
- أضف A Record في Cloudflare.
- من تبويب SSL/TLS في Cloudflare أنشئ Origin Certificate مجاني لمدة 15 سنة.
- استورد الشهادة في CloudPanel.
.png)
الآن موقعك آمن ويعمل بـ SSL ✅.
🔃 استنساخ المشروع (Clone Repo)
سجّل الدخول إلى الخادم باستخدام SSH كمستخدم المشروع:
ssh youproject@yourIpAddress
قم بإنشاء مفتاح SSH جديد:
ssh-keygen -t ed25519 -C "[email protected]"
اعرض المفتاح وانسخه:
cat .ssh/rsa.pub
أضفه إلى GitHub من Settings → Deploy keys. ثم استنسخ المشروع إلى مجلد المشروع:
cd /home/yourproject/htdocs/yourproject.com
git clone [email protected]:tomatophp/tomato.git .
📄 إعداد .env
cp .env.example .env
حدث معلومات قاعدة البيانات والدومين:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=tomato-kit
DB_USERNAME=root
DB_PASSWORD=26111995
APP_URL=https://yourproject.com
APP_HOST=yourproject.com
📦 تثبيت الحزم
composer install
php artisan key:generate
php artisan config:cache
php artisan storage:link
php artisan optimize:clear
📦 تثبيت NVM/NPM/Yarn
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
source ~/.bashrc
nvm install 18
nvm use 18
npm -g i yarn
yarn && yarn build
الآن المشروع جاهز للعمل على المتصفح 🥳.
🎇 إعداد CI/CD Workflow
قم بإنشاء ملف GitHub Actions داخل .github/workflows/ci.yaml وأضف الكود التالي:
name: Testing Laravel with MySQL
on:
  pull_request:
    branches: [ master ]
  push:
    branches: [ master ]
jobs:
  laravel:
    runs-on: ubuntu-latest
    ...
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
      - name: Install Composer dependencies
        run: composer install --no-progress --prefer-dist --optimize-autoloader
      - name: Prepare Laravel Application
        run: |
          php -r "file_exists('.env') || copy('.env.example', '.env');"
          php artisan key:generate
      - name: Test with phpunit
        run: vendor/bin/phpunit --coverage-text
      - name: Deploy to server
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          port: ${{ secrets.SSH_PORT }}
          password: ${{ secrets.SSH_PASSWORD }}
          script: cd ${{ secrets.SSH_PATH }} && ./.scripts/deploy.sh
أضف أسرار الخادم (Secrets) في إعدادات GitHub:
SSH_HOST: 8.8.8.8
SSH_USERNAME: yourproject
SSH_PORT: 22
SSH_PASSWORD: yourpassword
SSH_PATH: /home/yourproject/htdocs/yourdomain.com
🦕 إعداد سكربت النشر (Deploy Script)
قم بإنشاء مجلد .scripts وملف deploy.sh مع صلاحيات التشغيل:
mkdir .scripts
cd .scripts
touch deploy.sh
chmod 755 deploy.sh
ثم أضف:
#!/bin/bash
set -e
echo "Deployment started ..."
(php artisan down) || true
git reset --hard
git pull origin master
composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader
php artisan clear-compiled
php artisan optimize
yarn
yarn build
php artisan migrate --force
php artisan up
echo "Deployment finished!"
ادفع التغييرات (push) إلى GitHub وستبدأ عملية CI/CD تلقائيًا ⚡
✅ النتيجة النهائية: بإتمام هذه الخطوات، سيكون لديك نظام نشر آلي (CI/CD) متكامل لتطبيق Laravel، مزود بلوحة تحكم CloudPanel، وحماية Cloudflare، وأتمتة كاملة للنشر والتحديثات.
التعليقات (0)
انضم إلى النقاش
الرجاء تسجيل الدخول للتعليق
تسجيل الدخوللا توجد تعليقات بعد
كن أول من يعلق
مقالات ذات صلة
 
                            
                        ما هي الخوارزميات؟
 
                            
                        من هو مطور الباك اند
 
                            
                        