Sẽ mở trong thẻ mới

Deploy WordPress bằng Git trên VPS: Không cần FTP hay SFTP

Nếu bạn thường xuyên phát triển và quản lý website WordPress trên VPS, chắc hẳn FTP hoặc SFTP là những công cụ quen thuộc để đưa source code từ máy tính lên server.

Tuy nhiên, có một cách khác đơn giản và hiệu quả hơn: sử dụng Git để deploy code trực tiếp lên VPS.

Thay vì phải mở FTP client, tìm đúng thư mục và upload từng file, bạn chỉ cần một lệnh git push để triển khai những thay đổi của mình.

Đây cũng là cách tôi từng áp dụng khi quản lý các website WordPress sử dụng EasyEngine. Trước khi triển khai dự án riêng của mình là Kumix.cloud tôi đã làm như vậy.

1. Git Deploy là gì?

Git Deploy là phương pháp triển khai source code lên server thông qua Git.

Thay vì upload file bằng FTP/SFTP, bạn tạo một Git repository trên VPS, sau đó sử dụng Git hook để tự động xử lý code mỗi khi nhận được một lần push mới.

Quy trình cơ bản:

  1. Phát triển website trên máy tính cá nhân.
  2. Commit các thay đổi bằng Git.
  3. Push code lên repository trên VPS.
  4. Server tự động cập nhật source code vào thư mục website.

Bạn không cần cài đặt thêm phần mềm FTP hay sử dụng dịch vụ deploy của bên thứ ba.

Những gì bạn cần là Git, SSH và một chút kiến thức Bash.

2. Git Deploy với EasyEngine

Trước đây, tôi đã phát triển một công cụ nhỏ có tên ee-git để đơn giản hóa việc thiết lập Git Deploy cho các website WordPress chạy trên EasyEngine.

Cài đặt bằng lệnh:

wget -qO eeGit bit.ly/ee-git && sudo bash eeGit

Sau khi cài đặt, tạo website WordPress bằng EasyEngine:

sudo ee site create example.com --type=wp

Tiếp theo, thiết lập Git Deploy cho theme:

ee-git example.com theme_name

Ví dụ, nếu bạn muốn deploy theme my-theme, sử dụng:

ee-git example.com my-theme

Sau khi thiết lập, bạn có thể sử dụng Git để đẩy source code theme lên VPS.

Lưu ý: Đây là công cụ và installer từ dự án cũ, được phát triển cho các phiên bản EasyEngine và hệ điều hành Linux tương ứng tại thời điểm đó. Không nên mặc định rằng installer vẫn tương thích với các phiên bản hệ điều hành hiện nay.

3. Không chỉ giới hạn ở EasyEngine

Điểm thú vị của phương pháp này là Git Deploy không phải tính năng riêng của EasyEngine.

Nó sử dụng cơ chế Git Hooks, cụ thể là post-receive, để thực thi các lệnh Bash sau khi server nhận được code.

Vì vậy, bạn hoàn toàn có thể áp dụng cách làm tương tự trên:

  • LEMP Stack (Linux, Nginx, MySQL/MariaDB, PHP).
  • LAMP Stack (Linux, Apache, MySQL/MariaDB, PHP).
  • VPS cài đặt thủ công.
  • Các ứng dụng PHP, Laravel, Node.js hoặc những ứng dụng có thể triển khai bằng shell script.

Chỉ cần biết cách cấu hình Git repository và viết Bash script, bạn có thể tùy chỉnh quy trình deploy theo nhu cầu của từng dự án.

4. Ví dụ Git Deploy không phụ thuộc EasyEngine

Bạn có thể tạo một Git repository trên VPS:

mkdir -p /home/git/example.git
cd /home/git/example.git

git init --bare

Tiếp theo, tạo file hook:

nano /home/git/example.git/hooks/post-receive

Ví dụ nội dung:

#!/bin/bash

TARGET="/var/www/example.com"
GIT_DIR="/home/git/example.git"

git --work-tree="$TARGET" \
    --git-dir="$GIT_DIR" \
    checkout -f main

echo "Deployment completed!"

Cấp quyền thực thi:

chmod +x /home/git/example.git/hooks/post-receive

Trên máy tính cá nhân, thêm remote:

git remote add production \
    git@your-server:/home/git/example.git

Sau đó deploy:

git push production main

Khi server nhận được code, Git sẽ tự động chạy post-receive và cập nhật source code vào thư mục website.

Đây chỉ là ví dụ cơ bản. Trong môi trường production, bạn nên bổ sung xử lý lỗi, phân quyền, bảo vệ file cấu hình và phương án rollback.

5. Có thể tự động hóa nhiều công việc hơn

Vì post-receive thực thi Bash script, bạn không bị giới hạn ở việc copy source code.

Ví dụ, khi deploy một ứng dụng Laravel, bạn có thể bổ sung:

composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan optimize

Với ứng dụng Node.js, bạn có thể chạy:

npm install
npm run build

Sau đó restart service tương ứng.

Đối với WordPress, bạn có thể sử dụng Git Deploy để quản lý riêng theme, plugin hoặc những thành phần source code mà bạn muốn đưa vào version control.

Tùy vào cấu trúc dự án, bạn có thể thiết kế một quy trình deploy riêng mà không cần phụ thuộc vào bất kỳ control panel nào.

6. Một số lưu ý khi sử dụng Git Deploy

Trước khi áp dụng cho website đang hoạt động, bạn nên lưu ý:

  • SSH Key: Cấu hình public SSH key để xác thực khi push code.
  • Permissions: Đảm bảo user chạy Git có quyền ghi vào thư mục triển khai.
  • Configuration: Không ghi đè các file .env, wp-config.php hoặc những file cấu hình riêng của production.
  • Git Branch: Chỉ deploy branch được chỉ định, tránh triển khai nhầm code.
  • Rollback: Nên có phương án quay lại phiên bản trước nếu deploy thất bại.
  • Production Safety: Không nên chạy các lệnh có thể làm gián đoạn website nếu chưa kiểm tra kỹ.

Kết luận

Git Deploy là một giải pháp khá đơn giản nhưng hữu ích cho những ai thường xuyên phát triển và quản lý website trên VPS.

Bạn không nhất thiết phải sử dụng một nền tảng CI/CD phức tạp chỉ để triển khai một website WordPress.

Với Git, SSH và Bash, bạn đã có thể xây dựng một quy trình deploy phù hợp với hạ tầng của mình.

Nếu đang quản lý nhiều website WordPress trên VPS, đây là một phương pháp đáng để thử.

Bạn đang sử dụng FTP, SFTP hay Git để deploy website WordPress? Chia sẻ kinh nghiệm của bạn ở phần bình luận nhé.

Để lại bình luận đầu tiên

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Danh mục