基于 CentOS 7 的 Linux 服务器通用基础环境搭建
为了团队中对于服务器的运行环境的统一和规范要求,不管是交付到的是云服务器还是物理服务器,都要求在拿到服务器权限后,完成基础环境搭建,以下内容,就是对基础环境搭建的说明和要求。
系统安装
交付的服务器基础操作系统,应为 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 工具直接修改。