服务器操作系统安装配置标准推荐
操作系统安装配置规范
从事运维这么长时间,每到一个新公司,都会涉及到写标准化、规范化、流程化、制度化文档的工作,这里就整理了一份,但愿对大家有帮助。
操作系统选型
以下都是推荐值,如果没有特殊的需求,请都按照以下推荐值来操作
- 实体机:首选 CentOS 7 系列的最新版,其次选 Ubuntu Server 的最新的 LTS 的 64 位版本,目前最新的是 18.04
- 阿里云:选 Aliyun Linux 2 的最新版,当下是 2.1903;选 64 位版本
- AWS:选 Amazon LInux 2 的最新版;选 64 位版本
操作系统安装
SWAP 区
现在基本上云主机缺省都没有 SWAP 区。
建议:
- 启用 SWAP 区,大小跟物理内存一样即可
- 在 kernel 参数里调低使用 SWAP 区的概率,详见 [[#10]]
公网地址
- 安装时不要选公网
- 如果需要公网
- 安装完以后单独购买 EIP,并绑定过来(需要注意的是:可能需要提高可买 EIP 数量的限额)
安全组
- 如无特殊需求一定要勾选 sg-whitelist 安全组
- 如有公网登录管理需求请勾选 sg-ssh 安全组
- 跑 web 服务的服务器还要勾选 sg-web 安全组
数据盘
- 裸盘格式化成 ext4 文件系统
- 挂载到系统的 /data 下
- /etc/fstab 里用 UUID 取代设备名,dump 和 fsck 两个选项都用 0
操作系统配置
主机名
idc 名称-项目-角色-集群-节点
用户和组
- 新建一个 sre 组
- sre 组是运维团队所有成员及用户 deploy 的副组
- 每个运维团队成员都单独建一个账号并为每个成员部署自己的公钥
- 新建 deploy 用户
- 部署 deploy 用户的公钥(私钥在 {K77},~/.ssh/authenticated_keys 文件里写公钥之前,写 from=”10.254.1.201/32 “,这里假设 10.254.1.201 是用 deploy 用户登录服务器的 IP 地址)
ssh 配置
- 禁止 root 直接登录
- 禁止非 root 用户密码登录
- 端口号改成 38522(三号楼 B 座 5 层 22 端口)
yum 配置
参见文档:[[|]]
sudo 权限
设置 sre 组有不需要密码用 root 身份执行所有命令的权限
kernel 调优
调优的一些 kernerl 参数,放在 /etc/sysctl.d/ 目录下的文件里
disable IPv6
cat /etc/sysctl.d/disableipv6.conf
,显示内容如下:
1 | net.ipv6.conf.all.disable_ipv6 = 1 |
NETWORK
cat /etc/sysctl.d/network.conf
,显示内容如下:
1 | # 尽可能多的扩展本地端口使用范围 |
系统
cat /etc/sysctl.d/os.conf
,显示内容如下:
1 | # 尽可能少的使用 swap |
时区配置
Aliyun Linux 的话,不需要配置,直接就是好的。
否则:
1 | cd /etc |
自启动服务调整
如下服务是建议取消随机自启动的:
- atd
- aliyun(阿里云自带服务,建议干掉)
- aegis(阿里云自带服务,建议干掉)
参照如下代码,将不需要随机自启动的服务干掉:
How to disable startup services from AliyunIPv6
参见 [[#kernel | kernel 调优]]部分
disable SELinux
Aliyun Linux 不用做,缺省就是 disable 的。
其他的,用如下代码:
How to disable SELinux on CentOS 7.x in code定时任务(cron)
定时任务的配置文件,按照具体情况不同,分别放到如下目录下:
- /etc/cron.monthly:用来放每月执行但不太关心具体执行时间的任务
- /etc/cron.weekly:用来放每周执行但不关心具体执行时间的任务
- /etc/cron.daily:用来放每天执行但不关心具体执行时间的任务
- /etc/cron.hourly:用来放每小时执行但不关心具体执行时间的任务
- /etc/cron.d:用来放不适合放如上四个目录的任务