1. 运维基本规范
以下条件用于约定 生产环境 的服务器运维。
1. 云服务器选型
- 阿里云:ECS 云服务器
- 阿里云:轻量应用服务器
- Vultr:适用于海外服务器
2. 操作系统选型
不要在云服务厂商提供的发行版本中选择任何应用镜像,仅选择 操作系统镜像。
应用镜像的版本和环境依赖更复杂,不利于后期维护,不如直接拉取 Docker 镜像那么简单。
考虑到 Linux 社区支持和稳定性问题,全部使用 Debian,版本为 11.x ~ 12.x。
TIP
- Debian / Ubuntu 是 Linux 生态中社区最大的发行版,软件支持最好
- Debian 是 Ubuntu 的上游发行版本,能兼容大部分开源的 Ubuntu 的软件
- Debian 滚动几乎不会出现任何问题,稳定性极高
3. 服务器初始化
请使用 root
用户执行初始化脚本。
curl -O https://files.alexsun.top/debian-basic.sh
chmod +x debian-basic.sh
# 更新软件、添加管理员用户、安装 Docker、设置别名
sudo ./debian-basic.sh --update --admin --docker --alias
# 如果使用的是阿里云,添加 --aliyun 参数
sudo ./debian-basic.sh --update --admin --docker --alias --aliyun
TIP
可以参考 服务器初始化脚本,如果有更新,请放到此项目的 src/.vuepress/public/scripts/
文件夹中。
4. 服务器软件
不允许安装除了 apt
所提供的软件以外的任何软件,防止出现第三方软件污染系统或造成安全威胁。
允许在主机使用 Nginx 部署静态资源或反向代理,但必须使用 apt
安装 Nginx。不允许使用裸机部署除 Nginx 以外的服务,例如不允许直接运行如 PHP、Node.js 等服务。
不允许使用宝塔面板等手动管理软件,生产环境服务器应该确保稳定纯净,引入面板软件则不利于问题的排查,需要运维人员单独学习某一种面板软件,增加不确定性。如果有自动化替换证书等需要的,使用特定领域的软件解决,如 Certbot 的配置。
任何 crontab
计划任务和自定义 Shell 脚本必须有文档记录和备份,防止服务器丢失。如果配置过程比较复杂,必须写清楚文档。
项目开发者有义务提供 Dockerfile
或者 docker-compose.yml
,并且提供相关环境参数说明。
任何项目均优先使用 Docker 部署,可以使用 Docker Compose 或者 Kubernetes。
如果需要用到第三方可执行二进制文件来部署服务,需要写清楚 Dockerfile
或者 docker-compose.yml
,然后构建镜像并运行。
5. 服务器操作
严禁使用密码登录服务器,一律使用 免密登录。密码登录可能被抓包或暴力破解。
如果你正在使用阿里云,可以在第一次使用在线的远程连接工具配置免密登录。这样可以避免复制密钥文件等操作。
不允许使用 root
用户进行常规的操作,默认的操作用户为 admin
。如果你正在使用 root
环境,可先切换到 admin
用户:
su admin