🖥️ 服务器搭建与运维
从零开始搭建团队内部服务器,
提供代码托管、CI/CD、文件共享等服务
项目背景
随着团队规模扩大,我们需要一个内部服务器来:
- 托管 Git 仓库(代码管理)
- 自动化构建与测试(CI/CD)
- 共享文件和文档
- 部署内部工具和服务
于是我主导搭建了一套基于 Linux 的服务器系统。
硬件配置
服务器主机
- CPU:Intel i7-10700
- 内存:32GB DDR4
- 存储:512GB SSD + 2TB HDD
- 网络:千兆以太网
网络拓扑
1 | 校园网 |
系统架构
操作系统
Ubuntu Server 22.04 LTS
- 稳定性好
- 社区支持完善
- 软件包丰富
服务组件
1. Git 代码托管 - Gitea
1 | # 安装 Gitea |
功能:
- 私有仓库管理
- 权限控制
- WebHook 支持
- Issue 跟踪
2. CI/CD - Jenkins
自动化构建流程:
1 | pipeline { |
3. 文件共享 - Samba
提供 Windows 风格的文件共享:
1 | [shared] |
4. 容器化 - Docker
使用 Docker 部署各类服务:
1 | # docker-compose.yml |
安全加固
1. 防火墙配置
1 | # 只开放必要端口 |
2. SSH 密钥认证
禁用密码登录,只允许密钥:
1 | # /etc/ssh/sshd_config |
3. 定期更新
1 | # 每周自动更新 |
4. Fail2ban 防暴力破解
1 | apt install fail2ban |
备份策略
自动备份脚本
1 |
|
异地备份
使用 rsync 同步到远程服务器:
1 | rsync -avz /backup/ user@remote:/backup/ |
监控与告警
系统监控 - Prometheus + Grafana
1 | # prometheus.yml |
监控指标:
- CPU 使用率
- 内存使用率
- 磁盘 I/O
- 网络流量
告警通知
当系统异常时,通过邮件/微信告警:
1 | def check_disk_usage(): |
性能优化
1. SSD 加速
- 系统盘:SSD
- 数据盘:HDD
- 使用 LVM 管理
2. 内存优化
1 | # 调整swap大小 |
3. 网络优化
1 | # 增大TCP缓冲区 |
使用统计
经过半年运行:
- 代码仓库:45个
- 团队成员:18人
- CI/CD构建:600+ 次
- 平均正常运行时间:99.5%
运维经验
踩过的坑
端口冲突
- 多个服务使用相同端口导致冲突
- 解决:统一规划端口分配
权限问题
- Docker容器内外权限不一致
- 解决:使用统一的UID/GID
磁盘满了
- 日志文件占满磁盘
- 解决:配置日志轮转
最佳实践
- 一切配置皆代码(Infrastructure as Code)
- 定期演练故障恢复
- 文档化所有操作流程
- 使用版本控制管理配置文件
后续计划
- 迁移到 Kubernetes 集群
- 添加对象存储服务(MinIO)
- 搭建内部知识库(Wiki.js)
- 实现高可用架构
服务器运维是一门实践性很强的技术,需要不断学习和总结经验。欢迎交流!

