در این مقاله، به صورت گامبهگام آموزش خواهیم داد که چگونه یک پروژه Laravel یا Lumen را در محیط هاست اشتراکی (cPanel) بدون دسترسی SSH و تنها با استفاده از GitHub Actions و FTP، به صورت خودکار (CI/CD) دیپلوی کنیم. این روش برای توسعهدهندگانی مناسب است که از هاست ارزانقیمت استفاده میکنند یا به هر دلیلی دسترسی به SSH ندارند.
استک تیم، به عنوان یک ارائهدهنده حرفهای Team as a Service (TaaS)، آماده است تا چنین فرایندهایی را به شکلی استاندارد و در ابعاد بزرگتر برای استارتاپها و شرکتهای نرمافزاری پیادهسازی کند.
البته توصیه میکنم از داکر برای دیپلوی اپ های لاراولی استفاده شود
مقدمه
در دنیای توسعه نرمافزار، هر چه فرایند دیپلوی و بهروزرسانی سریعتر و خودکارتر باشد، توسعه روانتر خواهد بود. با اینکه اکثر توسعهدهندگان برای استقرار پروژههای خود به سراغ VPS یا سرورهای ابری میروند، اما هنوز هم هاست اشتراکی (Shared Hosting) به دلایل اقتصادی و سادگی محبوبیت بالایی دارد. مشکل اصلی این نوع هاست، عدم دسترسی SSH است که معمولاً توسط شرکتهای میزبانی غیرفعال میشود.
اما جای نگرانی نیست؛ با کمی خلاقیت و استفاده از GitHub Actions و FTP، میتوان سیستم CI/CD را حتی روی این نوع از هاستها پیادهسازی کرد. این مقاله دقیقاً همین فرایند را آموزش میدهد.
گامبهگام با ما همراه باشید
1. ورود به cPanel و فعالسازی ترمینال
ابتدا وارد cPanel خود شوید. به بخش Advanced رفته و گزینه Terminal را باز کنید. این بخش به شما اجازه میدهد برخی تنظیمات پایه را بدون SSH انجام دهید.
2. تنظیم محیط هاست و تعریف alias برای composer
دستور زیر را با جایگزینی CPANEL_USERNAME با نام کاربری هاست خود اجرا کنید:
echo 'alias composer="php -d allow_url_fopen=On /home/CPANEL_USERNAME/composer.phar"' >> ~/.bashrc
source ~/.bashrc
3. نصب Composer در هاست
دو دستور زیر را اجرا کنید تا Composer نصب شود:
curl -k -O https://getcomposer.org/installer
php -d allow_url_fopen=On installer
4. آپلود کد پروژه و اجرای دستورات لاراول
کد پروژه خود را در پوشه موردنظر (مثلاً public_html) آپلود کنید. سپس با استفاده از ترمینال به روت پروژه بروید و دستورات زیر را اجرا نمایید:
composer install
php artisan key:generate
php artisan migrate
chmod -R 775 storage
php artisan db:seed
اگر درباره ساخت دیتابیس، کاربر و تنظیم
.envاطلاعات دارید، به مرحله بعد بروید. در غیر این صورت، تیم استک تیم میتواند به شما مشاوره یا خدمات مستقیم ارائه دهد.
5. ساخت فایل YAML برای GitHub Actions
در پوشه .github/workflows فایل جدیدی به نام cicd.yml ایجاد کنید و محتوای زیر را در آن قرار دهید:
name: Laravel/Lumen CI/CD
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
web-deploy:
name: Deploying
runs-on: ubuntu-latest
steps:
- uses: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e
with:
php-version: '8.1.21'
- uses: actions/checkout@v2.3.2
- name: Copy .env
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
- name: Install Dependencies
run: composer update --ignore-platform-reqs
- name: Generate key
run: php artisan key:generate
- name: Directory Permissions
run: chmod -R 775 storage
- name: 📂 Sync files
uses: SamKirkland/FTP-Deploy-Action@4.0.0
with:
server: ${{ secrets.SERVER }}
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
server-dir: ./api.minimarketapp.ir/
6. تنظیم اطلاعات محرمانه در GitHub Secrets
برای امنیت بیشتر، اطلاعات دسترسی به FTP را داخل کد قرار ندهید. وارد تنظیمات ریپازیتوری خود در GitHub شوید، به بخش:
Settings → Security → Secrets and variables → Actions
رفته و متغیرهای SERVER، USERNAME و PASSWORD را تعریف کنید.
پایان، اما شروع مسیر CI/CD شما!
از این پس، هر بار که کدی در شاخه main پوش شود یا Pull Request انجام گیرد، سیستم CI/CD شما به صورت خودکار اجرا شده و پروژه در هاست بارگذاری میشود.
💡 نکته: در اولین اجرا ممکن است فرایند کمی طول بکشد، اما دفعات بعدی بسیار سریعتر خواهد بود.
جمع بندی
این روش، یک راهحل خلاقانه و مؤثر برای پیادهسازی CI/CD در پروژههای PHP/Laravel است، حتی بدون دسترسی SSH. اگر تیم یا استارتاپ شما در حال توسعه یک محصول نرمافزاری است، استک تیم با ارائه خدمات Team as a Service میتواند تمام نیازهای شما در حوزه برنامهنویسی، DevOps، طراحی سیستم، مستندسازی و راهاندازی CI/CD را پوشش دهد.
استک تیم یک ارائهدهنده حرفهای خدمات Team as a Service است که با بهرهگیری از تیمهای تخصصی در حوزه طراحی و توسعه نرمافزار، میتواند صفر تا صد پروژههای شما را از ایده تا اجرا برعهده گیرد.
🔹 طراحی و توسعه اپلیکیشن و وبسایت
🔹 پیادهسازی CI/CD و DevOps
🔹 توسعه مقیاسپذیر با معماری میکروسرویس
🔹 توسعه پروژههای مبتنی بر Laravel، Golang، Node.js و ...
🎯 رزرو جلسه مشاوره رایگان، اولین قدم موفقیت اپلیکیشن شما
شماره تماس های سریع ما، تماس و واتساپ :
📞 ایران : 09120186223 📞 دبی : +971581554476
اگر دوست داری مقالههای بیشتری درباره CI/CD، لاراول و توسعه حرفهای نرمافزار بخونی، با استک تیم همراه باش!


