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:
- CPU Usage:
top
htop # dễ nhìn hơn
- Memory Usage:
free -h
vmstat 1
- Disk I/O:
iostat -x 1
iotop
- 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:
- ✅ Kiểm tra network connectivity:
ping server_ip - ✅ Kiểm tra SSH port:
telnet server_ip 22 - ✅ Kiểm tra firewall:
sudo ufw statushoặcsudo firewall-cmd --list-all - ✅ Kiểm tra SSH service:
sudo systemctl status sshd - ✅ 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:
- ❌ Sai cú pháp crontab
- ❌ PATH environment không đầy đủ
- ❌ Script không có quyền execute
- ❌ 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:
- 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
- Timeout quá thấp:
# Tăng timeout trong nginx.conf
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
- 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:
- Permission sai:
# Fix permissions
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
- Directory index thiếu:
location / {
index index.php index.html index.htm;
}
- 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:
- ✅ Database service đang chạy
- ✅ Firewall cho phép port 3306
- ✅ User có quyền remote access:
GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
- ✅ 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:
- Đổi port mặc định:
# /etc/ssh/sshd_config
Port 2222
- Disable root login:
PermitRootLogin no
- 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
- 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 detectionchkrootkit- Rootkit checkeraide- File integrity checkerlynis- 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:
- Tăng RAM
- Add swap space
- Tối ưu ứng dụng
- 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ể:
- 📖 Đọc tài liệu chi tiết
- 💬 Đóng góp qua GitHub
- 📧 Liên hệ qua email: [email protected]
Làm sao đóng góp bài viết cho BacPV?
- Fork repo: https://github.com/zelel009/bacpv.com
- Viết bài theo format Markdown
- Tạo Pull Request
- 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:
- 📧 Email: [email protected]
- 🐙 GitHub Issues: Tạo issue mới
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?
- 📧 Email: [email protected]
- 🐙 GitHub: https://github.com/zelel009/bacpv.com
- 📝 Đóng góp: Fork và tạo Pull Request
Thời gian phản hồi: Thường trong vòng 24-48 giờ làm việc.