Skip to content

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:

  1. 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.
  2. 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.
  3. Khóa của FlashPanel còn trên máy chủ không? Khóa nằm trong /root/.ssh/authorized_keys và /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.
  4. Tệp authorized_keys có 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_keys

Nế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 20

Lỡ 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.

  1. 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.

  2. Mở lại cổng SSH (thay 22 bằng cổng SSH hiện tại nếu đã đổi):

    bash
    ufw allow 22
  3. Nếu nhà cung cấp có tường lửa riêng (security group, cloud firewall), mở cổng đó ở cả nơi này.

Xem thêm Tường lửa và SSH.

Đổ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:

  1. 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 (root nằm ở đầu danh sách).
  2. 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.
  3. 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 reload

Lệ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.

  1. Mở Terminal trên trang tổng quan của máy chủ và chạy:

    bash
    sudo apt update --allow-releaseinfo-change
  2. Thự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.

  1. Mở Terminal trên trang tổng quan của máy chủ và chạy:

    bash
    sudo dpkg --configure -a
    sudo apt-get update
    sudo apt-get --fix-broken install
  2. Lệ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.

  3. 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.

  1. Mở Terminal trên trang tổng quan của máy chủ và kiểm tra:

    bash
    getent hosts deb.nodesource.com
    resolvectl status

    Lệnh đầu không in ra địa chỉ IP nào nghĩa là DNS của máy chủ đang hỏng.

  2. Khởi động lại dịch vụ phân giải tên miền rồi kiểm tra lại:

    bash
    sudo systemctl restart systemd-resolved
    getent hosts deb.nodesource.com
  3. Nế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:

    ini
    DNS=1.1.1.1 8.8.8.8

    Sau đó chạy sudo systemctl restart systemd-resolved. Nếu /etc/resolv.conf không phải liên kết tới systemd-resolved (lệnh ls -l /etc/resolv.conf không hiện ->), sửa trực tiếp các dòng nameserver trong tệp này.

  4. 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).

  5. 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 system

Hệ đ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.

  1. Mở Terminal trên trang tổng quan của máy chủ và kiểm tra:

    bash
    findmnt -no OPTIONS /
    sudo dmesg | grep -iE 'I/O error|EXT4-fs error|remount' | tail -n 20

    Dòng đầu bắt đầu bằng ro nghĩa là ổ đĩa đang ở chế độ chỉ đọc.

  2. 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.

  3. 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.

  4. Nếu sau khi khởi động lại ổ đĩa vẫn chỉ đọc, hoặc dmesg báo I/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ạy fsck từ 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.ini

FlashPanel 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:

  1. Mở Terminal trên trang tổng quan của máy chủ và kiểm tra shell mặc định của root:

    bash
    getent passwd root | cut -d: -f7

    Kết quả khác /bin/bash thì cần đổi lại.

  2. Đổi shell mặc định của root về bash:

    bash
    sudo chsh -s /bin/bash root
  3. Chạ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 ​

  1. Mở Terminal trên trang tổng quan của máy chủ và xem lý do Redis dừng:

    bash
    sudo systemctl status redis-server
    sudo journalctl -u redis-server -n 50 --no-pager
  2. Xử 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:

      bash
      sudo mkdir -p /var/log/redis
      sudo chown redis:redis /var/log/redis
      sudo chmod 755 /var/log/redis
    • Address already in use: một chương trình khác đang dùng cổng 6379. Tìm chương trình đó bằng sudo lsof -i :6379 rồi dừng nó. Nếu muốn chuyển Redis sang cổng khác, sửa port trong 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.

  3. 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ủ.