Chuyển tới nội dung chính

FAQ - Câu Hỏi Thường Gặp

Tổng hợp các câu hỏi phổ biến nhất về quản trị server Linux/Windows, troubleshooting và best practices từ cộng đồng sysadmin Việt Nam.

🐧 Linux Server​

Làm sao để kiểm tra phiên bản Linux đang dùng?​

# Xem phiên bản OS
cat /etc/os-release

# Xem kernel version
uname -r

# Xem thông tin chi tiết
hostnamectl

Xem thêm: Tổng Quan Linux Server cho Sysadmin

Server Linux bị chậm, làm sao kiểm tra nguyên nhân?​

Các bước kiểm tra:

  1. CPU Usage:
top
htop # dễ nhìn hơn
  1. Memory Usage:
free -h
vmstat 1
  1. Disk I/O:
iostat -x 1
iotop
  1. Network:
iftop
nethogs

Xem thêm: Theo Dõi Process Linux Với ps Và top

Không SSH được vào server, phải làm gì?​

Checklist troubleshooting:

  1. ✅ Kiểm tra network connectivity: ping server_ip
  2. ✅ Kiểm tra SSH port: telnet server_ip 22
  3. ✅ Kiểm tra firewall: sudo ufw status hoặc sudo firewall-cmd --list-all
  4. ✅ Kiểm tra SSH service: sudo systemctl status sshd
  5. ✅ Xem SSH logs: sudo tail -f /var/log/auth.log

Xem thêm: Khắc Phục Lỗi Không Đăng Nhập Được SSH

Package manager bị khóa (locked), không cài được phần mềm?​

# Ubuntu/Debian - xóa lock files
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*
sudo dpkg --configure -a
sudo apt update

# CentOS/RHEL - xóa yum lock
sudo rm -f /var/run/yum.pid
sudo yum clean all

Xem thêm: Sửa Lỗi Package Bị Khóa Trên Linux

Cron job không chạy, tại sao?​

Nguyên nhân phổ biến:

  1. ❌ Sai cú pháp crontab
  2. ❌ PATH environment không đầy đủ
  3. ❌ Script không có quyền execute
  4. ❌ Cron service không chạy

Cách kiểm tra:

# Kiểm tra cron service
sudo systemctl status cron

# Xem logs
sudo tail -f /var/log/syslog | grep CRON

# Test script manually
bash -x /path/to/script.sh

Xem thêm: Khắc Phục Lỗi Cron Job Không Chạy

🐋 Docker​

Docker container không start được?​

Troubleshooting steps:

# Xem logs chi tiết
docker logs container_name

# Xem events
docker events

# Kiểm tra resource
docker stats

# Inspect container
docker inspect container_name

Lỗi thường gặp:

  • Port đã được sử dụng → Đổi port mapping
  • Volume mount permission denied → Fix permissions
  • Out of memory → Tăng memory limit
  • Network issues → Kiểm tra docker network

Xem thêm: Docker: Quản lý Container hiệu quả

Docker chiếm quá nhiều disk space?​

# Xem disk usage
docker system df

# Dọn dẹp toàn bộ (cẩn thận!)
docker system prune -a --volumes

# Dọn dẹp từng phần
docker image prune -a # Xóa unused images
docker volume prune # Xóa unused volumes
docker container prune # Xóa stopped containers

Best practice: Dùng .dockerignore và multi-stage builds để giảm image size.

Docker Compose service không kết nối được với nhau?​

Kiểm tra network:

# Xem network
docker network ls
docker network inspect project_default

# Kiểm tra service name resolution
docker-compose exec service1 ping service2

Lưu ý: Dùng service name thay vì localhost để kết nối giữa các containers.

Xem thêm: Hướng Dẫn Docker Compose - Deploy Multi-Container Apps

🌐 Web Server (Nginx/Apache)​

Nginx trả về lỗi 502 Bad Gateway?​

Nguyên nhân phổ biến:

  1. Backend service không chạy:
# Kiểm tra PHP-FPM
sudo systemctl status php7.4-fpm

# Kiểm tra port
sudo netstat -tlnp | grep 9000
  1. Timeout quá thấp:
# Tăng timeout trong nginx.conf
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
  1. SELinux chặn:
sudo setsebool -P httpd_can_network_connect 1

Xem thêm: Khắc Phục Lỗi 403 và 404 Trên Nginx

Website chạy chậm, làm sao tối ưu Nginx?​

Quick wins:

# Enable Gzip compression
gzip on;
gzip_types text/plain text/css application/json;

# Enable caching
location ~* \.(jpg|jpeg|png|gif|css|js)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}

# Increase worker connections
worker_processes auto;
worker_connections 2048;

Xem thêm: Tối Ưu Hiệu Năng Nginx Cho Máy Chủ Web

Lỗi 403 Forbidden khi truy cập website?​

Nguyên nhân và giải pháp:

  1. Permission sai:
# Fix permissions
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
  1. Directory index thiếu:
location / {
index index.php index.html index.htm;
}
  1. SELinux context sai (CentOS/RHEL):
sudo chcon -R -t httpd_sys_content_t /var/www/html

🗄️ Database​

MySQL/MariaDB không start được?​

Troubleshooting:

# Xem logs
sudo tail -f /var/log/mysql/error.log

# Kiểm tra port
sudo netstat -tlnp | grep 3306

# Kiểm tra disk space
df -h

# Kiểm tra InnoDB
sudo mysqld --innodb-force-recovery=1

Lỗi phổ biến:

  • Disk full → Dọn dẹp disk
  • Port bị chiếm → Đổi port
  • InnoDB corruption → Recovery mode

Xem thêm: Thiết Lập MySQL Server trên Linux

Không kết nối được database từ ứng dụng?​

Checklist:

  1. ✅ Database service đang chạy
  2. ✅ Firewall cho phép port 3306
  3. ✅ User có quyền remote access:
GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
  1. ✅ bind-address trong my.cnf:
bind-address = 0.0.0.0  # Cho phép remote

Xem thêm: Khắc Phục Lỗi Không Kết Nối Database

Làm sao backup database tự động hàng ngày?​

#!/bin/bash
# /root/scripts/backup-db.sh

TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
BACKUP_DIR="/backup/mysql"
DB_NAME="your_database"
DB_USER="backup_user"
DB_PASS="secure_password"

# Create backup
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${TIMESTAMP}.sql.gz

# Keep only 7 days
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete

Cron job:

# Daily at 2 AM
0 2 * * * /root/scripts/backup-db.sh >> /var/log/db-backup.log 2>&1

Xem thêm: Sao lưu Database MySQL trên Linux

🔒 Bảo Mật​

Làm sao bảo mật SSH server?​

Best practices:

  1. Đổi port mặc định:
# /etc/ssh/sshd_config
Port 2222
  1. Disable root login:
PermitRootLogin no
  1. Dùng SSH key thay password:
# Tạo key
ssh-keygen -t ed25519 -C "[email protected]"

# Copy key lên server
ssh-copy-id user@server
  1. Enable fail2ban:
sudo apt install fail2ban
sudo systemctl enable fail2ban

Xem thêm: Bảo Mật SSH Với Key Authentication

Firewall nên mở những port nào?​

Minimal setup:

# Allow SSH (custom port)
sudo ufw allow 2222/tcp

# Allow HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Enable firewall
sudo ufw enable

Production server:

  • Chỉ mở ports cần thiết
  • Whitelist IP nếu có thể
  • Dùng fail2ban chống brute force
  • Regular audit với sudo ufw status verbose

Xem thêm: Cấu Hình UFW Firewall Chi Tiết

Làm sao kiểm tra server có bị hack không?​

Các dấu hiệu:

# 1. Kiểm tra user lạ
cat /etc/passwd | grep -v nologin

# 2. Kiểm tra process lạ
ps aux | grep -v "\" | sort -nrk 3,3 | head

# 3. Kiểm tra network connections
sudo netstat -tulpn | grep ESTABLISHED

# 4. Xem SSH login history
sudo last -a | head -20

# 5. Kiểm tra crontab
sudo crontab -l -u root

Tools hữu ích:

  • rkhunter - Rootkit detection
  • chkrootkit - Rootkit checker
  • aide - File integrity checker
  • lynis - Security auditing

🔧 Troubleshooting Chung​

Server bị out of memory (OOM), phải làm gì?​

Ngay lập tức:

# Xem process dùng nhiều RAM nhất
ps aux | sort -nrk 4,4 | head

# Kill process nếu cần
sudo kill -9 PID

# Xem OOM killer logs
sudo dmesg | grep -i "killed process"

Giải pháp lâu dài:

  1. Tăng RAM
  2. Add swap space
  3. Tối ưu ứng dụng
  4. Dùng caching (Redis/Memcached)

Làm sao monitor server 24/7?​

Free tools:

  • Netdata: Real-time monitoring đẹp, dễ dùng
  • Prometheus + Grafana: Professional stack
  • Zabbix: Enterprise-grade monitoring

Quick setup Netdata:

bash <(curl -Ss https://my-netdata.io/kickstart.sh)

Xem thêm: [Cài Đặt Netdata Trên Linux

Disk đầy, không xóa được file?​

# Tìm folder lớn nhất
du -h / | sort -rh | head -20

# Dọn dẹp logs
sudo journalctl --vacuum-size=100M
sudo find /var/log -name "*.log" -type f -mtime +30 -delete

# Dọn dẹp package cache
sudo apt clean # Ubuntu/Debian
sudo yum clean all # CentOS/RHEL

# Dọn dẹp Docker
docker system prune -a --volumes

Timezone server sai, làm sao sửa?​

# Xem timezone hiện tại
timedatectl

# Đổi sang Asia/Ho_Chi_Minh
sudo timedatectl set-timezone Asia/Ho_Chi_Minh

# Đồng bộ thời gian với NTP
sudo timedatectl set-ntp true

Xem thêm: Cấu Hình Timezone Trên Linux

📊 Performance Testing​

Làm sao test tốc độ server?​

Speedtest script của BacPV:

# Linux/macOS
curl -Lso- bacpv.com/speedtest.sh | bash

# Windows PowerShell
iwr bacpv.com/speedtest.ps1 | iex

Test gì:

  • ✅ CPU, RAM, Disk info
  • ✅ Disk speed (Sequential + Random I/O)
  • ✅ Network speed (International + Vietnam ISPs)
  • ✅ Latency (ping test)

Xem thêm: Hướng dẫn sử dụng Speedtest Script

Server mới nên chọn cấu hình nào?​

Nhỏ (Blog, Landing page):

  • 1 CPU, 1GB RAM, 20GB SSD
  • Ubuntu 22.04 hoặc AlmaLinux 9

Trung bình (Website, Small API):

  • 2 CPU, 2-4GB RAM, 40-80GB SSD
  • Load balancer nếu traffic cao

Lớn (E-commerce, High traffic):

  • 4+ CPU, 8GB+ RAM, 160GB+ SSD
  • Separate DB server
  • CDN cho static files
  • Redis/Memcached caching

💬 Các Câu Hỏi Khác​

BacPV.com có cung cấp dịch vụ tư vấn không?​

Hiện tại BacPV.com là nền tảng chia sẻ kiến thức miễn phí. Bạn có thể:

Làm sao đóng góp bài viết cho BacPV?​

  1. Fork repo: https://github.com/zelel009/bacpv.com
  2. Viết bài theo format Markdown
  3. Tạo Pull Request
  4. Chúng tôi sẽ review và merge

Tôi không tìm thấy bài viết về topic X?​

Vui lòng gửi yêu cầu qua:

Chúng tôi sẽ ưu tiên các topics được yêu cầu nhiều!


🆘 Cần hỗ trợ thêm?​

Không tìm thấy câu trả lời?

Thời gian phản hồi: Thường trong vòng 24-48 giờ làm việc.