特别说明:本文来自就爱运维。特和所有博友分享。更多优化,请关注www.92yunwei.com后续内容以及分享。

CentOS系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才行。在此讲解几点关于Linux系统安装后的基础优化操作。注意:本次优化都是基于CentOS(5.8/6.4)。

下面我就为大家简单讲解几点关于Linux系统安装后的基础优化操作。

注意:本次优化都是基于CentOS(5.8/6.4)。关于5.8和6.4两者优化时的小区别,我会在文中提及的。

优化条目:

  1. 修改ip地址、网关、主机名、DNS等

  2. 关闭selinux,清空iptables

  3. 添加普通用户并进行sudo授权管理

  4. 更新yum源及必要软件安装

  5. 定时自动更新服务器时间

  6. 精简开机自启动服务

  7. 定时自动清理/var/spool/clientmqueue/目录垃圾文件,放置inode节点被占满

  8. 变更默认的ssh服务端口,禁止root用户远程连接

  9. 锁定关键文件系统

  10. 调整文件描述符大小

  11. 调整字符集,使其支持中文

  12. 去除系统及内核版本登录前的屏幕显示

  13. 内核参数优化

1、修改ip地址、网关、主机名、DNS等

  1. [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

  2. DEVICE=eth0         #网卡名字

  3. BOOTPROTO=static    #静态IP地址获取状态 如:DHCP表示自动获取IP地址

  4. IPADDR=192.168.1.113            #IP地址

  5. NETMASK=255.255.255.0           #子网掩码

  6. ONBOOT=yes#引导时是否激活

  7. GATEWAY=192.168.1.1

  8. [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

  9. DEVICE=eth0

  10. BOOTPROTO=static

  11. IPADDR=192.168.1.113

  12. NETMASK=255.255.255.0

  13. ONBOOT=yes

  14. GATEWAY=192.168.1.1

  15. [root@localhost ~]# vi /etc/sysconfig/network

  16. HOSTNAME=c64     #修改主机名,重启生效

  17. GATEWAY=192.168.1.1    #修改默认网关,如果上面eth0里面不配置网关的话,默认就使用这里的网关了。

  18. [root@localhost ~]# cat /etc/sysconfig/network

  19. HOSTNAME=c64

  20. GATEWAY=192.168.1.1

  21. 我们也可以用  hostnamec64  来临时修改主机名,重新登录生效

  22. 修改DNS

  23. [root@localhost ~]# vi /etc/resolv.conf   #修改DNS信息

  24. nameserver 114.114.114.114

  25. nameserver 8.8.8.8

  26. [root@localhost ~]# cat /etc/resolv.conf  #查看修改后的DNS信息

  27. nameserver 114.114.114.114

  28. nameserver 8.8.8.8

  29. [root@localhost ~]# service network restart   #重启网卡,生效

  30. 重启网卡,也可以用下面的命令

  31. [root@localhost ~]# /etc/init.d/network restart

2、关闭selinux,清空iptables

关闭selinux

  1. [root@c64 ~]# sed –i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config   #修改配置文件则永久生效,但是必须要重启系统。

  2. [root@c64 ~]# grep SELINUX=disabled /etc/selinux/config

  3. SELINUX=disabled     #查看更改后的结果

  4. [root@c64 ~]# setenforce 0#临时生效命令

  5. [root@c64 ~]# getenforce      #查看selinux当前状态

  6. Permissive

清空iptables

  1. [root@c64 ~]# iptables –F     #清理防火墙规则

  2. [root@c64 ~]# iptables –L     #查看防火墙规则

  3. Chain INPUT (policy ACCEPT)

  4. target     prot opt source               destination

  5. Chain FORWARD (policy ACCEPT)

  6. target     prot opt source               destination

  7. Chain OUTPUT (policy ACCEPT)

  8. target     prot opt source               destination

  9. [root@c64 ~]#/etc/init.d/iptables save   #保存防火墙配置信息

3、添加普通用户并进行sudo授权管理

  1. [root@c64 ~]# useradd sunsky

  2. [root@c64 ~]# echo "123456"|passwd --stdin sunsky&&history –c

  3. [root@c64 ~]# visudo

  4. 在root    ALL=(ALL)    ALL此行下,添加如下内容

  5. sunsky    ALL=(ALL)    ALL

4、更新yum源及必要软件安装

yum安装软件,默认获取rpm包的途径从国外官方源,改成国内的源。

国内较快的两个站点:搜狐镜像站点、网易镜像站点

法1:自己配置好安装源配置文件,然后上传到linux。

法2:使用镜像站点配置好的yum安装源配置文件

  1. [root@c64 ~]# cd /etc/yum.repos.d/

  2. [root@c64 yum.repos.d]# /bin/mv CentOS-Base.repo CentOS-Base.repo.bak

  3. [root@c64 yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

接下来执行如下命令,检测yum是否正常

  1. [root@c64 yum.repos.d]# yum clean all  #清空yum缓存

  2. [root@c64 yum.repos.d]# yum makecache  #建立yum缓存

然后使用如下命令将系统更新到最新

  1. [root@c64 yum.repos.d]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*       #导入签名KEY到RPM

  2. [root@c64 yum.repos.d]# yum  upgrade-y     #更新系统内核到最新

接下来就要安装几个必要的软件了

  1. [root@c64 yum.repos.d]# yum install lrzsz ntpdate sysstat -y

lrzsz是一个上传下载的软件

sysstat是用来检测系统性能及效率的工具

5、定时自动更新服务器时间

  1. [root@c64 ~]# echo '*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2 >&1' >>/var/spool/cron/root

  2. [root@c64 ~]# echo '*/10 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1' >>/var/spool/cron/root

提示:CentOS 6.4的时间同步命令路径不一样

6是/usr/sbin/ntpdate

5是/sbin/ntpdate

扩展:在机器数量少时,以上定时任务同步时间就可以了。如果机器数量大时,可以在网内另外部署一台时间同步服务器NTP Server。此处仅提及,不做部署

时间同步服务器架构图:

6、精简开机自启动服务

刚装完操作系统可以只保留crond,network,syslog,sshd这四个服务。(Centos6.4为rsyslog)

  1. [root@c64 ~]# for sun in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $sun off;done
  2. [root@c64 ~]# for sun in crond rsyslog sshd network;do chkconfig --level 3 $sun on;done
  3. [root@c64 ~]# chkconfig --list|grep 3:on
  4. crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
  5. network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
  6. rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
  7. sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off

7、定时自动清理/var/spool/clientmqueue/目录垃圾文件,放置inode节点被占满

本优化点,在6.4上可以忽略不需要操作即可!

  1. [root@c64 ~]# mkdir /server/scripts -p
  2. [root@c64 ~]# vi /server/scripts/spool_clean.sh
  3. #!/bin/sh
  4. find/var/spool/clientmqueue/-typef -mtime +30|xargsrm-f

然后将其加入到crontab定时任务中

  1. [root@c64 ~]# echo '*/30 * * * * /bin/sh /server/scripts/spool_clean.sh >/dev/null 2>&1'>>/var/spool/cron/root

8、变更默认的ssh服务端口,禁止root用户远程连接

  1. [root@c64 ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  2. [root@c64 ~]# vim /etc/ssh/sshd_config
  3. Port 52113#ssh连接默认的端口
  4. PermitRootLogin no   #root用户***都知道,禁止它远程登录
  5. PermitEmptyPasswords no #禁止空密码登录
  6. UseDNS no            #不使用DNS
  7. [root@c64 ~]# /etc/init.d/sshd reload    #从新加载配置
  8. [root@c64 ~]# netstat -lnt     #查看端口信息
  9. [root@c64 ~]# lsof -i tcp:52113

9、锁定关键文件系统

  1. [root@c64 ~]# chattr +i /etc/passwd
  2. [root@c64 ~]# chattr +i /etc/inittab
  3. [root@c64 ~]# chattr +i /etc/group
  4. [root@c64 ~]# chattr +i /etc/shadow
  5. [root@c64 ~]# chattr +i /etc/gshadow

使用chattr命令后,为了安全我们需要将其改名

  1. [root@c64 ~]# /bin/mv /usr/bin/chattr /usr/bin/任意名称

10、调整文件描述符大小

  1. [root@localhost ~]# ulimit –n        #查看文件描述符大小
  2. 1024
  3. [root@localhost ~]# echo '*  -  nofile  65535' >> /etc/security/limits.conf

配置完成后,重新登录即可查看。

提示:也可以把ulimit -SHn 65535命令加入到/etc/rc.local,然后每次重启生效

  1. [root@c64 ~]# cat >>/etc/rc.local<<EOF
  2. #open files
  3. ulimit -HSn 65535
  4. #stack size
  5. ulimit -s 65535
  6. EOF

扩展:文件描述符

文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于Unix、Linux这样的操作系统。

习惯上,标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误(standard error)是 2。尽管这种习惯并非Unix内核的特性,但是因为一些 shell 和很多应用程序都使用这种习惯,因此,如果内核不遵循这种习惯的话,很多应用程序将不能使用。

11、调整字符集,使其支持中文

  1. sed-i 's#LANG="en_US.UTF-8"#LANG="zh_CN.GB18030"#'/etc/sysconfig/i18n
  2. source/etc/sysconfig/i18n

扩展:什么是字符集?

简单的说就是一套文字符号及其编码。常用的字符集有:

GBK 定长双字节不是国际标准,支持系统不少

UTF-8 非定长 1-4字节广泛支持,MYSQL也使用UTF-8

12、去除系统及内核版本登录前的屏幕显示

  1. [root@c64 ~]# >/etc/redhat-release
  2. [root@c64 ~]# >/etc/issue

13、内核参数优化

说明:本优化适合apache,nginx,squid多种等web应用,特殊的业务也可能需要略作调整。

  1. [root@c64 ~]# vi /etc/sysctl.conf
  2. #by sun in 20131001
  3. net.ipv4.tcp_fin_timeout = 2
  4. net.ipv4.tcp_tw_reuse = 1
  5. net.ipv4.tcp_tw_recycle = 1
  6. net.ipv4.tcp_syncookies = 1
  7. net.ipv4.tcp_keepalive_time =600
  8. net.ipv4.ip_local_port_range = 4000    65000
  9. net.ipv4.tcp_max_syn_backlog = 16384
  10. net.ipv4.tcp_max_tw_buckets = 36000
  11. net.ipv4.route.gc_timeout = 100
  12. net.ipv4.tcp_syn_retries = 1
  13. net.ipv4.tcp_synack_retries = 1
  14. net.core.somaxconn = 16384
  15. net.core.netdev_max_backlog = 16384
  16. net.ipv4.tcp_max_orphans = 16384
  17. #一下参数是对iptables防火墙的优化,防火墙不开会有提示,可以忽略不理。
  18. net.ipv4.ip_conntrack_max = 25000000
  19. net.ipv4.netfilter.ip_conntrack_max = 25000000
  20. net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
  21. net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
  22. net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
  23. net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
  24. [root@localhost ~]# sysctl –p    #使配置文件生效

提示:由于CentOS6.X系统中的模块名不是ip_conntrack,而是nf_conntrack,所以在/etc/sysctl.conf优化时,需要把net.ipv4.netfilter.ip_conntrack_max 这种老的参数,改成net.netfilter.nf_conntrack_max这样才可以。

即对防火墙的优化,在5.8上是

  1. net.ipv4.ip_conntrack_max = 25000000
  2. net.ipv4.netfilter.ip_conntrack_max = 25000000
  3. net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
  4. net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
  5. net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
  6. net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120

在6.4上是

  1. net.nf_conntrack_max = 25000000
  2. net.netfilter.nf_conntrack_max = 25000000
  3. net.netfilter.nf_conntrack_tcp_timeout_established = 180
  4. net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
  5. net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
  6. net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

另外,在此优化过程中可能会有报错:

1、5.8版本上

  1. error: "net.ipv4.ip_conntrack_max"is an unknown key
  2. error: "net.ipv4.netfilter.ip_conntrack_max"is an unknown key
  3. error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_established"is an unknown key
  4. error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait"is an unknown key
  5. error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait"is an unknown key
  6. error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait"is an unknown key

这个错误可能是你的防火墙没有开启或者自动处理可载入的模块ip_conntrack没有自动载入,解决办法有二,一是开启防火墙,二是自动处理开载入的模块ip_conntrack

  1. modprobe ip_conntrack
  2. echo "modprobe ip_conntrack">> /etc/rc.local

2、6.4版本上

  1. error: "net.nf_conntrack_max"isan unknown key
  2. error: "net.netfilter.nf_conntrack_max"isan unknown key
  3. error: "net.netfilter.nf_conntrack_tcp_timeout_established"isan unknown key
  4. error: "net.netfilter.nf_conntrack_tcp_timeout_time_wait"isan unknown key
  5. error: "net.netfilter.nf_conntrack_tcp_timeout_close_wait"isan unknown key
  6. error: "net.netfilter.nf_conntrack_tcp_timeout_fin_wait"isan unknown key

这个错误可能是你的防火墙没有开启或者自动处理可载入的模块ip_conntrack没有自动载入,解决办法有二,一是开启防火墙,二是自动处理开载入的模块ip_conntrack

  1. modprobe nf_conntrack
  2. echo "modprobe nf_conntrack">> /etc/rc.local

3、6.4版本上

  1. error: "net.bridge.bridge-nf-call-ip6tables"isan unknown key
  2. error: "net.bridge.bridge-nf-call-iptables"isan unknown key
  3. error: "net.bridge.bridge-nf-call-arptables"isan unknown key

这个错误是由于自动处理可载入的模块bridge没有自动载入,解决办法是自动处理开载入的模块ip_conntrack

  1. modprobe bridge
  2. echo "modprobe bridge">> /etc/rc.local

到此,我们Linux系统安装后的基础优化已经操作的差不多了,总结下来一共有13个优化点需要我们来熟知。后面我会出一个一键优化的shell脚本出来和大家一起交流学习。

本文出自 “就爱运维” 博客,请务必保留此出处http://www.92yunwei.com

转载于:https://blog.51cto.com/92yunwei/1728049

CentOS(5.8/6.4)linux生产环境若干优化实战------就爱运维相关推荐

  1. CentOS(5.8/6.4)linux生产环境若干优化实战

    CentOS系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才行.在此讲解几点关于Linux系统安装后的基础优化操作.注意:本次优化都是基于CentOS(5.8/6.4). 下 ...

  2. ASP.NET Core 发布至Linux生产环境 Ubuntu 系统

    ASP.NET Core 发布至Linux生产环境 Ubuntu 系统,之前跟大家讲解了 dotnet publish 发布,而没有将整个系统串起来. 今天就跟大家综合的讲一下ASP.NET Core ...

  3. 【ketlle】本地开发kitlle job提交至linux生产环境上执行流程

    [ketlle]本地开发kitlle job提交至linux生产环境上执行 前言 操作步骤 后记 前言 因为kettle提供可视化界面,所以我们在本地开发的时候拖拽开发十分便捷,开发完成后,我们需要丢 ...

  4. 查看webpack版本_webpack小结-生产环境构建优化

    刚刚对我们前端项目做了一顿分析优化操作,因为接手时每次构建要花两分钟左右的时间,实在忍受不了,只能动手了.通过这次优化,重新温习了下 webpack 的一些知识.接下来会关于 webpack 展开写几 ...

  5. 开发测试环境 k8s node节点磁盘不足运维

    开发测试环境 k8s node节点磁盘不足运维 开发测试环境 k8s node节点磁盘不足运维 排查服务器pod 问题 解决服务器节点磁盘问题 开发测试环境 k8s node节点磁盘不足运维 在开发测 ...

  6. linux生产环境下安装anaconda总结

    前言: 工作中,常常要在新的linux生产服务器中安装自己的集成python环境,这种情况下有一点需要注意:不能覆盖生产服务器中的python环境(也就是自己的python环境要和系统的python环 ...

  7. Debian 11 Linux生产环境配置(Git2.30.2 Python3.9.2 Golang1.18 Docker20.10.4 Nginx1.21.6)

    0.说明 本文操作需要在服务器下进行,由于本人第一次配置Debian生产环境,本文内容仅供参考 本篇文章主要包含以下内容: ·安装python一些实用的软件包 ·配置Git ·安装Golang最新版本 ...

  8. Linux生产环境CPU使用率100%,教你定位到具体函数

    在我们项目部署上线的时候,我们是不是会经常去Linux服务器上查查服务器的CPU使用率,或者是运维经常会盯Linux的CPU使用率,发现监控报了60%的一般就会报警了,到了100%那就惨啦,做我开发的 ...

  9. Linux生产环境运行flask

    说明 在生产环境运行Flask程序,也就是常用的linux服务器上跑Flask程序. 起因 每次在服务器上跑Flask程序都会有下面这个warning (env) [root@i8z code]# p ...

最新文章

  1. ApplicationId 与 PackageName 的区别
  2. 怎么传日期参数_时间序列amp;日期学习笔记大全(下)
  3. nginx优化及配置
  4. .NET Exceptionless 日志收集框架本地环境搭建
  5. ionic cordova 常用命令
  6. 两个vlan如何互通_网络交换机VLAN的常识与划分方法,你知道吗?
  7. 0064-简单的平方和
  8. 让我们深入了解PP YOLO做出的贡献
  9. windows 开始命令集
  10. leetcode 9. 回文数(python)
  11. 发动机冒黑烟_发动机冒黑烟常见的24个原因和解决方法
  12. 宝塔面板申请带有www的二级域名SSL证书失败的处理方法
  13. Android 版本统一管理
  14. 《东周列国志》第四十四回 叔詹据鼎抗晋侯 弦高假命犒秦军
  15. linux屏幕触碰事件,触摸屏中鼠标事件的捕获和传递及触摸屏的移植
  16. synchdem matlab,数字高程模型(DEM)移动插值算法
  17. MATLAB多因子模型代码,多因子模型详细.ppt
  18. C++笔记——第十篇 继承 的解析,详细易懂哦
  19. ubuntu linux 环境下的程序打包
  20. Daisy Chains

热门文章

  1. bzoj 1968: [Ahoi2005]COMMON 约数研究【枚举】
  2. java static成员变量方法和非static成员变量方法的区别 ( 二 )
  3. 【java 类加载的深入研究1】loadClass()的研究
  4. 网页设计必备工具 firefox Web Developer插件 CSS工具组教程
  5. ExtJs之自定义事件
  6. 以获客为目标 ,首席增长官从0到1实现用户增长
  7. 产品经理面试中那些不忍直视的奇葩题目,面试官你真是够了!
  8. 【独家】去哪儿网PRD兵法秘籍大公开,火爆课程精彩直击!
  9. 送给产品经理的一段代码 (!(~+[]) + {})[--[~+][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]] ...
  10. nginx服务器配置/websocket nginx 配置笔记