服务器是网站运行的基石,稳定的运维是网站持续可用的保障。很多站长只关注建站和内容,却忽视了服务器的日常维护,导致网站经常出现宕机、被黑、性能下降等问题。本文将分享一套实用的Linux服务器运维规范,涵盖安全加固、性能优化、监控告警、备份恢复等核心环节。
一、系统初始化安全加固
新服务器上线后的第一步就是安全加固,以下是必须执行的操作:
- 修改SSH默认端口,禁止root直接登录
- 使用密钥登录,禁用密码登录
- 配置防火墙,只开放必要端口
- 安装fail2ban防止暴力破解
- 关闭不必要的系统服务
# 修改SSH配置
vim /etc/ssh/sshd_config
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
# 重启SSH服务
systemctl restart sshd
# 配置防火墙
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
# 安装fail2ban
yum install fail2ban -y
systemctl enable fail2ban && systemctl start fail2ban
二、性能优化配置
服务器性能直接影响网站访问速度。以下是关键优化项:
| 优化项 | 配置建议 | 效果 |
|---|---|---|
| Nginx gzip压缩 | 开启gzip,压缩级别6 | 减少传输体积60% |
| PHP OPcache | 内存128M,命中率>95% | PHP执行提速3-5倍 |
| MySQL缓存 | innodb_buffer_pool_size=物理内存60% | 数据库查询提速 |
| 静态资源缓存 | expires 7d,添加ETag | 减少重复请求 |
| Swap配置 | 物理内存的1-2倍 | 防止OOM崩溃 |
Nginx gzip配置示例:
gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_vary on;
gzip_disable "MSIE [1-6].";
三、监控告警体系
建立完善的监控体系,第一时间发现问题:
- 系统监控:CPU、内存、磁盘、网络流量(推荐Prometheus + Grafana)
- 服务监控:Nginx、MySQL、PHP-FPM进程状态
- 网站监控:HTTP状态码、响应时间、SSL证书有效期
- 日志监控:错误日志、慢查询日志、访问日志异常
简单的网站可用性监控脚本:
#!/bin/bash
URL="https://yourdomain.com"
STATUS=$(curl -s -o /dev/null -w "%{http_code}" )
if [ "" != "200" ]; then
echo "网站异常,状态码: " | mail -s "网站告警" admin@example.com
fi
四、备份策略
备份是最后一道防线,必须做到”3-2-1″原则:3份备份、2种介质、1份异地。
- 数据库备份:每日全量备份,保留7天
- 文件备份:每周全量,每日增量
- 配置备份:Nginx、PHP、MySQL配置文件
- 异地存储:备份同步到阿里云OSS或腾讯云COS
- 定期恢复演练:每月验证备份可正常恢复
# MySQL数据库备份脚本
#!/bin/bash
DATE=$(date +%Y%m%d)
mysqldump -u root -p密码 --all-databases | gzip > /backup/db_.sql.gz
# 保留最近7天
find /backup -name "db_*.sql.gz" -mtime +7 -delete
五、日志分析与故障排查
常用日志位置和分析命令:
- Nginx访问日志:/var/log/nginx/access.log
- Nginx错误日志:/var/log/nginx/error.log
- MySQL慢查询:/var/log/mysql/slow.log
- 系统日志:/var/log/messages
# 统计访问量前10的IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# 查看慢查询
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log
# 实时查看系统资源
htop
iotop
iftop
六、日常运维检查清单
| 频率 | 检查项 |
|---|---|
| 每日 | 网站可用性、备份状态、磁盘空间 |
| 每周 | 安全更新、日志分析、性能趋势 |
| 每月 | 备份恢复演练、安全审计、容量规划 |
| 每季度 | 系统升级、架构评估、灾难恢复演练 |