FAQ & Khắc phục sự cố (FAQ & Troubleshooting)
Các câu hỏi, lỗi thường gặp và giải pháp xử lý cho Govard.
Các lỗi khi Cài đặt
Q: Script cài đặt bị lỗi phân quyền (permission error)
Thêm cờ --local để cài đặt không cần quyền sudo:
curl -fsSL https://raw.githubusercontent.com/ddtcorex/govard/master/install.sh | bash -s -- --localViệc này sẽ cài đặt binary vào ~/.local/bin thay vì /usr/local/bin.
Q: Tôi bị xung đột binary tại /usr/bin và /usr/local/bin
Do bạn đã cài đặt từ nhiều kênh khác nhau. Chọn một kênh và dọn dẹp kênh còn lại:
which govard # Kiểm tra xem binary nào đang hoạt động
ls /usr/bin/govard /usr/local/bin/govard # Xem cả hai đường dẫnXóa thủ công binary ở kênh không dùng. Không nên cài đặt chéo nhiều kênh trên cùng một máy.
Q: Lệnh govard self-update bị lỗi phân quyền
Govard cần quyền ghi vào đường dẫn chứa binary đang chạy. Nếu cài đặt ở đường dẫn hệ thống:
sudo govard self-updateHoặc cài đặt lại vào thư mục local của user bằng cờ --local.
Các lỗi về Docker
Q: Lệnh govard env up bị lỗi khi tải (pull) image
Nếu quá trình pull image thất bại, hãy thử chế độ fallback build local:
govard env up --fallback-local-buildLệnh này sẽ tự động build các image do Govard quản lý trực tiếp tại local từ các blueprint tích hợp sẵn.
Q: Lỗi xung đột port khi khởi động môi trường
govard doctor # Kiểm tra xung đột port trên hệ thống
govard env ps # Xem các container nào đang chạyĐảm bảo không có dịch vụ nào khác đang chiếm dụng các port 80, 443 hoặc các port đã map của dự án.
Q: Lệnh govard env up báo lỗi trùng định danh dự án "project identity collision"
Một dự án khác đang chạy đã đăng ký trùng project_name hoặc domain.
govard project list # Xem toàn bộ dự án đang được theo dõiThay đổi giá trị project_name hoặc domain trong file .govard.yml sang một giá trị độc nhất khác.
Lỗi SSL / HTTPS
Q: Trình duyệt báo lỗi "Kết nối của bạn không phải là riêng tư" (Connection not private)
Chạy theo thứ tự sau:
govard svc up # Đảm bảo các dịch vụ toàn cục đang chạy
govard doctor trust # Import lại Root CANếu hệ thống import tự động thất bại, hãy import thủ công file ~/.govard/ssl/root.crt vào trình duyệt của bạn.
Q: Tính năng import tự động không hoạt động trên trình duyệt của tôi
Bạn cần cài đặt thêm gói certutil:
# Trên Ubuntu/Debian
sudo apt-get install libnss3-tools
# Sau đó chạy lại:
govard doctor trustQ: Kết nối HTTPS bị lỗi sau khi restart container dự án
govard env restart # Áp dụng lại các proxy route và host entryQ: Lệnh curl trong container php hoặc php-debug lỗi unable to get local issuer certificate
Chạy theo thứ tự sau:
govard doctor trust
govard env restartLệnh này xuất Govard Root CA ra ~/.govard/ssl/root.crt, sau đó khởi tạo lại container PHP với CA được mount và thiết lập tin cậy bên trong container.
Lỗi DNS
Q: Tên miền myproject.test không phân giải được
- Đảm bảo dịch vụ systemd-resolved đã được cấu hình:bash
cat /etc/systemd/resolved.conf.d/govard-test.conf - Xác minh dịch vụ dnsmasq đang chạy:bash
govard svc up - Kiểm tra phân giải DNS:bash
resolvectl query myproject.test dig +short myproject.test
Q: DNS phân giải được nhưng không phản hồi (lỗi 502 Bad Gateway)
govard env ps # Kiểm tra xem các container có thực sự đang chạy
govard env up # Khởi động lại nếu cần thiếtLỗi Cấu hình (Configuration)
Q: Các thay đổi cấu hình của tôi không có tác dụng
Govard render lại file compose khi chạy lệnh env up. Hãy khởi động lại môi trường:
govard env upNếu bạn thay đổi stack.php_version hoặc các cài đặt stack khác, các container cần phải được khởi tạo lại.
Q: Lệnh govard config set không cập nhật đúng file cấu hình
Lệnh govard config set chỉ ghi trực tiếp vào .govard.yml (cấu hình cơ sở). Các file profile và local override là read-only dưới góc nhìn của CLI.
Q: Làm sao để đổi phiên bản Composer và phiên bản nào chạy nhanh nhất?
Chỉnh sửa trường stack.composer_version trong file .govard.yml. Govard tối ưu hóa tốc độ cho các phiên bản:
122.2(LTS)
Các phiên bản này được tích hợp sẵn trong image và chuyển đổi tức thì. Các phiên bản khác (ví dụ 2.7.2) sẽ được tải về tự động trong lần đầu chạy env up.
Q: Lệnh doctor --fix báo trạng thái "skipped" (bỏ qua) đối với một số lỗi tùy chọn
Đây là hành vi bình thường — việc bỏ qua các sửa đổi tùy chọn (optional fixes) được ghi nhận dưới dạng INFO (Skipped) thay vì ERROR. Môi trường của bạn hoàn toàn khỏe mạnh.
Lỗi Remote / Đồng bộ (Remote / Sync)
Q: Lệnh govard remote test bị lỗi xác thực "auth"
govard remote copy-id staging # Sao chép SSH key của bạn lên remote
ssh-add ~/.ssh/id_rsa # Đảm bảo key đã được nạp vào SSH agentQ: Quá trình đồng bộ chạy rất lâu hoặc bị timeout
- Sử dụng cờ
--no-compressnếu CPU máy của bạn bị quá tải:bashgovard sync -s staging --full --no-compress - Kiểm tra các file bị loại trừ — cờ
--no-noisecó thể giảm đáng kể dung lượng truyền tải:bashgovard sync -s staging --db --no-noise
Q: Lỗi "permission denied" khi chạy rsync
Govard sẽ gợi ý cách sửa phân quyền đối với Magento 2 khi lỗi này xảy ra. Để sửa thủ công:
govard remote exec staging -- chmod -R 755 /var/www/app/varQ: Đường dẫn ~/ trong các cờ remote bị shell local tự động expand
Đóng dấu nháy đơn cho đường dẫn để ngăn shell local tự động expand nó:
govard remote add staging --host host.example.com --user deploy --path '~/public_html'
# ^-- dấu nháy đơnLỗi Database
Q: Lệnh db import bị lỗi "table doesn't exist" (bảng không tồn tại)
Sử dụng cờ --drop để reset sạch database trước khi import:
govard db import --file backup.sql --dropQ: Mật khẩu database bị sai sau khi chạy bootstrap
Chạy lệnh auto-config để tự động inject lại thông tin kết nối chuẩn:
govard config auto # Magento 2: rebuild lại env.php với cấu hình DB của containerQ: PHPMyAdmin không hiển thị database của dự án
Khởi động lại đầy đủ môi trường dự án để đăng ký lại:
govard env upSau đó truy cập govard open db.
Lỗi Xdebug
Q: Xdebug không kết nối được tới IDE của tôi
- Kiểm tra trạng thái Xdebug:
govard debug status. - Đảm bảo cookie
XDEBUG_SESSIONtrùng khớp với giá trịstack.xdebug_sessioncấu hình trong.govard.yml(mặc định:PHPSTORM). - Kiểm tra xem IDE của bạn đã bật lắng nghe trên port 9003 hay chưa.
Q: Xdebug làm chậm trang web của tôi ngay cả khi không debug
Cấu hình một tên session Xdebug cụ thể và chỉ kích hoạt nó thông qua cookie/extension trình duyệt. Xdebug chỉ định tuyến request sang container php-debug khi và chỉ khi phát hiện cookie session tương ứng.
Lỗi Desktop
Q: Ứng dụng Desktop bị crash khi khởi động trên Ubuntu 24.04
Đây là lỗi giới hạn namespace user của AppArmor. Trình cài đặt tự động xử lý việc này, nhưng bạn có thể cấu hình thủ công:
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0Q: Giao diện Desktop hiển thị dữ liệu giả (mock data) thay vì dự án thật
Bạn đang mở trực tiếp file HTML tĩnh (không có backend hoạt động). Hãy khởi chạy desktop đúng cách:
govard desktop
# hoặc ở chế độ dev:
DISPLAY=:1 govard desktop --devLỗi Cập nhật (Update)
Q: Lệnh govard self-update bỏ qua kiểm tra dependencies trên CI
Đây là hành vi có chủ đích — self-update phát hiện môi trường không tương tác (non-interactive) và bỏ qua các bước kiểm tra hệ thống nặng nề để tránh CI bị timeout.
Q: Sau khi chạy self-update, ứng dụng Desktop vẫn hiển thị phiên bản cũ
Binary của desktop cũng được cập nhật bởi lệnh self-update. Nếu phiên bản cũ vẫn tồn tại, hãy khởi động lại hoàn toàn ứng dụng Desktop.
Các mẹo chung (General Tips)
Kiểm tra sức khỏe hệ thống
govard doctor # Chẩn đoán toàn diện hệ thống
govard doctor --json # Xuất kết quả định dạng JSON
govard doctor --pack # Đóng gói file chẩn đoán để gửi báo cáo lỗiXem những gì đang chạy
govard status # Tất cả các môi trường Govard đang chạy
govard env ps # Các container của dự án hiện tại
govard project list # Toàn bộ dự án đang được theo dõiDọn dẹp các môi trường rác
govard env cleanup # Xóa các file compose cũ
govard project list --orphans # Tìm các dự án Docker mồ côi
govard project delete <name> # Xóa hoàn toàn một dự ánReset một dự án không mất mã nguồn
govard env down -v # Dừng container + xóa các volume dữ liệu (database)
govard env up # Khởi động lại mới tinh
govard config auto # Cập nhật lại cấu hình ứng dụng (Magento 2)