CentOS 7.x 模板机制作
目录
本文环境
[root@temp ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@temp ~]# uname -r 3.10.0-1160.36.2.el7.x86_64
为rm命令创建别名,防止误操作。
[root@temp ~]# echo "alias rm='rm is not used'" >>/etc/bashrc [root@temp ~]# source /etc/bashrc
个性化修改命令提示符。
[root@temp ~]# vim /etc/profile.d/ps1.sh C_IP=$(/usr/sbin/ip route | grep -oP '(?<=src )[0-9.]+' | head -1) C_PWD='\[\e[34m\]''\w''\[\e[0m\]' C_HOST_IP='\[\e[4;32m\]''\h',${C_IP}'\[\e[0m\]' C_ROOT_USER='\[\e[31m\]''\u''\[\e[0m\]' C_NORMAL_USER='\[\e[33m\]''\u''\[\e[0m\]' if [ ${EUID} -eq 0 ];then export PS1="$(printf '%1s') \$? \t ${C_ROOT_USER}@${C_HOST_IP}:${C_PWD} \\$ " else export PS1="$(printf '%1s') \$? \t ${C_NORMAL_USER}@${C_HOST_IP}:${C_PWD} \\$ " fi [root@temp ~]# source /etc/profile.d/ps1.sh
更换国内yum源,并安装常用软件。
0 17:04:57 root@temp,172.16.15.21:~ # cd /etc/yum.repos.d/ 0 17:05:56 root@temp,172.16.15.21:/etc/yum.repos.d # mv CentOS-Base.repo CentOS-Base.repo.bak &>/dev/null 0 17:06:11 root@temp,172.16.15.21:/etc/yum.repos.d # curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 0 17:06:40 root@temp,172.16.15.21:/etc/yum.repos.d # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 0 17:07:00 root@temp,172.16.15.21:/etc/yum.repos.d # yum makecache fast 0 17:08:22 root@temp,172.16.15.21:/etc/yum.repos.d # yum -y install tree lrzsz nmap nc telnet vim wget lsof net-tools bash-completion psmisc bind-utils sysstat htop yum-utils expect iftop iotop zip unzip gcc ftp zlib-devel libffi-devel readline-devel sqlite-devel nfs-utils sshpass monit rsync ntpdate git gcc-c++* perl* openssl-devel tk-devel xz-devel python-backports-lzma 0 17:18:51 root@temp,172.16.15.21:/etc/yum.repos.d # yum -y update
关闭selinux、防火墙、邮件服务。
0 17:38:38 root@temp,172.16.15.21:/etc/yum.repos.d # sed -i.bak 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config &>/dev/null 0 17:39:09 root@temp,172.16.15.21:/etc/yum.repos.d # setenforce 0 0 17:40:10 root@temp,172.16.15.21:/etc/yum.repos.d # systemctl stop firewalld.service postfix.service 0 17:40:13 root@temp,172.16.15.21:/etc/yum.repos.d # systemctl disable firewalld.service postfix.service
修改最大文件数和最大进程数限制。
0 17:42:17 root@temp,172.16.15.21:/etc/yum.repos.d # vim /etc/security/limits.conf # 文件末尾追加 * soft nofile 65535 * hard nofile 65535 0 17:42:17 root@temp,172.16.15.21:/etc/yum.repos.d # vim /etc/security/limits.d/20-nproc.conf * soft nproc 65535 # 修改此项
永久关闭swap。
0 17:44:38 root@temp,172.16.15.21:/etc/yum.repos.d # swapoff -a 0 17:44:45 root@temp,172.16.15.21:/etc/yum.repos.d # echo "vm.swappiness = 0" >>/etc/sysctl.conf 0 17:45:08 root@temp,172.16.15.21:/etc/yum.repos.d # sysctl -p
开启coredump,方便程序故障时排查问题。
0 17:45:12 root@temp,172.16.15.21:/etc/yum.repos.d # vim /etc/security/limits.conf * soft core 104857600 # 指定dump最大文件为10G。 0 17:45:32 root@temp,172.16.15.21:/etc/yum.repos.d # echo '/server/logs/corefile/core-%e-%p-%t' >/proc/sys/kernel/core_pattern # 指定dump文件生成路径。
添加时间同步(也可以内网部署ntp服务)。
0 17:46:02 root@temp,172.16.15.21:/etc/yum.repos.d # echo '# time sync' >/var/spool/cron/root 0 17:46:07 root@temp,172.16.15.21:/etc/yum.repos.d # echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >>/var/spool/cron/root
修改网卡名称为eth0。(按需操作)
0 17:46:17 root@temp,172.16.15.21:/etc/yum.repos.d # sed -i 's/ens192/eth0/g' ifcfg-ens192 0 17:46:21 root@temp,172.16.15.21:/etc/yum.repos.d # mv ifcfg-ens192 ifcfg-eth0 0 17:46:32 root@temp,172.16.15.21:/etc/yum.repos.d # vi /etc/sysconfig/grub # 在GRUB_CMDLINE_LINUX=后的双引号内添加net.ifnames=0 biosdevname=0,跟双引号内的其它配置以空格隔开,例如GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0 biosdevname=0" 0 17:46:28 root@temp,172.16.15.21:/etc/yum.repos.d # grub2-mkconfig -o /boot/grub2/grub.cfg
部署python环境。(按需操作)
部署java环境(略)。(按需操作)
部署node环境。(按需操作)
0 17:50:15 root@temp,172.16.15.21:/etc/yum.repos.d # curl --silent --location https://rpm.nodesource.com/setup_12.x | bash - 0 17:52:10 root@temp,172.16.15.21:/etc/yum.repos.d # yum -y install nodejs
内核配置
开启SYN cookies,防止部分SYN攻击,默认为0关闭的状态。
# 临时修改。其它参数临时修改的方式也是一样。 [root@temp ~]# sysctl -w net.ipv4.tcp_syncookies = 1 # 永久修改。永久修改内核参数都需要写入到/etc/sysctl.conf文件中,并用-p参数生效。 [root@temp ~]# echo 'net.ipv4.tcp_syncookies = 1' >>/etc/sysctl.conf [root@temp ~]# sysctl -p # 如果是写入的子目录,比如下面,则需要指定文件路径进行加载 [root@temp ~]# echo 'net.ipv4.tcp_syncookies = 1' >>/etc/sysctl.d/lala.conf [root@temp ~]# sysctl -p /etc/sysctl.d/lala.conf
Time wait优化,就是四次挥手没断干净(需要2个MSL),还占用连接的资源。
# 开启TCP连接中TIME WAIT sockets的快速回收,默认为0,表示关闭。此参数对客户端和服务端同时起作用。 net.ipv4.tcp_tw_recycle = 1 # 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭。此参数支队客户端起作用。 net.ipv4.tcp_tw_reuse = 1 # 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN WAIT 2状态的时间。 net.ipv4.tcp_fin_timeout = 30 # 注意1: tw_reuse,tw_recycle 必须在客户端和服务端 timestamps 开启时才管用(默认打开) # 注意2:一般情况下只用开启tw_reuse就可以了。前提是资源不够的时候,才会重用TIME WAIT连接。
向外提供的端口范围。默认是范围是32768到61000。
net.ipv4.ip_local_port_range = 1024 65000
修改SYN队列的长度,默认是1024。加大后可以容纳更多的SYN等待连接。
net.ipv4.tcp_max_syn_backlog = 8500
定义了系统中每一个端口最大的监听队列的长度, 对于一个经常处理新连接的高负载 web服务环境来说,默认的 128 太小了。
net.core.somaxconn = 262144
此参数指定了最大同时保持的Time_wait的数量,如果超过这个数字,Time_wait连接将立刻被清除并打印警告信息。
net.ipv4.tcp_max_tw_buckets = 36000
决定了二次握手时发送ack+syn的数量,就是发送几次ack+syn后没收到第三次握手的ack消息,就放弃这个连接。
net.ipv4.tcp_synack_retries = 2
用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制。
net.core.somaxconn = 16384
每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
net.core.netdev_max_backlog = 16384
这个值表示系统所能处理不属于任何进程的socket数量。系统内存充足的情况下,可以增加这个值。
net.ipv4.tcp_max_orphans = 16384
接收套接字缓冲区大小的默认值(以字节为单位)。
net.core.rmem_default = 262144
接收套接字缓冲区大小的最大值(以字节为单位)。
net.core.rmem_max = 16777216
发送套接字缓冲区大小的默认值(以字节为单位)。
net.core.wmem_default = 262144
发送套接字缓冲区大小的最大值(以字节为单位)。
net.core.wmem_max = 16777216
写作不易,转载请注明出处,谢谢~~