服务器操作系统安装配置标准推荐

操作系统安装配置规范

从事运维这么长时间,每到一个新公司,都会涉及到写标准化、规范化、流程化、制度化文档的工作,这里就整理了一份,但愿对大家有帮助。

操作系统选型

以下都是推荐值,如果没有特殊的需求,请都按照以下推荐值来操作

  • 实体机:首选 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
2
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

NETWORK

cat /etc/sysctl.d/network.conf,显示内容如下:

1
2
3
4
5
6
7
8
9
# 尽可能多的扩展本地端口使用范围
net.ipv4.ip_local_port_range = 1025 65535
# accept 队列(保存 ESTABLISHED 状态的连接队列)。
# 队列长度为 min(net.core.somaxconn,backlog),
# syncookies 打开的情况下,不需要设置太大,但缺省的 128 实在有点小
net.core.somaxconn = 2048
# 半连接队列(保存SYN_RECV状态的队列)的长度,
# syncookies 打开的情况下,不需要设置太大
net.ipv4.tcp_max_syn_backlog = 2048

系统

cat /etc/sysctl.d/os.conf,显示内容如下:

1
2
# 尽可能少的使用 swap
vm.swappiness = 10

时区配置

Aliyun Linux 的话,不需要配置,直接就是好的。

否则:

1
2
3
cd /etc
mv localtime localtime.bak
ln -s /usr/share/zoneinfo/Asia/Shanghai localtime

自启动服务调整

如下服务是建议取消随机自启动的:

  • atd
  • aliyun(阿里云自带服务,建议干掉)
  • aegis(阿里云自带服务,建议干掉)

参照如下代码,将不需要随机自启动的服务干掉:

How to disable startup services from Aliyun

IPv6

参见 [[#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:用来放不适合放如上四个目录的任务