基于 CentOS 7 的 Linux 服务器通用基础环境搭建

2021-09-29
4分钟阅读时长

为了团队中对于服务器的运行环境的统一和规范要求,不管是交付到的是云服务器还是物理服务器,都要求在拿到服务器权限后,完成基础环境搭建,以下内容,就是对基础环境搭建的说明和要求。

系统安装

交付的服务器基础操作系统,应为 CentOS 7.x 系列,交付 root 密码(或者配置了访问的密钥),开启 ssh 访问,至少有一个能访问的 yum 源。

系统配置检查

使用 root 账号登录(或者,具有 root 权限的账号)登录后,检查服务器的 CPU、内存、硬盘、网卡 IP 是否和所描述的相符,如果不符,则需及时反映。

CPU 的核数

确认 CPU 核数是否和交付的要求相一致。

# 物理 CPU
# cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l

# 虚拟 CPU
# cat /proc/cpuinfo | grep ^processor | sort | uniq | wc -l

# CPU 的核心
# cat /proc/cpuinfo | grep 'cpu cores' | uniq

内存的大小和条数

如果 dmidecode 工具不存在,使用 Yum 先进行安装。确认内存大小是否和交付的要求相一致。

# free -m
# dmidecode -t memory | grep Size

硬盘容量和数据盘是否挂载

如果存在数据盘未挂载的情况,参考本文下面的内容,及时将数据盘挂载好。确认硬盘容量是否和交付的要求相一致。

# df -h
# fdisk -l

操作系统版本和架构

确认操作系统的版本和架构等,是否和交付的要求相一致。

# cat /etc/centos-release
# uname -a

系统升级

使用 root 账号登录(或者,具有 root 权限的账号)登录后,使用 yum 工具将系统升级到最新状态,确保系统的安全,并安装最基本的应用软件。以下命令须按次序执行。

# yum clean all && yum makecache
# yum -y install epel-release
# yum -y update

安装一些基础软件包

# yum -y install sudo vim
# yum -y install zlib-devel bzip2-devel ncurses-devel
# yum -y install make gcc-c++ cmake bison-devel swig patch sqlite-devel
# yum -y install readline readline-devel rsync nload ntp ntpdate wget
# yum -y install net-tools telnet firewalld
# yum -y install libjpeg-devel python-devel python-setuptools
# easy_install pip

加速 ssh 的登录

在 ssh 登录时,默认可能会对主机名进行 DNS 解析,忽略这些 DNS 解析可以加速 ssh 登录。

# echo "GSSAPIAuthentication no" >> /etc/ssh/sshd_config
# echo "UseDNS no" >> /etc/ssh/sshd_config
# echo "ClientAliveInterval 60" >> /etc/ssh/sshd_config
# systemctl restart sshd.service

检查时区和系统时间

检查当前的时区是否是需要的本地时区,通常: Asia/Shanghai - CST - 为北京东八区的时区

# date +%Z

将当前时区设置为北京时区,其他时区,根据具体情况设置,或者使用 tzselect 工具

# cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

同步时间(以下使用国内服务器,海外服务器,选择其他合适的时间服务器):

# ntpdate cn.pool.ntp.org

关闭 SeLinux 及调整防火墙

关闭 SeLinux

# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

查看防火墙运行状态,并开放 80 端口:

# systemctl enable firewalld
# systemctl start firewalld
# systemctl status firewalld

# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --permanent --zone=public --add-port=80/tcp      # 另外一种写法
# firewall-cmd --reload

数据盘挂载

在某些情况下,交付的服务器,可能只挂载了系统盘,但是,没有挂载数据盘,这时候,需要将数据盘挂载上。

获取系统盘的文件系统类型

# df -T

通过执行以上命令,可以获知,已经挂载的系统盘,当前是什么文件系统,比如 xfs ,一般,数据盘使用和系统盘一致的文件系统类型。

检查数据盘是否存在

# fdisk -l

通过执行以上命令,可以获知现有的磁盘分区,并结合现有挂载的分区、交换分区等,即可得到未挂载的数据盘的分区信息(设备标识),比如 /dev/vdb

为数据盘创建文件系统

# mkfs -t xfs /dev/vdb
# mkfs.xfs /dev/vdb         # 全新的盘
# mkfs.xfs -f /dev/vdb      # 以前使用过的盘

通过执行以上命令,将为数据盘创建 xfs 的文件系统类型,如果要创建 ext4 ,则执行: mkfs -t ext4 /dev/vdb

或者:

# mkfs.ext4 /dev/vdb

通过 parted 命令工具,输入 print list ,可查看到当前分区的文件系统类型。

挂载数据盘

# mkdir /data
# mount /dev/vdb /data
# df -h

执行以上命令后,数据盘应该成功挂载到 /data 目录了,使用 df 命令,即可查看到。

让系统启动时自动挂载数据盘

# vim /etc/fstab

编辑 /etc/fstab 文件,并加入和以上行格式相识的内容(根据具体情况):

/dev/vdb /data xfs defaults, noatime 0 0

保存退出后,在状况允许的情况下,尝试重启一下服务器,确保 /data 数据盘能在系统启动时自动加载。

可通过以下命令:

# umount /data
# mount /data

来测试一下 fstab 编写是否正确。

交换分区

检查交换分区

# swapon -s

如果该系统没有返回结果,则表示该系统尚未配置 swap ,可能需要添加 swap 。

或者,使用 free 工具来查看:

$ free -m

注意查看是否 Swap 部分的 total 为 0 ,为 0 则表示没有配置过 swap 。

创建 Swap 文件

如果系统没有创建 swap 分区,则可能需要在现有的分区上创建 swap 文件,使用 fallocate 命令:

# fallocate -l 2G /swapfile
# chmod 0600 /swapfile

创建了一个 2G 的 swap 文件 /swapfile 。然后,告知系统将该文件用于 swap:

# mkswap /swapfile

然后,再开始使用:

# swapon /swapfile

使用 swapon 命令和 free 命令确认一下:

# swapon -s
# free -m

使 Swap 文件重启后,依然有效

通过修改 fstab 文件的办法,使得 swap 文件在系统重启后,依然有效,在 fstab 文件末尾加入一行:

/swapfile      swap      swap    sw   0 0

Swap 配置的优化

有几个内核参数,涉及到 swap 的使用性能,编辑 /etc/sysctl.conf ,在文件末尾添加:

vm.swappiness = 10
vm.vfs_cache_pressure = 50

保存并重启生效,也可以使用 sysctl 工具直接修改。

Avatar

JeffWu Author

数十年互联网从业经验,互联网全栈开发工程师,资深技术管理人员,资深游戏开发工程师。具有丰富的搭建海量数据处理系统的经验,大容量、高并发、高可靠线上运营系统的搭建和维护的丰富经验。