การ Auto Deploy WordPress Theme หรือ Plugin ไปยัง Plesk ด้วย GitHub Actions เป็นหนึ่งในวิธีที่สะดวกที่สุด ช่วยให้ทีมพัฒนา Deploy Code โดยไม่ต้องเข้า Server หรือ Panel ด้วยตนเอง เพียงแค่ Push Code ไปยัง GitHub ก็ทำการ Deploy ได้อัตโนมัติ
ทำไมต้อง Auto Deploy WordPress Theme/Plugin?
- ลดความซับซ้อน: Deploy เดียวกันไปหลาย Server ไม่ต้องทำซ้ำหลายครั้ง
- ลดความผิดพลาด: ไม่ลืม Deploy ไป Staging หรือ Production
- ประหยัดเวลา: ไม่ต้องเข้า Plesk Panel หรือ SSH ด้วยตนเอง
- Version Control: ติดตามได้ว่า Deploy มาจาก Code Version ไหน
ขั้นตอนที่ 1: สร้าง SSH Key บน Server
เข้า SSH ที่ Server Plesk แล้วสร้าง SSH Key:
ssh-keygen -t ed25519 -f ~/.ssh/github_deploy -N ""
cat ~/.ssh/github_deploy.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
คัดลอก Private Key เพื่อเก็บใน GitHub Secrets:
cat ~/.ssh/github_deploy
ขั้นตอนที่ 2: เพิ่ม Secrets ใน GitHub
GitHub Repository → Settings → Secrets and variables → Actions → New repository secret เพิ่ม Secrets:
DEPLOY_PRIVATE_KEY— SSH Private KeySERVER_IP— IP ของ Plesk ServerPLESK_USER— Username สำหรับ SSH
ขั้นตอนที่ 3: GitHub Actions Workflow สำหรับ Deploy WordPress Theme
สร้างไฟล์ .github/workflows/deploy-theme.yml:
name: Deploy WordPress Theme to Plesk
on:
push:
branches:
- main
paths:
- 'theme/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
cache: 'npm'
- name: Install and Build Assets
run: |
npm ci
npm run build
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DEPLOY_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -H ${{ secrets.SERVER_IP }} >> ~/.ssh/known_hosts
- name: Deploy Theme with rsync
run: |
rsync -avz --delete theme/ \
${{ secrets.PLESK_USER }}@${{ secrets.SERVER_IP }}:~/wordpress/wp-content/themes/my-theme/
- name: Post-Deploy WP-CLI Commands
run: |
ssh ${{ secrets.PLESK_USER }}@${{ secrets.SERVER_IP }} << 'EOF'
cd ~/wordpress
wp cache flush --allow-root
wp theme activate my-theme --allow-root
EOF
Workflow สำหรับ Deploy WordPress Plugin
name: Deploy WordPress Plugin to Plesk
on:
push:
branches:
- main
paths:
- 'plugin/**'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Setup PHP + Composer Cache
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
- name: Cache Composer
uses: actions/cache@v3
with:
path: ~/.composer/cache
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
- name: Install Composer Dependencies
run: composer install --no-dev --optimize-autoloader
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DEPLOY_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan -H ${{ secrets.SERVER_IP }} >> ~/.ssh/known_hosts
- name: Deploy Plugin with rsync
run: |
rsync -avz --delete plugin/ \
${{ secrets.PLESK_USER }}@${{ secrets.SERVER_IP }}:~/wordpress/wp-content/plugins/my-plugin/
- name: Activate Plugin and Flush Cache
run: |
ssh ${{ secrets.PLESK_USER }}@${{ secrets.SERVER_IP }} << 'EOF'
cd ~/wordpress
wp plugin activate my-plugin --allow-root
wp cache flush --allow-root
EOF
Best Practices สำหรับ Auto Deploy WordPress
- ใช้ Branch Strategy: Deploy เฉพาะจาก
mainหรือreleasebranch - Test ก่อน Deploy: ตรวจสอบ PHP Syntax และ WordPress Compatibility
- Backup ก่อน Deploy: สร้าง Backup Database เพื่อป้องกัน
- Monitor Post-Deploy: ตรวจสอบ Error Log หลัง Deploy
- WP-CLI Post-Tasks: ล้าง Cache และ Activate Theme/Plugin อัตโนมัติ
Auto Deploy WordPress กับ ผู้ให้บริการโฮสติ้ง Cloud VPS
สำหรับผู้ใช้ ผู้ให้บริการโฮสติ้ง Cloud VPS การตั้งค่า GitHub Actions จะเหมือนกัน เพียงเปลี่ยนค่า Secret เป็น IP Address และ Credentials ของ Plesk Server บน Cloud VPS ของคุณ Plesk Control Panel รองรับ SSH และ Git Workflow ครบวงจร
สนใจใช้บริการ Cloud VPS สอบถามได้ที่ de.co.th
