南通市网站建设_网站建设公司_建站流程_seo优化
2025/12/22 11:10:33 网站建设 项目流程

在上家公司干了三年运维,离职前把服务器文档整理了一遍。

新同事接手的时候说这个文档太有用了,让我分享出来。那就发一下吧。

为什么要写服务器文档

不写文档的后果:

  • 你休假,服务出问题,电话被打爆
  • 你离职,新人一脸懵
  • 你自己3个月后也忘了当初怎么配的

写文档的好处:

  • 解放自己
  • 方便交接
  • 出问题能快速定位

文档结构

服务器文档/ ├── 01-服务器清单.md ├── 02-网络架构图.md ├── 03-各服务部署说明/ │ ├── Nginx.md │ ├── MySQL.md │ ├── Redis.md │ └── ... ├── 04-日常运维手册.md ├── 05-故障处理手册.md ├── 06-账号权限.md(加密) └── 07-变更记录.md

下面放模板,可以直接复制用。


模板一:服务器清单

# 服务器清单 更新时间:2025-12-22 维护人:xxx ## 生产环境 | 主机名 | IP | 配置 | 系统 | 用途 | 负责人 | |--------|-----|------|------|------|--------| | prod-web-01 | 192.168.1.10 | 8C16G | Ubuntu 22.04 | Nginx+Web | 张三 | | prod-web-02 | 192.168.1.11 | 8C16G | Ubuntu 22.04 | Nginx+Web | 张三 | | prod-db-01 | 192.168.1.20 | 16C64G | Ubuntu 22.04 | MySQL主库 | 李四 | | prod-db-02 | 192.168.1.21 | 16C64G | Ubuntu 22.04 | MySQL从库 | 李四 | | prod-redis-01 | 192.168.1.30 | 8C32G | Ubuntu 22.04 | Redis | 张三 | ## 测试环境 | 主机名 | IP | 配置 | 系统 | 用途 | |--------|-----|------|------|------| | test-all-01 | 192.168.2.10 | 4C8G | Ubuntu 22.04 | 测试环境全家桶 | ## 云服务器 | 名称 | 提供商 | IP | 配置 | 用途 | 到期时间 | |------|--------|-----|------|------|----------| | cdn-origin | 云服务器 | 47.xx.xx.xx | 2C4G | CDN源站 | 2026-06-01 | ## 远程访问 - 生产环境:通过跳板机(192.168.1.1)访问 - 测试环境:直连或通过星空组网 - 外网服务器:SSH直连

模板二:服务部署说明

# MySQL 部署说明 ## 基本信息 | 项目 | 值 | |------|-----| | 版本 | MySQL 8.0.35 | | 端口 | 3306 | | 数据目录 | /data/mysql | | 配置文件 | /etc/mysql/mysql.conf.d/mysqld.cnf | | 日志目录 | /var/log/mysql | ## 架构

prod-db-01 (主) ──复制──> prod-db-02 (从)
192.168.1.20 192.168.1.21

## 关键配置 ```ini # /etc/mysql/mysql.conf.d/mysqld.cnf [mysqld] server-id = 1 log_bin = /data/mysql/binlog binlog_format = ROW max_connections = 500 innodb_buffer_pool_size = 32G

常用命令

# 启动/停止systemctl start mysql systemctl stop mysql systemctl status mysql# 登录mysql -u root -p# 查看主从状态(从库执行)SHOW SLAVE STATUS\G# 查看连接数SHOW PROCESSLIST;SHOW STATUS LIKE'Threads_connected';# 查看慢查询SHOW VARIABLES LIKE'slow_query%';

备份策略

  • 全量备份:每天凌晨2点,保留7天
  • 备份脚本:/opt/scripts/mysql_backup.sh
  • 备份位置:/backup/mysql/
# 手动备份/opt/scripts/mysql_backup.sh# 恢复mysql -u root -p</backup/mysql/xxx.sql

监控告警

指标阈值告警方式
连接数>400钉钉
主从延迟>60s电话
磁盘空间>80%钉钉

常见问题

Q: 连接数满了怎么办?

# 查看连接SHOW PROCESSLIST;# 杀死空闲连接SELECT CONCAT('KILL ', id,';')FROM information_schema.processlist WHERE Command='Sleep'AND Time>300;

Q: 主从同步断了怎么办?

# 查看错误SHOW SLAVE STATUS\G# 跳过错误(谨慎使用)STOP SLAVE;SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;START SLAVE;
--- ## 模板三:日常运维手册 ```markdown # 日常运维手册 ## 每日检查 ```bash #!/bin/bash # daily_check.sh echo "=== 磁盘空间 ===" df -h echo "=== 内存使用 ===" free -h echo "=== CPU负载 ===" uptime echo "=== 服务状态 ===" systemctl status nginx mysql redis echo "=== 最近错误日志 ===" tail -20 /var/log/nginx/error.log tail -20 /var/log/mysql/error.log

日志位置

服务日志位置
Nginx/var/log/nginx/
MySQL/var/log/mysql/
应用/var/log/app/
系统/var/log/syslog

定时任务

# 查看所有定时任务crontab-lcat/etc/crontabls/etc/cron.d/

当前定时任务:

时间任务脚本
每天02:00MySQL备份/opt/scripts/mysql_backup.sh
每天03:00日志清理/opt/scripts/log_clean.sh
每5分钟健康检查/opt/scripts/health_check.sh

常用排查命令

# 查看端口占用netstat-tlnp|grep3306ss -tlnp|grep3306# 查看进程psaux|grepnginxtop-c# 查看网络连接netstat-an|grepESTABLISHED|wc-l# 查看文件打开数lsof|wc-llsof-p<pid>|wc-l# 查看磁盘IOiostat -x1# 查看网络流量iftop -i eth0

服务重启顺序

如果需要重启所有服务:

1. 摘掉负载均衡 2. 停止应用 3. 停止Redis 4. 停止MySQL 5. 启动MySQL 6. 启动Redis 7. 启动应用 8. 加回负载均衡
--- ## 模板四:故障处理手册 ```markdown # 故障处理手册 ## 故障分级 | 级别 | 定义 | 响应时间 | |------|------|---------| | P0 | 核心服务不可用 | 5分钟 | | P1 | 部分功能受影响 | 15分钟 | | P2 | 性能下降 | 30分钟 | | P3 | 小问题 | 工作时间处理 | ## 常见故障及处理 ### 1. 网站打不开 排查步骤: ```bash # 1. 检查Nginx systemctl status nginx tail -f /var/log/nginx/error.log # 2. 检查后端服务 curl localhost:8080/health # 3. 检查数据库 mysql -u root -p -e "SELECT 1" # 4. 检查网络 ping 外部IP telnet localhost 80

2. 数据库连接超时

# 1. 查看连接数mysql -e"SHOW STATUS LIKE 'Threads_connected'"# 2. 查看慢查询mysql -e"SHOW PROCESSLIST"|grep-v Sleep# 3. 如果连接数满,杀掉空闲连接mysql -e"SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE Command='Sleep' AND Time>300"|mysql

3. 磁盘空间满

# 1. 找大文件du-sh /*|sort-rh|head-10find/ -size +1G -type f# 2. 清理日志rm/var/log/nginx/access.log.*.gz systemctl reload nginx# 3. 清理Dockerdocker system prune -a

4. OOM Kill

# 1. 查看OOM记录dmesg|grep-i oom# 2. 找到内存占用最高的进程psaux --sort=-%mem|head-10# 3. 重启服务或增加内存限制

紧急联系人

角色姓名电话负责范围
运维负责人张三138xxxx基础设施
DBA李四139xxxx数据库
后端负责人王五137xxxx应用问题
--- ## 模板五:账号权限 ```markdown # 账号权限(机密) ## 服务器账号 | 用途 | 用户名 | 密码 | 备注 | |------|--------|------|------| | 跳板机 | ops | ****** | 所有人使用 | | root | root | ****** | 仅运维使用 | 密码存放位置:公司密码管理器 / 离线Excel加密文件 ## 数据库账号 | 数据库 | 用户名 | 权限 | 用途 | |--------|--------|------|------| | MySQL | root | ALL | 管理 | | MySQL | app_user | 增删改查 | 应用使用 | | MySQL | read_only | 只读 | 查询使用 | ## SSH密钥 - 公钥位置:/home/ops/.ssh/authorized_keys - 私钥位置:找运维负责人获取 ## 第三方服务 | 服务 | 账号 | 密码 | 备注 | |------|------|------|------| | 云平台 | admin@xxx.com | ****** | 主账号 | | 监控平台 | admin | ****** | Grafana |

模板六:变更记录

# 变更记录 ## 2025年12月 ### 2025-12-20 MySQL配置优化 - 变更人:张三 - 变更内容:调整innodb_buffer_pool_size从16G到32G - 变更原因:数据库查询变慢,内存利用率低 - 影响范围:MySQL主从库 - 回滚方案:改回16G - 变更结果:成功,QPS提升20% ### 2025-12-15 Nginx升级 - 变更人:张三 - 变更内容:Nginx从1.18升级到1.24 - 变更原因:安全漏洞修复 - 影响范围:所有Web服务器 - 回滚方案:apt install nginx=1.18.0-1 - 变更结果:成功

我的经验

  1. 文档要放在团队都能访问的地方:GitLab Wiki、Confluence、飞书文档都行,别放本地
  2. 文档要有人维护:每次变更后更新,不然就过时了
  3. 敏感信息单独管理:密码别直接写文档里
  4. 画架构图:一图胜千言,用draw.io或者ProcessOn画

最后,如果服务器分布在不同网络(公司、机房、云),交接的时候别忘了说明怎么访问。


模板放这了,拿走直接用,能帮你省不少时间。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询