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

特别说明:本文来自就爱运维。特和所有博友分享。更多优化,请关注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. [[email protected] ~]# 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. [[email protected] ~]# 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. [[email protected] ~]# vi /etc/sysconfig/network
  16. HOSTNAME=c64     #修改主机名,重启生效
  17. GATEWAY=192.168.1.1    #修改默认网关,如果上面eth0里面不配置网关的话,默认就使用这里的网关了。
  18. [[email protected] ~]# cat /etc/sysconfig/network
  19. HOSTNAME=c64
  20. GATEWAY=192.168.1.1
  21. 我们也可以用  hostnamec64  来临时修改主机名,重新登录生效
  22. 修改DNS
  23. [[email protected] ~]# vi /etc/resolv.conf   #修改DNS信息
  24. nameserver 114.114.114.114
  25. nameserver 8.8.8.8
  26. [[email protected] ~]# cat /etc/resolv.conf  #查看修改后的DNS信息
  27. nameserver 114.114.114.114
  28. nameserver 8.8.8.8
  29. [[email protected] ~]# service network restart   #重启网卡,生效
  30. 重启网卡,也可以用下面的命令
  31. [[email protected] ~]# /etc/init.d/network restart

2、关闭selinux,清空iptables


关闭selinux

  1. [[email protected] ~]# sed –i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config   #修改配置文件则永久生效,但是必须要重启系统。
  2. [[email protected] ~]# grep SELINUX=disabled /etc/selinux/config
  3. SELINUX=disabled     #查看更改后的结果
  4. [[email protected] ~]# setenforce 0#临时生效命令
  5. [[email protected] ~]# getenforce      #查看selinux当前状态
  6. Permissive

清空iptables

  1. [[email protected] ~]# iptables –F     #清理防火墙规则
  2. [[email protected] ~]# 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. [[email protected] ~]#/etc/init.d/iptables save   #保存防火墙配置信息

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

  1. [[email protected] ~]# useradd sunsky
  2. [[email protected] ~]# echo "123456"|passwd --stdin sunsky&&history –c
  3. [[email protected] ~]# visudo
  4. 在root    ALL=(ALL)    ALL此行下,添加如下内容
  5. sunsky    ALL=(ALL)    ALL

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

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

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

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

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

  1. [[email protected] ~]# cd /etc/yum.repos.d/
  2. [[email protected] yum.repos.d]# /bin/mv CentOS-Base.repo CentOS-Base.repo.bak
  3. [[email protected] yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

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

  1. [[email protected] yum.repos.d]# yum clean all  #清空yum缓存
  2. [[email protected] yum.repos.d]# yum makecache  #建立yum缓存

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

  1. [[email protected] yum.repos.d]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*       #导入签名KEY到RPM
  2. [[email protected] yum.repos.d]# yum  upgrade-y     #更新系统内核到最新

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

  1. [[email protected] yum.repos.d]# yum install lrzsz ntpdate sysstat -y

lrzsz是一个上传下载的软件

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

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

  1. [[email protected] ~]# echo ‘*/5 * * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2 >&1‘ >>/var/spool/cron/root
  2. [[email protected] ~]# 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. [[email protected] ~]# for sun in `chkconfig --list|grep 3:on|awk ‘{print $1}‘`;do chkconfig --level 3 $sun off;done
  2. [[email protected] ~]# for sun in crond rsyslog sshd network;do chkconfig --level 3 $sun on;done
  3. [[email protected] ~]# 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. [[email protected] ~]# mkdir /server/scripts -p
  2. [[email protected] ~]# vi /server/scripts/spool_clean.sh
  3. #!/bin/sh
  4. find/var/spool/clientmqueue/-typef -mtime +30|xargsrm-f

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

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

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

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

9、锁定关键文件系统

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

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

  1. [[email protected] ~]# /bin/mv /usr/bin/chattr /usr/bin/任意名称

10、调整文件描述符大小

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

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

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

  1. [[email protected] ~]# 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. [[email protected] ~]# >/etc/redhat-release
  2. [[email protected] ~]# >/etc/issue

13、内核参数优化

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

  1. [[email protected] ~]# 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. [[email protected] ~]# 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脚本出来和大家一起交流学习。

时间: 2024-10-05 13:21:32

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

CentOS(6.8)linux生产环境若干优化实战

CentOS系统安装之后并不能立即投入生产环境使用,需要经过运维人员的优化才行.在此讲解几点关于Linux系统安装后的基础优化操作. 注意:不同版本5.x和6.x两者优化时会有些区别. CentOS修改时区 echo 'ZONE="Asia/Shanghai"' > /etc/sysconfig/clock cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 优化条目: 1.   修改ip地址.网关.主机名.DNS等 2.

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

CentOS(5.8/6.4)linux生产环境若干优化实战 CentOS系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才行.在此讲解几点关于Linux系统安装后的基础优化操作. 注意:本次优化都是基于CentOS(5.8/6.4).关于5.8和6.4两者优化时的小区别,我会在文中提及的. 优化条目: 修改ip地址.网关.主机名.DNS等 关闭selinux,清空iptables 添加普通用户并进行sudo授权管理 更新yum源及必要软件安装 定时自动更新服务器时间 精

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

下面我就为大家简单讲解几点关于Linux系统安装后的基础优化操作. 注意:本次优化都是基于CentOS(5.8/6.4).关于5.8和6.4两者优化时的小区别,我会在文中提及的. 优化条目: 修改ip地址.网关.主机名.DNS等 关闭selinux,清空iptables 添加普通用户并进行sudo授权管理 更新yum源及必要软件安装 定时自动更新服务器时间 精简开机自启动服务 定时自动清理/var/spool/clientmqueue/目录垃圾文件,放置inode节点被占满 变更默认的ssh服务

linux生产环境精华优化实战配置(亲测)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 编写人:陈飞 邮箱:[email protected] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CentOS系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才行.在此讲解几

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

ASP.NET Core 发布至Linux生产环境 Ubuntu 系统,之前跟大家讲解了 dotnet publish 发布,而没有将整个系统串起来. 今天就跟大家综合的讲一下ASP.NET Core发布至Linux生产环境. 开发及发布环境:WIN10 x64  生产Linux环境:Ubuntu 14.04 发布的示例代码: https://github.com/linezero/NETCoreBBS 代码下载下来,首先请注释 Program.cs 中 .UseUrls("http://*:8

云计算视频教程:Linux大型网站高并发架构及自动化运维

随着互联网技术的不断进步和发展,对运维人员提出了更高的要求和挑战,如何才能将运维工作自动化,提升工作的效率?让大家学完后可以具备企业真正的大型网站搭建能力以及自动化运维的实战能力.在企业中运用zabbix监控企业数据,第一时间了解服务的运行状态,通过nginx+lvs+keeplived在企业中根据公司业务做七层负载以及四层负载. 下面给大家分享一下Linux大型网站高并发架构及自动化运维的学习内容: 01-初识ansible 02-ansible-Ad-Hoc-重点模块学习 03-ansibl

linux生产环境中替换jdk

声明一下,为了给大家演示以及对生产环境的保密,我在本地vm中搭建了跟生产环境一模一样的虚拟机来给大家操作,其中截图来自本地虚拟机.操作步骤严格按照生产环境替换来做. 首先,给大家介绍下生产环境的大体架构,前端采用nginx分发,后端两个tomcat处理请求应用服务器,这只是最基本也是最常见的负载均衡架构. 下面开始实际操作:(注:请使用root账户操作) 第一步:首先看一下系统的java版本.系统采用openJDK,并且为1.7.0_85版本 第二步:安装sunjdk 1使用命令新建一个文件夹s

Linux生产环境上,最常用的一套“vim“技巧

引子 研发线上使用最多的编辑器,就是vi.无论是最快查看某个文件内容,还是快速编辑某个文件,vi都能帮上忙. 软件世界貌似有一些非常长寿的东西,vi算是一个.本篇文章聚焦的是研发线上最常用的一些功能.至于安装插件,写一些脚本,那一般是在开发机上玩的,生产环境没有条件.也没有时间忍受你做这些增强.希望看完本文,能够对这款神器有一个大体印象.当然,熟练的使用还需要日常有意识的培养. vim是vi的增强版,一般现代linux都不缺那几兆空间,所以预装的都是增强版,本文默认使用vim. 养成习惯 vim

Linux生产环境中的分区方式

常规分区方案: /剩余硬盘大小 swap 1.5倍 /boot 100M-200M DB及存储:有大量重要的数据 /data/ 剩余硬盘大小,放数据 /50-200G swap 100M /boot 100M 门户大网站: /50-200G swap 1.5倍 /boot 100M 不在进行分区,保留,将来哪个 把分用,自己根据需求再分 对硬盘监控,剩余20%了,短信报警 LVN在线调整分区大小,生产DELL硬盘 RAID(磁盘冗余阵列),组合多块硬盘.而不是LVM以及软RAID.