در این مقاله، به صورت گامبهگام آموزش خواهیم داد که چگونه یک پروژه 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
، لاراول و توسعه حرفهای نرمافزار بخونی، با استک تیم همراه باش!