新安装的 CentOS 7 系统需要进行一系列初始化配置才能投入生产使用,包括安全设置、网络配置、软件源更换、内核升级等。本文提供一份完整的 Shell 一键初始化脚本,实现 CentOS 7 系统的自动化配置。核心功能包括:关闭 SELinux 与防火墙、优化文件描述符限制、禁用 Swap 分区、更换阿里云 YUM 源、安装常用软件包、配置阿里云 NTP 时间同步、静态 IP 地址自动配置(根据网卡名称动态适配)、创建 odboy 用户并赋予 sudo 权限、修改 boot 用户密码为 123456,以及通过 ELRepo 仓库安装最新内核并设置为默认启动项。脚本具备幂等性设计,重复执行不会造成配置冲突。
本文适用于需要批量初始化 CentOS 7 服务器的运维人员。
shell#!/usr/bin/env bash
# 作用:初始化从零安装的CentOS7
# author odboy
IPADDR=192.168.235.100
NETMASK=255.255.255.0
GATEWAY=192.168.235.2
# -------------------------------------------------------------------------
FLAG_SELINUX=$(cat /etc/selinux/config|grep 'SELINUX=disabled')
if [[ -z $FLAG_SELINUX ]]; then
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
if [ $? -eq 0 ]; then
echo "关闭SELINUX成功"
fi
fi
# firewall stop
systemctl stop firewalld
systemctl disable firewalld
# max fileSize
FLAG_OPENFILE=$(cat /etc/rc.local |grep 'ulimit -HSn 65535')
FLAG_STACKSize=$(cat /etc/rc.local |grep 'ulimit -s 65535')
if [[ -z $FLAG_OPENFILE ]]; then
## open files
echo 'ulimit -HSn 65535' >> /etc/rc.local
fi
if [[ -z $FLAG_STACKSize ]]; then
## stack size
echo 'ulimit -s 65535' >> /etc/rc.local
fi
# 关闭Swap分区
swapoff -a
cp -p /etc/fstab /etc/fstab.bak$(date '+%Y%m%d%H%M%S')
sed -i "s/\/dev\/mapper\/centos-swap/\#\/dev\/mapper\/centos-swap/g" /etc/fstab
mount -a
free -m
cat /proc/swaps
# yum source alibaba
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
curl http://mirrors.aliyun.com/repo/Centos-7.repo > /etc/yum.repos.d/CentOS-Base.repo
curl http://mirrors.aliyun.com/repo/epel-7.repo > /etc/yum.repos.d/epel.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/epel.repo
# 安装常用软件包
yum install gcc patch libffi-devel python-devel \
zlib-devel bzip2-devel openssl-devel ncurses-devel \
sqlite-devel readline-devel tk-devel gdbm-devel db4-devel \
libpcap-devel xz-devel netstat \
unzip zip sysstat net-tools \
ntp ntpdate git epel-release wget -y
yum makecache fast
# 时间同步
systemctl start ntpd
systemctl status ntpd
echo 'server ntp.aliyun.com' >> /etc/ntp.conf
echo 'server ntp.tencent.com' > /etc/ntp.conf
systemctl restart ntpd
# 静态IP地址(VM-NAT),执行命令 vi /etc/sysconfig/network-scripts/ifcfg-ens33,ens33这是我的网卡名称, 你们用你们的, 用ip a查看
NETWORK_FILE=$(ls /etc/sysconfig/network-scripts/ifcfg-ens*)
NETWORK_NAME=$(echo $NETWORK_FILE| awk -F- '{print $NF}')
NETWORK_UUID=$(cat ${NETWORK_FILE}| grep UUID)
cat << EOF > ${NETWORK_FILE}
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
NAME="$NETWORK_NAME"
DEVICE="$NETWORK_NAME"
ONBOOT="yes"
IPADDR=${IPADDR}
NETMASK=${NETMASK}
GATEWAY=${GATEWAY}
DNS1=223.5.5.5
DNS2=8.8.8.8
${NETWORK_UUID}
EOF
# 重启网络服务
service network restart
# 添加odboy用户和组,并给与管理员权限
# groupadd用于创建新的组。
# useradd用于创建新的用户。
# -m表示创建家目录。
# -g odboy指定用户所属的主组为odboy。
# -s /bin/bash指定了用户默认的Shell为bash
sudo groupadd odboy
sudo useradd -m -g odboy -s /bin/bash odboy
# 的-aG sudo将用户odboy追加到sudo组,这样用户就具有了使用sudo执行命令的权限
sudo usermod -aG sudo odboy
# 修改boot用户密码
# --stdin允许通过标准输入修改用户密码,如echo "NewPassWord" | passwd --stdin Username
echo "123456" | passwd --stdin boot
# 内核升级
# 更新仓库
yum -y update
# 启用 ELRepo 仓库
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 安装最新内核
yum --enablerepo=elrepo-kernel install kernel-ml -y
# 查看所有可用内核
# sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
# 设置启用的内核
sudo grub2-set-default 0
# 生成 grub 配置文件并重启
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot
# 重启后检验升级情况
#uname -r


本文作者:Odboy
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC 4.0 BY-SA 许可协议。转载请注明出处!