007.CentOS安装后优化大全
  

木二 34415人觉得有帮助

{{ttag.title}}
本帖最后由 木二 于 2022-5-29 22:57 编辑

一        概述背景
1.1        背景说明
        对于Linux新手,或者普通用户而言,在对Linux不熟悉的情况下,可能更多的是直接部署相关应用(业务)。
        但缺乏后期维护的情况下,通常部署过程,或者运行过程中出现各种莫名其妙的问题。
        通常绝大多数问题又往往的基础环境的某些配置问题,因此基于此考虑,结合本人多年Linux的经验,以及结合公有云中常见的Linux系统优化(初始化)脚本,整理了此文。
        经过主要的优化过程后,Linux完成了基础环境的配置,将完成优化后的Linux当做Linux Base基线,在此之上再部署相关应用会大大奖励业务的故障性、部署的困难性。

1.2        优化说明
        本文在每一项优化前新增了优化说明、优化用途等。
        其主要的优化项有:
  • 修改网卡名称
  • 网卡配置
  • 设置语言及主机名
  • 创建常用目录
  • 关闭SELinux及防火墙
  • 优化ssh速度
  • 关闭firewall防火墙
  • 配置yum源
  • 升级CentOS8内核
  • 升级CentOS7内核
  • CentOS8安装常用软件
  • CentOS7安装常用软件
  • 安装其他软件
  • 配置vim环境
  • 配置时钟同步
  • 配置bash别名环境
  • CentOS7升级openssl
  • 安装Python 3.9
  • 配置国内pip源
  • pip自动补全
  • 清理所有残留



注意:
1:本文所有优化,本人已写成脚本,自动化实现,本文拆解说明仅供学习分析交流之用。
2:优化不分先后,每一项均独立;
3:主要基于CentOS7实现。

二        实际优化
2.1        修改网卡名称
通常CentOS7、CentOS8的网卡名为ensXXX命名,而历史过往习惯为ethX,为符合经验和习惯,可通过如下方式修改:
  1. # cp -brpf /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.bak
  2. # rm -rf /etc/udev/rules.d/*-persistent-*.rules
  3. #
  4. # cp -brpf /etc/default/grub /etc/default/grub.bak
  5. # sed -i 's/GRUB_CMDLINE_LINUX=\"/GRUB_CMDLINE_LINUX=\"net.ifnames=0 biosdevname=0 /g' /etc/default/grub
  6. # grub2-mkconfig -o /boot/grub2/grub.cfg > /dev/null
  7. # systemctl restart NetworkManager
  8. # systemctl enable NetworkManager
复制代码
2.2        配置静态IP
2.2.1        CentOS6配置静态IP
对于CentOS6配置静态IP,可直接vi修改网卡配置文件,主要配置参数如下:
  1. # vi /etc/sysconfig/network-scripts/ifcfg-eth0
  2. TYPE=Ethernet
  3. PROXY_METHOD=none
  4. BROWSER_ONLY=no
  5. BOOTPROTO=none
  6. IPADDR=172.24.8.134
  7. PREFIX=24
  8. GATEWAY=172.24.8.2
  9. DNS1=223.5.5.5
  10. DNS2=223.6.6.6
  11. DEFROUTE=yes
  12. #IPV4_FAILURE_FATAL=no
  13. #IPV6INIT=yes
  14. #IPV6_AUTOCONF=yes
  15. #IPV6_DEFROUTE=yes
  16. #IPV6_FAILURE_FATAL=no
  17. #IPV6_ADDR_GEN_MODE=stable-privacy
  18. NAME=eth1
  19. DEVICE=eth1
  20. ONBOOT=yes
复制代码
2.2.2        CentOS7配置静态IP
对于CentOS7配置静态IP,不推荐直接修改if-eth0网卡配置文件参数,最佳实践为使用nmcli命令进行配置:
  1. # nmcli connection add connection.autoconnect yes autoconnect yes ipv4.method manual con-name eth0 ifname eth0 ipv4.addresses 172.16.10.172/24 ipv4.dns 223.5.5.5 type ethernet mtu 1452 ipv4.gateway 172.16.10.1

  2. # nmcli c reload eth0
  3. # nmcli c up eth0
复制代码
2.3        设置语言及主机名
在有时候需要设置主机名及系统语言。
  1. # hostnamectl set-hostname imxhy                                #设置主机名

  2. # localectl  set-locale LANG=zh_CN.utf8            #设置为中文
  3. # localectl  set-locale LANG=en_US.UTF-8            #设置为英文
复制代码
2.4        创建常用目录
部分目录系统不自带,但为了后续维护和管理方便,建议独立创建进行区分。
  1. # mkdir -p /etc/yum.repos.d/backup
  2. # mkdir -p /mnt/cdrom
  3. # mkdir -p /media/cdrom
复制代码

2.5        关闭SELinux及防火墙
关闭SELinux加强及防火墙。
  1. # cp -brpf /etc/selinux/config /etc/selinux/config.bak
  2. # sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
  3. #
  4. # systemctl disable firewalld --now
复制代码
提示:我个人其实喜欢保留防火墙以及SELinux,但不得不说为了研究SELinux,确实需要极大的精力。
2.6        优化ssh访问速度
对于某些情况,ssh登录Linux的时候,会尝试解析为DNS name,需要花费时间,可进行关闭。
  1. # sed -i 's/^UseDNS.*/UseDNS no/' /etc/ssh/sshd_config
  2. # sed -i 's/^#UseDNS.*/UseDNS no/' /etc/ssh/sshd_config
复制代码
2.7        优化yum源
这一项非常重要,通常默认的CentOS其yum源在国外,可如下修改为国内的yum源,此yum源文件为本人自行收录在个人站点上。
  1. # mv -b /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
  2. # mv -b /etc/yum.repos.d/*.rpmnew /etc/yum.repos.d/backup
  3. #
  4. # wget -P /etc/yum.repos.d/ http://down.linuxsb.com/myoptions/CentOS7-Base-aliyun-ustc.repo           #CentOS7配置
  5. # wget -P /etc/yum.repos.d/ http://down.linuxsb.com/myoptions/epel7-aliyun-ustc.repo
  6. #
  7. # wget -P /etc/yum.repos.d/ http://down.linuxsb.com/myoptions/CentOS8-Base-aliyun-ustc.repo
  8. # wget -P /etc/yum.repos.d/ http://down.linuxsb.com/myoptions/epel8-aliyun-ustc-modular.repo
  9. # wget -P /etc/yum.repos.d/ http://down.linuxsb.com/myoptions/epel8-aliyun-ustc-playground.repo
  10. # wget -P /etc/yum.repos.d/ http://down.linuxsb.com/myoptions/epel8-aliyun-ustc-testing-modular.repo
  11. # wget -P /etc/yum.repos.d/ http://down.linuxsb.com/myoptions/epel8-aliyun-ustc-testing.repo
  12. # wget -P /etc/yum.repos.d/ http://down.linuxsb.com/myoptions/epel8-aliyun-ustc.repo                  #CentOS8配置
复制代码
提示:所有国内外常见的yum站点统计参考:常见Linux镜像站站点大全
2.8        升级内核
对于部分应用,需要升级CentOS内核,比如docker,可通过如下方式升级内核。  
2.8.1        升级CentOS7内核
  1. # rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
  2. # yum -y install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
  3. # mv -b /etc/yum.repos.d/elrepo.repo /etc/yum.repos.d/backup
  4. #
  5. # wget -P /etc/yum.repos.d/ http://down.linuxsb.com/myoptions/elrepo7.repo
  6. # yum --disablerepo="*" --enablerepo="elrepo-kernel" install -y kernel-ml
  7. #
  8. # grub2-set-default 0
复制代码
2.8.2        升级CentOS8内核
  1. # rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
  2. # rpm --import http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-Official
  3. # yum -y install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
  4. # mv -b /etc/yum.repos.d/elrepo.repo /etc/yum.repos.d/backup
  5. #
  6. # wget -P /etc/yum.repos.d/ http://down.linuxsb.com/myoptions/elrepo8.repo
  7. # yum --disablerepo="*" --enablerepo="elrepo-kernel" install -y kernel-ml
  8. #
  9. # grub2-set-default 0
复制代码
提示:更多升级内核操作参考:CentOS升级内核
2.9        安装常用软件
强烈建议安装系统的时候采用Minimal方式安装,然后需要什么软件安装什么软件,如下为本人根据经验收录的常用软件,建议根据自行需要安装,各个软件的作用不再额外解释。
2.9.1        CentOS7常用软件安装
  1. # yum -y install tar bzip2 git gcc gcc-c++ make wget openssl-devel openssh-clients bash-completion net-tools vim ntp screen lrzsz bash-completion-extras epel-release openssl tree jq curl lvm2 yum-utils zlib zlib-devel libffi-devel --skip-broken
复制代码
2.9.2        CentOS8常用软件安装
  1. # rpm --import http://mirrors.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-Official
  2. # rpm --import https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-8
  3. #
  4. # dnf -y install tar bzip2 git gcc gcc-c++ make wget openssl-devel openssh-clients bash-completion net-tools vim chrony screen lrzsz epel-release tree jq curl lvm2 yum-utils zlib zlib-devel libffi-devel perl-Pod-Html xz unzip --skip-broken
复制代码
2.10        安装其他软件
建议安装额外运维小命令,如tcping、fping命令。  
  1. # mkdir -p /usr/local/tcping/sbin
  2. #
  3. # cd /tmp
  4. # wget http://down.linuxsb.com/software/tcping-1.3.5-4-x86_64.tar.gz
  5. # tar -zxvf tcping-1.3.5-4-x86_64.tar.gz
  6. # mv usr/bin/tcping /usr/local/tcping/sbin/
  7. #
  8. # wget http://down.linuxsb.com/software/fping-5.0.tar.gz
  9. # tar -zxvf fping-5.0.tar.gz
  10. # cd fping-5.0/
  11. # ./configure --prefix=/usr/local/fping
  12. # make && make install
  13. #
  14. # echo 'export PATH=$PATH:/usr/local/tcping/sbin:/usr/local/fping/sbin' >> /root/.bashrc
复制代码
2.11        配置vim环境
对于经常使用vim的用户,配置一个属于自己的独立的vimrc环境,会让你显得非常有逼格,如下为本人分享的其中一个。
  1. # cp -brpf /root/.vimrc /root/.vimrc.bak
  2. # wget http://down.linuxsb.com/myoptions/my_Vimrc_Diy01_v2 -O /root/.vimrc
  3. # wget http://down.linuxsb.com/myoptions/my_Vimrc_Diy01_v02 -O /etc/skel/.vimrc
复制代码
2.12        配置时钟同步
很多人都不注意NTP时钟同步的重要性,甚至我司部分技术也重视,其实在高可用架构中,时钟同步非常关键。
2.12.1        CentOS7时钟同步
  1. # cp -brpf /etc/ntp.conf /etc/ntp.conf.bak
  2. # wget http://down.linuxsb.com/myoptions/Aliyunntp.conf -O /etc/ntp.conf
  3. #
  4. # systemctl enable ntpd –now
复制代码
2.12.2        CentOS8时钟同步
  1. # cp -brpf /etc/chrony.conf /etc/chrony.conf.bak
  2. # wget http://down.linuxsb.com/myoptions/Aliyunchrony.conf -O /etc/chrony.conf
  3. #
  4. # systemctl enable chronyd --now
复制代码
提示:对于CentOS7和CentOS8时钟同步服务部署参考:CentOS7时钟同步服务部署CentOS8时钟同步服务部署
2.13        配置bash别名环境
对于常用的命令,建议配置别名,提高工作效率,以下为本人常使用的别名。
  1. # vim ~/.bashrc
  2. # Xianghy defined aliases and functions
  3. export TERM=linux
  4. alias sroot='su - root'
  5. alias useradd='useradd -m'
  6. alias rm='rm -i'
  7. alias cp='cp -ia'
  8. alias mv='mv -i'
  9. alias dff='df -Th'
  10. alias du='du -h'
  11. alias gj='shutdown -h now'
  12. alias cq='shutdown -r now'
  13. alias vi='vim'
  14. alias ls='ls -h --color=auto'
  15. alias ll='ls -lh --color=auto'
  16. alias grep='grep --color=auto'
  17. alias freem='free -m'
  18. alias cip='curl -s icanhazip.com'
复制代码
2.14        CentOS7升级openssl
曾经旧版openssl出现重大bug,建议升级为更新版本的openssl。
  1. # cd /tmp
  2. # wget http://down.linuxsb.com/software/openssl-1.1.1m.tar.gz --no-check-certificate
  3. # tar -zxvf openssl-1.1.1m.tar.gz
  4. # cd openssl-1.1.1m
  5. # ./config --prefix=/usr/local/openssl no-zlib
  6. # make && make install
  7. #
  8. # mv /usr/bin/openssl /usr/bin/openssl.bak
  9. # ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
  10. # ln -snf /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
  11. # ln -snf /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
  12. # mv /usr/include/openssl/ /usr/include/openssl.bak
  13. #
  14. # ln -s /usr/local/openssl/include/openssl /usr/include/openssl
  15. # ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/local/lib64/libssl.so
  16. # echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
  17. # echo "CentOS openssl update!"
复制代码
2.15        CentOS7安装Python3.9
对于CentOS7而言,默认的Python为2.7,普通软件依赖高版本Python,可通过如下方式升级。
  1. # cd /tmp
  2. # pyversion=3.9.9
  3. # wget https://mirrors.huaweicloud.com/python/${pyversion}/Python-${pyversion}.tar.xz --no-check-certificate
  4. # tar -Jxvf Python-${pyversion}.tar.xz
  5. # cd Python-${pyversion}/
  6. # ./configure --prefix=/usr/local/python3 --with-openssl=/usr/local/openssl
  7. # make && make install
  8. #
  9. # pyversionnew=`echo ${pyversion} | awk -F '.' '{ print $1"."$2 }'`
  10. # cp -brpf /usr/local/python3/bin/{python,pip,pydoc}${pyversionnew} /usr/bin/
  11. # cp -brpf /usr/local/python3/bin/python${pyversionnew}-config /usr/bin/
  12. #
  13. # pyversionold=`python -V 2>&1 | awk '{ print $2 }' | awk -F '.' '{ print $1"."$2 }'`
  14. # pyversionnew=`echo ${pyversion} | awk -F '.' '{ print $1"."$2 }'`
  15. # mv /usr/bin/python /usr/bin/python.bak
  16. # alternatives --install /usr/bin/python python /usr/bin/python${pyversionold} 30
  17. # alternatives --install /usr/bin/python python /usr/local/python3/bin/python${pyversionnew} 50
  18. # alternatives --auto python
  19. #
  20. # ln -s /usr/bin/python${pyversionnew} /usr/bin/python3
  21. # ln -s /usr/bin/pip${pyversionnew} /usr/bin/pip3
  22. # ln -s /usr/bin/python${pyversionnew}-config /usr/bin/python3-config3
  23. #
  24. # echo 'export PATH=$PATH:/usr/local/python3/bin/' >> /root/.bashrc
  25. # source /root/.bashrc
  26. #
  27. # sed -i '1s/python/python2.7/g' /usr/bin/yum*                                      #仅可执行一次
  28. #
  29. # sed -i '1s/python/python2.7/g' /usr/libexec/urlgrabber-ext-down                   #仅可执行一次
复制代码
提示:对于Python多版本情况下,可能会出现一些依赖性问题,可参考 Python多版本环境管理  ,在系统存在多个版本Python的情况下借助第三方软件进行版本管理和切换。
2.16        配置国内pip源
对于Python而言,将pip源修改为国内也非常重要。
  1. # mkdir -p ~/.pip
  2. # cat > ~/.pip/pip.conf <<EOF
  3. # [global]
  4. # index-url = https://pypi.mirrors.ustc.edu.cn/simple/
  5. # [install]
  6. # trusted-host = pypi.mirrors.ustc.edu.cn
  7. # EOF
  8. #
  9. # pip3 install --upgrade pip
  10. # pip install pyreadline#
复制代码
2.17        清理垃圾
对于优化/初始化完成后,在正式部署应用交付之前,建议将所有历史信息和垃圾清理掉。
  1. <font size="2">rm -rf /var/log/anaconda/*
  2. rm -rf /var/log/boot.log*
  3. rm -rf /var/log/btmp*
  4. rm -rf /var/log/chrony/*
  5. rm -rf /var/log/cloud-init*
  6. rm -rf /var/log/cron*
  7. rm -rf /var/log/dmesg\.*
  8. rm -rf /var/log/grubby*
  9. rm -rf /var/log/dnf*
  10. rm -rf /var/log/hawkey.log*
  11. rm -rf /var/log/messages*
  12. rm -rf /var/log/qemu-ga*
  13. rm -rf /var/log/rhsm*
  14. rm -rf /var/log/samba*
  15. rm -rf /var/log/secure*
  16. rm -rf /var/log/sssd*
  17. rm -rf /var/log/tallylog
  18. rm -rf /var/log/tuned*
  19. rm -rf /var/log/dnf.*log
  20. rm -rf /var/log/openwebmail.log
  21. rm -rf /var/log/vmware*
  22. rm -rf /var/log/update*.log
  23. rm -rf /var/log/kdump.log
  24. rm -rf /var/spool/mail/root
  25. echo "" > /var/log/audit/audit.log
  26. echo "" > /var/log/boot.log
  27. echo "" > /var/log/btmp
  28. echo "" > /var/log/dmesg
  29. echo "" > /var/log/dnf.log
  30. echo "" > /var/log/firewalld
  31. echo "" > /var/log/httpd/access_log
  32. echo "" > /var/log/httpd/error_log
  33. echo "" > /var/log/syslog
  34. echo "" > /var/log/lastlog
  35. echo "" > /var/log/wtmp
  36. echo "" > /var/log/maillog
  37. echo "" > /var/log/messages
  38. echo "" > /var/log/maillog
  39. echo "" > /var/log/ntp.log
  40. echo "" > /var/log/README
  41. echo "" > /var/log/secure
  42. echo "" > /var/log/spooler
  43. echo "" > /var/log/yum.log
  44. echo "" > $HOME/.bash_history

  45. rm -rf /etc/yum.repos.d/epel.repo
  46. rm -rf /etc/yum.repos.d/epel-*.repo
  47. rm -rf /var/spool/mail/root

  48. rm -rf /tmp/*

  49. history -c
复制代码

声明:
如上优化项,为本人基于经验总结,不代表绝对的权威指导,仅供参考,若有其他问题咨询,可直接联系本人。

打赏鼓励作者,期待更多好文!

打赏
25人已打赏

飞翔的苹果 发表于 2022-5-31 08:52
  
感谢分享有助于工作和学习!
zwangxin 发表于 2022-6-2 16:35
  


感谢分享,有助于工作,学习学习
新手899116 发表于 2022-6-4 08:59
  
感谢分享有助于工作和学习!
司马缸砸了光 发表于 2022-6-4 09:25
  
坚持学习,坚持打卡。
新手031815 发表于 2022-6-4 09:48
  
感谢分享,有助于工作,学习了!!!
飞翔的苹果 发表于 2022-6-4 18:36
  

感谢分享,有助于工作,学习了!!!
新手741261 发表于 2022-6-5 08:38
  
楼主分析的很详细,不错的实战经验
dhf 发表于 2022-6-5 10:24
  
感谢楼主的精彩分享,有助工作!!!
白鹭先生 发表于 2022-6-5 13:53
  
非常好的技术干货帖,顶一个!
发表新帖
热门标签
全部标签>
每日一问
每周精选
技术盲盒
技术笔记
2024年技术争霸赛
产品连连看
干货满满
技术咨询
2023技术争霸赛专题
标准化排查
技术晨报
GIF动图学习
安装部署配置
新版本体验
功能体验
秒懂零信任
自助服务平台操作指引
文档捉虫活动
信服课堂视频
通用技术
答题自测
每日一记
SDP百科
玩转零信任
技术圆桌
在线直播
测试报告
问题分析处理
畅聊IT
专家问答
MVP
网络基础知识
升级
安全攻防
上网策略
日志审计
流量管理
运维工具
云计算知识
用户认证
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
齐鲁TV
华北区交付直播
北京区每日一练

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人