Linux服务器运维指南

Linux服务器运维指南

图片[1]-Linux服务器运维指南

在当今数字化时代,Linux服务器已成为企业IT基础设施的核心组成部分。无论是Web应用、数据库服务,还是微服务架构,都离不开稳定可靠的Linux服务器支撑。本文将为您提供一份全面的Linux服务器运维指南,从基础配置到高级优化,从安全防护到故障排查,帮助您构建和维护一个高效、安全、稳定的服务器环境。

一、Linux服务器基础配置

1.1 系统安装与初始化

 1.1.1 系统选择

选择合适的Linux发行版是运维工作的第一步:

Ubuntu Server
- 优势:更新频繁,社区支持好,适合新手
- 适用场景:Web服务器、开发环境
- 推荐版本:Ubuntu 22.04 LTS

CentOS/Rocky Linux
- 优势:稳定性强,企业级支持
- 适用场景:生产环境、企业应用
- 推荐版本:Rocky Linux 9

Debian
- 优势:稳定性极高,安全性好
- 适用场景:关键业务系统
- 推荐版本:Debian 12

1.1.2 安装配置

```bash
# 系统更新
sudo apt update && sudo apt upgrade -y  # Ubuntu/Debian
sudo yum update -y  # CentOS/Rocky Linux

# 设置时区
sudo timedatectl set-timezone Asia/Shanghai

# 配置NTP服务
sudo apt install ntp -y  # Ubuntu/Debian
sudo yum install chrony -y  # CentOS/Rocky Linux
```

1.2 用户管理

1.2.1 创建管理员用户

```bash
# 创建新用户
sudo adduser mrzadmin

# 添加到sudo组
sudo usermod -aG sudo mrzadmin  # Ubuntu/Debian
sudo usermod -aG wheel mrzadmin  # CentOS/Rocky Linux

# 设置SSH密钥认证
ssh-keygen -t rsa -b 4096 -C "mrzadmin@mrz2516.com"
```

1.2.2 SSH安全配置

```bash
# 编辑SSH配置文件
sudo nano /etc/ssh/sshd_config

# 关键配置项
Port 2222                    # 修改默认端口
PermitRootLogin no           # 禁止root登录
PasswordAuthentication no    # 禁用密码认证
PubkeyAuthentication yes     # 启用密钥认证
MaxAuthTries 3              # 最大认证尝试次数
```

1.3 网络配置

1.3.1 网络接口配置

```bash
# 查看网络接口
ip addr show

# 配置静态IP(Ubuntu/Debian)
sudo nano /etc/netplan/01-netcfg.yaml

network:
  version: 2
  ethernets:
    eth0:
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]

# 应用配置
sudo netplan apply
```

1.3.2 防火墙配置

```bash
# UFW防火墙(Ubuntu)
sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# firewalld防火墙(CentOS/Rocky Linux)
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
```

 二、系统监控与性能优化

2.1 系统监控工具

2.1.1 基础监控命令

```bash
# CPU使用率
top
htop  # 更友好的界面

# 内存使用情况
free -h
cat /proc/meminfo

# 磁盘使用情况
df -h
du -sh /*

# 网络连接状态
netstat -tulpn
ss -tulpn

# 系统负载
uptime
cat /proc/loadavg
```

2.1.2 高级监控工具

Prometheus + Grafana

```bash
# 安装Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
tar xvf prometheus-*.tar.gz
cd prometheus-*

# 配置Prometheus
cat > prometheus.yml << EOF
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
EOF

# 启动Prometheus
./prometheus --config.file=prometheus.yml
```

**Node Exporter**
```bash
# 安装Node Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar xvf node_exporter-*.tar.gz
cd node_exporter-*

# 启动Node Exporter
./node_exporter
```

2.2 性能优化

2.2.1 内核参数优化

```bash
# 编辑系统参数
sudo nano /etc/sysctl.conf

# 网络优化参数
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_congestion_control = bbr

# 文件系统优化
fs.file-max = 65536
vm.swappiness = 10

# 应用参数
sudo sysctl -p
```

 2.2.2 磁盘I/O优化

```bash
# 查看磁盘I/O状态
iostat -x 1

# 优化磁盘调度器
echo 'ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="deadline"' | sudo tee /etc/udev/rules.d/60-scheduler.rules

# 启用TRIM(SSD)
sudo fstrim -v /
```

三、安全配置与防护

3.1 基础安全配置

3.1.1 系统安全加固

```bash
# 禁用不必要的服务
sudo systemctl disable bluetooth
sudo systemctl disable cups
sudo systemctl disable avahi-daemon

# 配置密码策略
sudo nano /etc/login.defs

PASS_MAX_DAYS   90
PASS_MIN_DAYS   1
PASS_MIN_LEN    8
PASS_WARN_AGE   7
```

3.1.2 文件权限管理

```bash
# 设置关键文件权限
sudo chmod 600 /etc/shadow
sudo chmod 644 /etc/passwd
sudo chmod 600 /etc/ssh/sshd_config

# 查找SUID文件
find / -perm -4000 -type f -exec ls -la {} \;
```

3.2 入侵检测

3.2.1 Fail2ban配置

```bash
# 安装Fail2ban
sudo apt install fail2ban -y  # Ubuntu/Debian
sudo yum install fail2ban -y  # CentOS/Rocky Linux

# 配置Fail2ban
sudo nano /etc/fail2ban/jail.local

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
```

3.2.2 日志监控

```bash
# 配置日志轮转
sudo nano /etc/logrotate.d/custom

/var/log/*.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 644 root root
}
```

3.3 定期安全更新

```bash
# 设置自动更新
sudo apt install unattended-upgrades -y  # Ubuntu/Debian
sudo dpkg-reconfigure -plow unattended-upgrades

# 配置安全更新
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
```

四、服务部署与管理

4.1 Web服务器配置

4.1.1 Nginx配置

```bash
# 安装Nginx
sudo apt install nginx -y  # Ubuntu/Debian
sudo yum install nginx -y  # CentOS/Rocky Linux

# 基础配置
sudo nano /etc/nginx/sites-available/mrz2516.com

server {
    listen 80;
    server_name mrz2516.com www.mrz2516.com;
    
    root /var/www/mrz2516.com;
    index index.html index.php;
    
    location / {
        try_files $uri $uri/ =404;
    }
    
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }
    
    # 安全配置
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header X-Content-Type-Options "nosniff" always;
}
```

4.1.2 SSL证书配置

```bash
# 安装Certbot
sudo apt install certbot python3-certbot-nginx -y

# 获取SSL证书
sudo certbot --nginx -d mrz2516.com -d www.mrz2516.com

# 自动续期
sudo crontab -e
0 12 * * * /usr/bin/certbot renew --quiet
```

4.2 数据库配置

4.2.1 MySQL优化

```bash
# 安装MySQL
sudo apt install mysql-server -y

# 安全配置
sudo mysql_secure_installation

# 性能优化配置
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
query_cache_size = 128M
max_connections = 200
```

4.2.2 Redis配置

```bash
# 安装Redis
sudo apt install redis-server -y

# 安全配置
sudo nano /etc/redis/redis.conf

bind 127.0.0.1
requirepass your_strong_password
maxmemory 256mb
maxmemory-policy allkeys-lru
```

4.3 容器化部署

4.3.1 Docker配置

```bash
# 安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 配置Docker用户组
sudo usermod -aG docker $USER

# Docker Compose配置
cat > docker-compose.yml << EOF
version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    restart: unless-stopped
  
  app:
    image: node:16-alpine
    working_dir: /app
    volumes:
      - ./app:/app
    command: npm start
    restart: unless-stopped
EOF
```

五、备份与恢复

5.1 数据备份策略

5.1.1 文件备份

```bash
# 创建备份脚本
cat > /usr/local/bin/backup.sh << 'EOF'
#!/bin/bash

BACKUP_DIR="/backup/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR

# 备份重要配置文件
tar -czf $BACKUP_DIR/configs.tar.gz /etc/nginx /etc/mysql /etc/redis

# 备份网站数据
tar -czf $BACKUP_DIR/website.tar.gz /var/www

# 备份数据库
mysqldump -u root -p --all-databases > $BACKUP_DIR/databases.sql

# 删除7天前的备份
find /backup -type d -mtime +7 -exec rm -rf {} \;
EOF

chmod +x /usr/local/bin/backup.sh

# 添加到定时任务
sudo crontab -e
0 2 * * * /usr/local/bin/backup.sh
```

5.1.2 系统备份

```bash
# 创建系统镜像
sudo dd if=/dev/sda of=/backup/system_backup.img bs=4M status=progress

# 使用rsync增量备份
rsync -avz --delete /var/www/ /backup/website/
rsync -avz --delete /etc/ /backup/configs/
```

5.2 灾难恢复

5.2.1 恢复脚本

```bash
cat > /usr/local/bin/restore.sh << 'EOF'
#!/bin/bash

RESTORE_DATE=$1
BACKUP_DIR="/backup/$RESTORE_DATE"

if [ ! -d "$BACKUP_DIR" ]; then
    echo "备份目录不存在: $BACKUP_DIR"
    exit 1
fi

# 恢复配置文件
tar -xzf $BACKUP_DIR/configs.tar.gz -C /

# 恢复网站数据
tar -xzf $BACKUP_DIR/website.tar.gz -C /

# 恢复数据库
mysql -u root -p < $BACKUP_DIR/databases.sql

# 重启服务
systemctl restart nginx
systemctl restart mysql
systemctl restart redis

echo "恢复完成: $RESTORE_DATE"
EOF

chmod +x /usr/local/bin/restore.sh
```

六、故障排查与维护

6.1 常见问题排查

6.1.1 系统性能问题

```bash
# 查看系统资源使用情况
top -p 1
iotop
nethogs

# 查看进程状态
ps aux --sort=-%cpu | head -10
ps aux --sort=-%mem | head -10

# 查看网络连接
netstat -tulpn | grep ESTABLISHED
ss -tulpn | grep ESTABLISHED
```

6.1.2 服务故障排查

```bash
# 查看服务状态
systemctl status nginx
systemctl status mysql
systemctl status redis

# 查看日志
journalctl -u nginx -f
tail -f /var/log/nginx/error.log
tail -f /var/log/mysql/error.log

# 检查端口占用
netstat -tulpn | grep :80
lsof -i :80
```

6.2 自动化运维

6.2.1 Ansible配置

```bash
# 安装Ansible
sudo apt install ansible -y

# 创建inventory文件
cat > inventory.ini << EOF
[webservers]
web1 ansible_host=192.168.1.100
web2 ansible_host=192.168.1.101

[dbservers]
db1 ansible_host=192.168.1.200
EOF

# 创建playbook
cat > deploy.yml << EOF
---
- hosts: webservers
  become: yes
  tasks:
    - name: Update system
      apt:
        update_cache: yes
        upgrade: yes
    
    - name: Install nginx
      apt:
        name: nginx
        state: present
    
    - name: Start nginx
      service:
        name: nginx
        state: started
        enabled: yes
EOF

# 执行playbook
ansible-playbook -i inventory.ini deploy.yml
```

七、监控告警系统

7.1 监控脚本

```bash
cat > /usr/local/bin/monitor.sh << 'EOF'
#!/bin/bash

# 检查磁盘使用率
DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ $DISK_USAGE -gt 80 ]; then
    echo "警告: 磁盘使用率超过80%: ${DISK_USAGE}%" | mail -s "服务器告警" admin@mrz2516.com
fi

# 检查内存使用率
MEM_USAGE=$(free | awk 'NR==2{printf "%.2f", $3*100/$2}')
if (( $(echo "$MEM_USAGE > 80" | bc -l) )); then
    echo "警告: 内存使用率超过80%: ${MEM_USAGE}%" | mail -s "服务器告警" admin@mrz2516.com
fi

# 检查服务状态
SERVICES=("nginx" "mysql" "redis")
for service in "${SERVICES[@]}"; do
    if ! systemctl is-active --quiet $service; then
        echo "警告: 服务 $service 未运行" | mail -s "服务器告警" admin@mrz2516.com
    fi
done
EOF

chmod +x /usr/local/bin/monitor.sh

# 添加到定时任务
sudo crontab -e
*/5 * * * * /usr/local/bin/monitor.sh
```

7.2 日志分析

```bash
# 安装日志分析工具
sudo apt install logwatch -y

# 配置日志报告
sudo nano /etc/logwatch/conf/logwatch.conf

Output = mail
Format = html
MailTo = admin@mrz2516.com
Detail = High
```

总结

Linux服务器运维是一个系统工程,需要从基础配置、安全防护、性能优化、监控告警等多个维度进行全面管理。通过本文提供的指南,您可以:

1. 建立完善的运维体系:从系统安装到服务部署,形成标准化的运维流程
2. 保障系统安全:通过安全配置、入侵检测、定期更新等措施,确保服务器安全
3. 优化系统性能:通过监控工具和性能调优,提升服务器运行效率
4. 实现自动化运维:通过脚本和工具,减少人工操作,提高运维效率
5. 建立备份恢复机制:确保数据安全和业务连续性

最佳实践建议

1. 定期更新:保持系统和软件包的最新版本
2. 监控告警:建立完善的监控和告警机制
3. 备份策略:制定合理的备份和恢复策略
4. 文档管理:维护详细的运维文档和操作手册
5. 团队协作:建立运维团队协作机制

通过持续学习和实践,您将能够构建一个高效、安全、稳定的Linux服务器环境,为企业业务发展提供强有力的技术支撑。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容