Centos7 初始化脚本

Linux就该这么学
  1. #!bin/bash
  2. #author chenkan
  3. #this script for Centos7
  4. #Check the OS
  5. echo "Check the OS is right?"
  6. yum install redhat-lsb -y               #基于最小化安装的centos 需安装lsb 下面要用到
  7. os=`uname -r | awk -F "." '{print $4}'`
  8. platform=`uname -i`                     #-i, 显示硬件平台名称
  9. if [ $os != el7 || $platform != x86-64]; then
  10.     echo -e "\e[1;31m this script is only for 64bit el7 operation system! \e[0m"
  11.     exit -1
  12. fi
  13. echo -e "\e[1;31m platform is ok! \e[0m"
  14. cat << EOF
  15. +==============================+
  16. | your system is Centos x86_64 |
  17. +==============================+
  18. EOF
  19. echo -e "\e[1;31m Check the OS FINSHED! \e[0m"
  20. sleep 1
  21. #version=`lsb_release -r -s|awk -F "." '{print $1}'`  #此处可以判断版本号是不是7(利用-r -s进行筛选)
  22. :<<!
  23. version=`lsb_release -i -s | grep CentOS`  #此处可显示系统名称,比上边好用一点
  24. if [ $version != "CentOS" ]; then
  25.                 echo -e "\e[1;31m this script is only for CentOS  \e[0m!"
  26.                 exit 1
  27. fi
  28. echo -e "\e[1;31m system is right! \e[0m"   #为了测试功能实现情况,用转义字符输出红色字符串
  29. !
  30. #Set the installation source of the system to 163.com
  31. #先将CentOS-Base.repo进行备份(备份到CentOS-Base.repo.backup)中,以后需要可以很快的改回来
  32. echo "Replace the yum source"
  33. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  34. cd /etc/yum.repos.d/
  35. wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
  36. #阿里源
  37. #wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  38. yum makecache
  39. echo -e "\e[1;31m 2.Set the installation source of the system to 163.com  FINSHED! \e[0m"
  40. sleep 1
  41. #Install EPEL source and RPMforge source
  42. #对于安装epel可以选择网易的源,我这边用的是阿里的源.而RPMforge,现在改名为RepoForge,用清华的源。
  43. echo "Install EPEL source and RPMforge source"
  44. rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
  45. rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
  46. rpm --import https://mirrors.tuna.tsinghua.edu.cn/repoforge/RPM-GPG-KEY.dag.txt
  47. cat >> /etc/yum.repos.d/rpmforge.repo << EOF                #configuration file
  48. [rpmforge]
  49. name = RHEL $releasever - RPMforge.net - dag
  50. baseurl = https://mirrors.tuna.tsinghua.edu.cn/repoforge/redhat/el7/en/$basearch/rpmforge
  51. mirrorlist = http://mirrorlist.repoforge.org/el7/mirrors-rpmforge
  52. enabled = 1
  53. protect = 0
  54. gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
  55. gpgcheck = 1
  56. [rpmforge-extras]
  57. name = RHEL $releasever - RPMforge.net - extras
  58. baseurl = https://mirrors.tuna.tsinghua.edu.cn/repoforge/redhat/el7/en/$basearch/extras
  59. mirrorlist = http://mirrorlist.repoforge.org/el7/mirrors-rpmforge-extras
  60. enabled = 0
  61. protect = 0
  62. gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
  63. gpgcheck = 1
  64. [rpmforge-testing]
  65. name = RHEL $releasever - RPMforge.net - testing
  66. baseurl = https://mirrors.tuna.tsinghua.edu.cn/repoforge/redhat/el7/en/$basearch/testing
  67. mirrorlist = http://mirrorlist.repoforge.org/el7/mirrors-rpmforge-testing
  68. enabled = 0
  69. protect = 0
  70. gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
  71. gpgcheck = 1
  72. EOF
  73. yum repolist enabled                           #check the enabled
  74. echo -e "\e[1;31m Install EPEL source and RPMforge source FINSHED! \e[0m"
  75. sleep 1
  76. #Update software
  77. echo "update software"
  78. yum clean all   #清除yum的缓存,yum安装的东西会储存在cache中,不清除很浪费。
  79. yum install kernel-devel kernel-headers && echo exclude=kernel* >>  /etc/yum.conf #安装kernel-devel和kernel-headers,并且在更新系统时,禁止更新kernel 并将其重定向到 yum.conf
  80. yum -y update glibc\*  #更新C语言库
  81. yum -y update yum\* rpm\* python\*
  82. echo -e "\e[1;31m Update software FINSHED! \e[0m"
  83. sleep 1
  84. #Set time to be synchronized
  85. yum -y install ntp  # Network Time Protocol
  86. echo "*10*** /usr/sbin/ntpdate s1a.time.edu.cn > /dev/null 2>&1" >> /var/spool/cron/root  #将同步时间设置为北邮,2->stderr,1->stdout,0->stdin,意思就是执行每天上午10点进行时间同步,如果出现错误就输出。
  87. service crond restart  #重启crond。crond是crontab的守护进程。
  88. echo -e "\e[1;31m Set time to be synchronized FINSHED! \e[0m"
  89. sleep 1
  90. #这边提一下">"和">>"区别,">"定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空再添加;">>"是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响
  91. #increase the number of files
  92. echo "ulimit -SHn 102400" >> /etc/rc.local      #ulimit -a    cat /etc/security/limits.conf 可查看
  93. cat >> /etc/security/limits.conf <<EOF
  94.  *           soft   nofile       102400
  95.  *           hard   nofile       102400
  96.  *           soft   nproc        102400
  97.  *           hard   nproc        102400
  98. EOF
  99. echo -e "\e[1;31m increase the number of files FINSHED! \e[0m"
  100. sleep 1
  101. #closed SELinux
  102. echo "close selinux"
  103. sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config  #sed -i替换命令,前者替换后者。具体使用参考:http://man.linuxde.net/sed
  104. echo -e "\e[1;31m closed SELinux FINSHED! \e[0m"
  105. sleep 1
  106. #disable the GSSAPI disable DNS speed up the SSH
  107. sed -i 's/^GSSAPIAuthentication yes$/GSSAPIAuthentication no/' /etc/ssh/sshd_config
  108. sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config            #禁止dns的反向解析
  109. service sshd restart
  110. echo -e "\e[1;31m disable the GSSAPI disable DNS speed up the SSH FINSHED! \e[0m"
  111. sleep 1
  112. #optimize kernel parameters
  113. echo "optimize kernel parameters"
  114. echo "#----optimize kernel parameters------" >> /etc/sysctl.conf
  115. echo "net.core.netdev_max_backlog = 32768" >> /etc/sysctl.conf
  116. echo "net.core.rmem_default = 8388608" >> /etc/sysctl.conf
  117. echo "net.core.rmem_max = 16777216" >> /etc/sysctl.conf
  118. echo "net.core.somaxconn = 32768" >> /etc/sysctl.conf
  119. echo "net.core.wmem_default = 8388608" >> /etc/sysctl.conf
  120. echo "net.core.wmem_max = 16777216" >> /etc/sysctl.conf
  121. echo "net.ipv4.ip_local_port_range = 5000    65000" >> /etc/sysctl.conf
  122. echo "net.ipv4.tcp_fin_timeout = 30" >> /etc/sysctl.conf
  123. echo "net.ipv4.tcp_keepalive_time = 300" >> /etc/sysctl.conf
  124. echo "net.ipv4.tcp_max_orphans = 3276800" >> /etc/sysctl.conf
  125. echo "net.ipv4.tcp_max_syn_backlog = 65536" >> /etc/sysctl.conf
  126. echo "net.ipv4.tcp_max_tw_buckets = 5000" >> /etc/sysctl.conf
  127. echo "net.ipv4.tcp_mem = 94500000 915000000 927000000" >> /etc/sysctl.conf
  128. echo "net.ipv4.tcp_syn_retries = 2" >> /etc/sysctl.conf
  129. echo "net.ipv4.tcp_synack_retries = 2" >> /etc/sysctl.conf
  130. echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
  131. echo "net.ipv4.tcp_timestamps = 0" >> /etc/sysctl.conf
  132. echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf
  133. echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
  134. /sbin/sysctl -p
  135. echo -e "\e[1;31m optimize kernel parameters FINSHED! \e[0m"
  136. sleep 1
  137. #adjust the key of the deleted character to backspace
  138. echo "adjust the key of the deleted character to backspace"
  139. echo 'stty erase ^H'>> /etc/profile   #默认^?
  140. echo 'syntax on'>> /root/.vimrc
  141. echo -e "\e[1;31m adjust the key of the deleted character to backspace FINSHED! \e[0m"
  142. sleep 1
  143. #cancel database
  144. echo "cancel database"
  145. if [[ -e /etc/cron.daily.bak
  146.  ]]; then
  147.         rm -rf /etc/cron.daily.bak
  148. fi
  149. mkdir /etc/cron.daily.bak
  150. mv /etc/cron.daily/mlocate /etc/cron.daily.bak
  151. echo -e "\e[1;31m cancel database FINSHED! \e[0m"
  152. sleep 1
  153. #shut down unused services
  154. echo "shut down unused services"
  155. systemctl stop firewalld
  156. systemctl disable cups
  157. systemctl disable firewalld
  158. systemctl disable auditd.service
  159. systemctl disable irqbalance.service
  160. systemctl disable lvm2-monitor.service
  161. echo -e "\e[1;31m shut down unused services FINSHED! \e[0m"
  162. sleep 1
  163. #disable the ipv6
  164. echo "disable the ipv6"
  165. cat >> /etc/modprobe.d/ipv6.conf <<EOFI
  166. alias net-pf-10 off
  167. options ipv6 disable=1
  168. EOFI
  169. echo "NETWORKING_IPV6=off" >> /etc/sysconfig/network
  170. echo -e "\e[1;31m disable the ipv6 FINSHED! \e[0m"
  171. sleep 1

本文由 CentOS中文站 - 专注Linux技术 作者:centos 发表,其版权均为 CentOS中文站 - 专注Linux技术 所有,文章内容系作者个人观点,不代表 CentOS中文站 - 专注Linux技术 对观点赞同或支持。如需转载,请注明文章来源。

淡如水

相关文章

评论:

2 条评论,访客:1 条,站长:1 条

0%好评

  • 好评:(0%)
  • 中评:(0%)
  • 差评:(0%)
  1. 淡如水
    淡如水发布于: 

    前辈,站里的文章都是你一个人写的啊?!

发表评论

电子邮件地址不会被公开。 必填项已用*标注