centos7初始化脚本

#!/bin/bash

Author: guop

centos7初始化脚本

PASSWD=password
HOSTNAME=EIFM
DNS1=119.29.29.29
DNS2=223.5.5.5

cat << EOF
+------------------------------------------------------------------+
| ** Welcome to CentOS 7 System init ** |
+------------------------------------------------------------------+
EOF

[ whoami != "root" ] && echo "please use root" && exit 1

function format() {
echo -e "\033[32m Success!!! \033[0m\n"
echo "#########################################################"
}

###修改root用户密码
echo "set root passwd"
echo $PASSWD | passwd root --stdin &> /dev/null
format

###修改主机名
echo "set hostname"
hostname $HOSTNAME && echo "HOSTNAME=$HOSTNAME" >> /etc/sysconfig/network
format

###配置DNS解析
echo "set DNS"
echo "" > /etc/resolv.conf
echo "nameserver $DNS1" > /etc/resolv.conf
echo "nameserver $DNS2" >> /etc/resolv.conf
ping -c 3 www.baidu.com &> /dev/null || echo "请检查网络连接,此脚本需要访问外网" || exit 3
format

###关闭Selinux服务
echo "disable selinux"
[ getenforce != "Disabled" ] && setenforce 0 &> /dev/null && sed -i s/"^SELINUX=.*$"/"SELINUX=disabled"/g /etc/sysconfig/selinux
format

###更新yum源为阿里云
echo "set yum repo"
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo &> /dev/null
yum makecache &> /dev/null
format

###锁定重要配置文件
echo "chattr files"
chattr +i /etc/passwd
chattr +i /etc/inittab
chattr +i /etc/group
chattr +i /etc/shadow
chattr +i /etc/gshadow
chattr +i /etc/resolv.conf
chattr +i /etc/hosts
chattr +i /etc/fstab
#chattr -i /etc/passwd
format

###设置字符集为中文
echo "set LANG"
echo ‘LANG="zh_CN.UTF-8"‘ > /etc/locale.conf
format

###自动更新服务器时间
echo "set ntptime"
yum install ntpdate -y
cp -fr /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
cat >> /etc/crontab << EOF
#sync time
/30 * /usr/sbin/ntpdate pool.ntp.org &> /dev/null && /sbin/hwclock -w &> /dev/null
EOF
sed -i "/server/d" /etc/chrony.conf
echo ‘server ntp.aliyun.com iburst &>/dev/null‘ >> /etc/chrony.conf
format

###内核参数优化
echo "Set sysctl.conf"
cat > /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 0
#开启路由功能
net.ipv4.conf.all.rp_filter = 1
#加强入站过滤和出站过滤
net.ipv4.conf.default.rp_filter = 1
#开启反向路径过滤
net.ipv4.conf.default.accept_source_route = 0
#处理无源路由的包
kernel.sysrq = 0
#控制系统调试内核的功能要求
kernel.core_uses_pid = 1
#用于调试多线程应用程序
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
#所有在消息队列中的消息总和的最大值
kernel.msgmax = 65536

指定内核中消息队列中消息的最大值

kernel.shmmax = 68719476736
#于定义单个共享内存段的最大值,64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE即可,可以取物理内存-1byte。例如,如果为64GB物理内存,可取6410241024*1024-1=68719476735
kernel.shmall = 4294967296
#inux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是 16G,那么需要共享内存页数是16GB/4KB=16777216KB /4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求(几乎是原来设置2097152的两倍)
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
###内存资源使用相关设定
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 65536 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_mem = 8388608 8388608 8388608
##应对DDOS***,TCP连接建立设置
net.ipv4.tcp_syncookies = 1
#防止syn flood***
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_max_syn_backlog = 262144
#SYN队列的长度,默认为1024,加大队列长度为262144,可以容纳更多等待连接的网络连接数
##应对timewait过高,TCP连接断开设置
net.ipv4.tcp_max_tw_buckets = 10000
#默认是180000。表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息
net.ipv4.tcp_tw_recycle = 1
#表示开启TCP连接中TIME-WAIT sockets的快速收回功能,默认为 0 ,表示关闭。
net.ipv4.tcp_tw_reuse = 1
#表示开启重用。允许将TIME-WAIT sockets重新用于新的 TCP 连接,默认为 0 表示关闭
net.ipv4.tcp_timestamps = 0
#时间戳可以避免序列号的卷绕
net.ipv4.tcp_fin_timeout = 5

表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180 秒,3你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB 服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2 的危险性比FIN-WAIT-1 要小,因为它最多只能吃掉1.5K 内存,但是它们的生存期长些

net.ipv4.ip_local_port_range = 4000 65000

表示用于向外连接的端口范围

###TCP keepalived 连接保鲜设置
net.ipv4.tcp_keepalive_time = 1200
#表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟
net.ipv4.tcp_keepalive_intvl = 15

当探测没有确认时,重新发送探测的频度。缺省是75

net.ipv4.tcp_keepalive_probes = 5

在认定连接失效之前,发送多少个TCP的keepalive探测包。缺省值是9。这个值乘以tcp_keepalive_intvl之后决定了,一个连接发送了keepalive之后可以有多少时间没有回应

###其他TCP相关调节
net.core.somaxconn = 262144
#isten(函数)的默认参数,挂起请求的最大数量限制。web 应用中listen 函数的backlog 默认会给我们内核参数的net.core.somaxconn 限制到128,而nginx 定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
EOF
sysctl -p
format

#安装必要的软件包
echo "install pack"
yum -y install make gcc gcc-c++ cmake snmp asciidoc libxslt-devel libxslt flex kernel-headers kernel-devel autoconf automake psmisc bzip2 bzip2-devel libxml2 libxml2-devel openssl openssl-devel libcurl libcurl-devel pcre pcre-devel libaio libmcrypt libmcrypt-devel mhash mhash-devel git zip unzip pigz ntpdate telnet nmap-ncat rsync vim-enhanced openssh-clients nfs-utils jemalloc screen mailx haveged xz iotop iotop tcpdump sysstat wget vim lsof bash-completion &> /dev/null
format

read -p "系统初始化完毕,是否需要重启(y/n)?"
if [ "$TT" == "y" ];then
reboot
elif [ "$TT" == "n" ];then
exit 4
else
echo "请输入y/n"
fi

原文地址:https://blog.51cto.com/14477799/2425292

时间: 2024-07-30 11:40:57

centos7初始化脚本的相关文章

centos7 初始化脚本

#!/bin/bash # 时间: 2018-11-21 # 作者: HuYuan # 描述: CentOS 7 初始化脚本 # 加载配置文件 if [ -n "${1}" ];then /bin/sh ${1} fi # 可接受配置(shell 变量格式) # INIT_HOSTNAME 主机名, 默认为 localhost # INIT_NTPSERVER ntp 服务器, 默认为 ntp1.aliyun.com # INIT_DNS1 dns 服务器 # INIT_DNS2 #

CentOS7 初始化脚本 1.0

1 #!/bin/bash 2 ################################################# 3 # --Info 4 # Initialization CentOS 7.x script 5 ################################################# 6 # Auther: [email protected] 7 # Changelog: 8 # 20180710 wanghui initial create 9 #

centos7 系统初始化脚本

现在自己的本地虚拟机系统,直接安装的是centos7.2 mini版,安装完成发现好多东西都没有安装,所以写了一个简单的系统初始化脚本,让自己可以省一些力气,哈哈 人懒主要是. 下面贴出写的脚本,脚本里面有好多地方写的不是特别完善,希望大家给出意见,让我来完善它. #!/bin/bash function readme(){echo ==========编写一个关于centos7 最小化系统安装后 需要设置的东西 ==========echo ==========1.默认执行dhclient,获

linux系统监控工具汇总及几个小脚本 , 系统初始化脚本

重要性能监测工具:top.vmstat.w.uptime.ps.free.iostat.netstat./proc等 需要监视Linux服务器的性能?大多数Linux发行版都集成了一些监视工具.这些工具可以获取有关系统活动的信息的详细指标.通过这些工具,你可以发现产生系统性能问题可能存在原因.下面讨论的是一些最基本的命令,它涉及到系统分析和调试服务器等一些问题,如:1.    找出系统瓶颈问题.2.    磁盘 (储存) 瓶颈问题.3.    CPU和内存瓶颈问题.4.    网络瓶颈问题.#

centos 7 初始化脚本

#!/bin/bash # 时间: 2018-11-21 # 作者: HuYuan # 描述: CentOS 7 初始化脚本 # 加载配置文件 if [ -n "${1}" ];then /bin/sh ${1} fi # 可接受配置(shell 变量格式) # INIT_HOSTNAME 主机名, 默认为 localhost # INIT_NTPSERVER ntp 服务器, 默认为 ntp1.aliyun.com # INIT_DNS1 dns 服务器 # INIT_DNS2 #

linux系统最小化安装后的初始化脚本

作为运维人员,经常会初始化系统,系统在安装过程中基本都会选择最小化安装,这样安装好的系统里会缺少很多环境. 下面分享一个系统安装后的初始化脚本: #!/bin/bash #系统时最小化安装的,这里要安装系统的软件库yum groupinstall -y "development tools" #创建目录[ ! -d /server/tools ] && mkdir -p /server/tools[ ! -d /application ] && mkdi

Centos 初始化脚本

系统初始化脚本可以统一.自动配置,减少人力. 这里浅谈一下yum安装与源码编译安装,请各位不吝指正.我一直坚持yum安装,原因如下 一.安装方便,不需要再花精力考虑依赖问题 二.配置统一,方便后期维护,自动化等 三.方便升级 四.好吧,我是菜鸡,我承认了 唯有业务明确需要某新功能,才会使用源码安装.关于这点,和尘缘的观点类似,详见其博文 #!/bin/bash  #  #Change yum source  rpm -Uvh  http://dl.fedoraproject.org/pub/ep

Linux初始化脚本

以下脚本用于linux系统的初始化脚本,可以在服务器系统安装完毕之后立即执行.脚本结合各位大牛一些参数,已经在CentOS 5下通过. 使用方法:将其复制,保存为一个shell文件,比如init.sh.将其上传到linux服务器上,执行sh init.sh.建议大家在系统安装后立即执行. 脚本代码: #!/bin/bash # Configure yum source cd /tmp wget -c http://yum.baseurl.org/download/3.4/yum-3.4.3.ta

unix 初始化脚本

unix系统中, 常用的初始化脚本有两个:.bashrc 和 .bash_profile,比较容易混淆. 这两个脚本的主要区别在于,触发执行的条件不一样: .bash_profile 使用用户名.密码登录成功之后,会被触发执行 .bashrc 打开新的窗口,比如 ubuntu terminal中输入 ctrl + shift + t,会打开新窗口,此时执行 .bashrc 脚本 一般来说,为了防止 .bash_profile 和 .bashrc 两个脚本的内容有重合,可以在 .bash_prof