Tiếng Việt
Xử lý sự cố máy chủ
Trang này tổng hợp các sự cố thường gặp khi quản lý máy chủ bằng FlashPanel và cách khắc phục. Khi một thao tác thất bại, luôn bắt đầu bằng việc mở trang Sự kiện của máy chủ để đọc thông báo lỗi.
Lỗi "Can not connect to server!"
FlashPanel thực hiện mọi thao tác qua SSH bằng root, kể cả thao tác của website (sau đó mới chuyển sang người dùng hệ thống của website ngay trên máy chủ). Lỗi này nghĩa là FlashPanel không đăng nhập được vào máy chủ nên thao tác chưa chạy. Kiểm tra theo phần Máy chủ bị ngắt kết nối.
Máy chủ bị ngắt kết nối
FlashPanel quản lý máy chủ qua SSH bằng tài khoản root và một khóa riêng của máy chủ. Khi không kết nối được, các thao tác trên máy chủ sẽ thất bại cho đến khi kết nối được khôi phục. Kiểm tra lần lượt:
- Máy chủ có đang bật không? Kiểm tra trên trang quản trị của nhà cung cấp, khởi động lại nếu đang tắt.
- Tường lửa có chặn không? Nếu bạn giới hạn SSH theo IP (ở máy chủ hoặc tường lửa của nhà cung cấp), hãy cho phép địa chỉ IP của FlashPanel. Nếu bạn đã xóa quy tắc tường lửa SSH, xem mục bên dưới.
- Khóa của FlashPanel còn trên máy chủ không? Khóa nằm trong
/root/.ssh/authorized_keysvà/home/flashpanel/.ssh/authorized_keys. Nếu bị xóa hoặc nhà cung cấp ghi đè (ví dụ sau khi cài lại hệ điều hành hoặc đặt lại mật khẩu), dùng Cấp quyền truy cập root để cài lại khóa. - Tệp
authorized_keyscó hợp lệ không? Xóa các dòng không phải khóa công khai (ví dụ private key dán nhầm).
Nếu vẫn lỗi, đăng nhập máy chủ qua console của nhà cung cấp và sửa quyền của thư mục .ssh:
bash
# Người dùng root
chown root:root /root
chown -R root:root /root/.ssh
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
# Người dùng flashpanel
chown flashpanel:flashpanel /home/flashpanel
chown -R flashpanel:flashpanel /home/flashpanel/.ssh
chmod 700 /home/flashpanel/.ssh
chmod 600 /home/flashpanel/.ssh/authorized_keysNếu đã thử hết các bước trên mà vẫn không kết nối được, chạy lệnh sau với quyền root và gửi kết quả cho bộ phận hỗ trợ của FlashPanel:
bash
grep 'sshd' /var/log/auth.log | tail -n 20Lỡ xóa quy tắc tường lửa SSH hoặc đổi cổng SSH
Nếu quy tắc tường lửa của cổng SSH bị xóa, hoặc bạn đổi cổng SSH mà cổng mới bị chặn, FlashPanel không kết nối được nên cũng không thể tự mở lại cổng.
Mở console (VNC/Web Console) trên trang quản trị của nhà cung cấp máy chủ và đăng nhập bằng
root.Mở lại cổng SSH (thay
22bằng cổng SSH hiện tại nếu đã đổi):bashufw allow 22Nếu nhà cung cấp có tường lửa riêng (security group, cloud firewall), mở cổng đó ở cả nơi này.
Đổi mật khẩu root hoặc người dùng hệ thống
FlashPanel không lưu mật khẩu đăng nhập máy chủ, nên không thể cho bạn biết mật khẩu cũ. Bạn có thể đặt mật khẩu mới khi máy chủ vẫn đang kết nối:
- Mở trang Người dùng hệ thống của máy chủ, bấm biểu tượng bút chì ở dòng của người dùng (
rootnằm ở đầu danh sách). - Nhập mật khẩu mới hoặc bấm biểu tượng chìa khóa để tạo ngẫu nhiên.
- Bấm Lưu.
Nếu máy chủ đã mất kết nối, hãy đặt lại mật khẩu bằng chức năng của nhà cung cấp, rồi xem Máy chủ bị ngắt kết nối.
TIP
Mặc định máy chủ chỉ cho đăng nhập SSH bằng khóa, nên mật khẩu chủ yếu dùng cho sudo và console của nhà cung cấp. Để đăng nhập SSH, hãy dùng SSH Keys.
Khởi động lại PHP-FPM
Bạn có thể khởi động lại PHP trong trang Ứng dụng hoặc trang PHP của máy chủ (nút Khởi động lại).
Trong kịch bản triển khai hoặc terminal, mọi người dùng hệ thống đều được phép tải lại PHP-FPM bằng sudo mà không cần mật khẩu. Thay 8.3 bằng phiên bản PHP của website:
bash
sudo service php8.3-fpm reloadLệnh này hữu ích ở cuối mỗi lần triển khai khi bật OPcache, để PHP dùng code mới.
Website báo lỗi 502 Bad Gateway
Thường do PHP-FPM bị dừng, website trỏ tới phiên bản PHP đã gỡ, hoặc ứng dụng Node.js/daemon không chạy. Xem hướng dẫn chi tiết tại Lỗi 502 Bad Gateway.
Nginx không khởi động được sau khi sửa cấu hình
Thường do một khối cấu hình website bị sai cú pháp. Xem Nginx không khởi động được.
Thao tác bị kẹt hoặc lỗi "Could not get lock"
Khi cài ứng dụng hoặc cập nhật máy chủ báo lỗi khóa APT, xem Fix APT Lock. Với lỗi dpkg was interrupted, xem phần này.
Lỗi "Repository changed its 'Label' value"
Cập nhật gói thất bại với lỗi dạng:
text
E: Repository 'http://ppa.launchpad.net/ondrej/nginx/ubuntu focal InRelease' changed its 'Label' value from 'PPA for NGINX Stable with HTTP/2' to 'PPA for NGINX Stable'Người duy trì một kho gói (PPA) đã đổi tên kho. Để an toàn, APT dừng lại cho tới khi bạn xác nhận thay đổi.
Mở Terminal trên trang tổng quan của máy chủ và chạy:
bashsudo apt update --allow-releaseinfo-changeThực hiện lại thao tác bị lỗi.
WARNING
Chỉ chấp nhận thay đổi với kho gói bạn tin cậy. Các kho ppa:ondrej/* (PHP, Nginx, Apache) do Ondřej Surý duy trì và an toàn. Với kho lạ, hãy kiểm tra nguồn gốc trước.
Lỗi "Unmet dependencies"
Cài đặt hoặc cập nhật gói thất bại với lỗi:
text
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).Máy chủ đang có gói cài dở hoặc thiếu gói phụ thuộc, thường do một lần cài trước bị gián đoạn, hoặc gói được cài tay bằng tệp .deb hay từ kho gói không tương thích. Khi còn lỗi này, APT từ chối cài thêm bất kỳ gói nào.
Mở Terminal trên trang tổng quan của máy chủ và chạy:
bashsudo dpkg --configure -a sudo apt-get update sudo apt-get --fix-broken installLệnh cuối liệt kê các gói sẽ được cài thêm hoặc gỡ bỏ rồi hỏi xác nhận. Đọc kỹ danh sách trước khi nhập
Y.Thực hiện lại thao tác bị lỗi.
WARNING
Nếu danh sách gỡ bỏ có gói quan trọng như nginx, php*, mysql-server, mariadb-server hoặc postgresql*, hãy nhập n để huỷ và gửi kết quả lệnh cho bộ phận hỗ trợ của FlashPanel. Gỡ các gói này sẽ làm website ngừng hoạt động.
Lỗi "Could not resolve host"
Thao tác thất bại với một trong các lỗi sau:
text
curl: (6) Could not resolve host: deb.nodesource.com
Temporary failure resolving 'archive.ubuntu.com'Máy chủ không phân giải được tên miền ra địa chỉ IP, nên không tải được gói hay mã nguồn từ Internet. Lỗi nằm ở cấu hình DNS của chính máy chủ, không phải ở tên miền đang tải. Nguyên nhân thường gặp: máy chủ DNS của nhà cung cấp gặp sự cố, tệp /etc/resolv.conf bị sửa sai, dịch vụ systemd-resolved bị dừng, hoặc tường lửa chặn kết nối ra cổng 53.
Mở Terminal trên trang tổng quan của máy chủ và kiểm tra:
bashgetent hosts deb.nodesource.com resolvectl statusLệnh đầu không in ra địa chỉ IP nào nghĩa là DNS của máy chủ đang hỏng.
Khởi động lại dịch vụ phân giải tên miền rồi kiểm tra lại:
bashsudo systemctl restart systemd-resolved getent hosts deb.nodesource.comNếu vẫn lỗi, dùng máy chủ DNS công cộng. Mở
/etc/systemd/resolved.conf, tìm dòng#DNS=dưới mục[Resolve]và sửa thành:iniDNS=1.1.1.1 8.8.8.8Sau đó chạy
sudo systemctl restart systemd-resolved. Nếu/etc/resolv.confkhông phải liên kết tớisystemd-resolved(lệnhls -l /etc/resolv.confkhông hiện->), sửa trực tiếp các dòngnameservertrong tệp này.Nếu bạn dùng tường lửa của nhà cung cấp (security group, cloud firewall), hãy cho phép kết nối ra ngoài qua cổng
53(UDP và TCP).Thực hiện lại thao tác bị lỗi.
Lỗi "Read-only file system"
Thao tác thất bại với lỗi dạng:
text
dpkg: error processing archive ... (--unpack):
unable to create '/usr/bin/gpgv.dpkg-new' (while processing './usr/bin/gpgv'): Read-only file systemHệ điều hành đã chuyển ổ đĩa sang chế độ chỉ đọc. Linux tự làm việc này khi phát hiện lỗi hệ thống tệp hoặc lỗi đọc ghi của ổ đĩa, để tránh làm hỏng thêm dữ liệu. Khi đó website vẫn đọc được dữ liệu nhưng không ghi được (upload, cache, session, cơ sở dữ liệu…), và FlashPanel không thể sửa từ xa.
Mở Terminal trên trang tổng quan của máy chủ và kiểm tra:
bashfindmnt -no OPTIONS / sudo dmesg | grep -iE 'I/O error|EXT4-fs error|remount' | tail -n 20Dòng đầu bắt đầu bằng
ronghĩa là ổ đĩa đang ở chế độ chỉ đọc.Sao lưu ngay dữ liệu quan trọng (mã nguồn, cơ sở dữ liệu) về máy khác khi vẫn còn đọc được, ví dụ qua SFTP.
Khởi động lại máy chủ từ trang quản trị của nhà cung cấp. Ubuntu thường tự kiểm tra và sửa hệ thống tệp khi khởi động.
Nếu sau khi khởi động lại ổ đĩa vẫn chỉ đọc, hoặc
dmesgbáoI/O error, hãy liên hệ nhà cung cấp máy chủ: đây thường là lỗi ổ đĩa hoặc hệ thống lưu trữ của họ. Nhà cung cấp có thể chạyfscktừ chế độ cứu hộ (rescue) hoặc chuyển máy chủ sang ổ đĩa khác.
WARNING
Không chạy fsck trên ổ đĩa đang được gắn (mount) và sử dụng, vì có thể làm hỏng dữ liệu. Chỉ chạy từ chế độ cứu hộ của nhà cung cấp.
Shell mặc định không phải bash
Thao tác thất bại với lỗi bắt đầu bằng zsh: hoặc fish:, ví dụ:
text
zsh:85: no matches found: /usr/local/lsws/lsphp*/etc/php/*/litespeed/php.iniFlashPanel chạy lệnh trên máy chủ bằng shell mặc định của người dùng SSH, và mọi script của FlashPanel được viết cho bash. Nếu bạn đã đổi shell mặc định sang zsh, fish hay shell khác, script sẽ lỗi giữa chừng. Hãy đổi shell mặc định về bash:
Mở Terminal trên trang tổng quan của máy chủ và kiểm tra shell mặc định của
root:bashgetent passwd root | cut -d: -f7Kết quả khác
/bin/bashthì cần đổi lại.Đổi shell mặc định của
rootvềbash:bashsudo chsh -s /bin/bash rootChạy lại thao tác bị lỗi.
TIP
Bạn vẫn dùng được zsh khi làm việc trực tiếp trên máy chủ: sau khi đăng nhập SSH, gõ zsh để chuyển sang. Chỉ cần shell mặc định là bash.
Redis không khởi động được
Mở Terminal trên trang tổng quan của máy chủ và xem lý do Redis dừng:
bashsudo systemctl status redis-server sudo journalctl -u redis-server -n 50 --no-pagerXử lý theo thông báo lỗi:
Can't open the log file: No such file or directory: thiếu thư mục log. Tạo lại:bashsudo mkdir -p /var/log/redis sudo chown redis:redis /var/log/redis sudo chmod 755 /var/log/redisAddress already in use: một chương trình khác đang dùng cổng6379. Tìm chương trình đó bằngsudo lsof -i :6379rồi dừng nó. Nếu muốn chuyển Redis sang cổng khác, sửaporttrong cấu hình Redis (nút Cấu hình ở trang Ứng dụng) và cập nhật mọi ứng dụng đang kết nối tới Redis.
Bấm Khởi động ở dòng Redis trong trang Ứng dụng, hoặc chạy
sudo systemctl restart redis-server. Redis chạy lại khi trạng thái hiển thị Kích hoạt.
Ổ đĩa đầy
Ổ đĩa đầy khiến cơ sở dữ liệu, PHP và web server lỗi theo nhiều cách khó đoán, thường kèm thông báo No space left on device. Chạy tiện ích Dọn dẹp hệ thống trước, rồi làm theo Ổ đĩa đầy để tìm và xoá thứ đang chiếm dung lượng.
Không tạo được máy chủ qua API nhà cung cấp
- Khóa API không hợp lệ hoặc thiếu quyền: tạo lại khóa API theo Kết nối nhà cung cấp máy chủ.
- Vượt giới hạn tài nguyên của tài khoản (ví dụ DigitalOcean báo vượt giới hạn droplet): liên hệ nhà cung cấp để tăng giới hạn, rồi tạo lại máy chủ.