CentOS6.4x86_64最小化安装---基础优化总结

目录

1、默认情况下最小化安装网卡是不启动的,首先就是调整网络的配置。...1

2、修改主机名以及hosts文件...1

3、修改默认的yum...2

4、安装必备的软件,并且更新系统的软件。...3

5、关闭SElinux,关闭不必要的服务(优化系统启动服务)...3

6、关闭IPv6.4

7、调整启动级别,设置文本界面启动。...5

8、关闭ctrl+alt+del.5

9、关闭多余的tty.5

10、修改默认登录信息,不显示内核信息...5

11、设置时间同步的定时任务...6

12、适当的调整shell命令的history记录个数...6

13、关闭文件系统的atime时间。以提升磁盘的I/O性能。...6

14、调整内核参数...6

15、加大服务器的文件描述符...7

16、添加一个普通用户...7

17、使用sudo给账户适当的权限...7

18、禁止root用户远程登录...8

19、锁定日志文件...8

20、设置linux控制台自动注销...9

服务器使用的一个原则:系统的安装包越少越好,这样的机器才会更加稳定。

1、默认情况下最小化安装网卡是不启动的,首先就是调整网络的配置。

网卡配置信息如下:

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

DEVICE=eth0

HWADDR=08:00:27:00:B3:0B

TYPE=Ethernet

UUID=387b6df9-1683-4bf9-97cd-35f30fc19903

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.100.211

NETMASK=255.255.255.0

GATEWAY=192.168.100.1

[root@localhost~]#

DNS配置信息如下:

[root@localhost~]#cat/etc/resolv.conf

nameserver8.8.8.8

nameserver8.8.4.4

[root@localhost~]#

2、修改主机名以及hosts文件

临时修改主机名:

[root@localhost~]#hostnamenight

[root@localhost~]#echo$HOSTNAME

localhost.localdomain

[root@localhost~]#exit

logout

Lastlogin:FriOct1811:03:022013from192.168.100.101

[root@night~]#echo$HOSTNAME

night

[root@night~]#

临时修改,注销用户重新登录后生效。

永久修改主机名:

[root@night~]#cat/etc/sysconfig/network

NETWORKING=yes

HOSTNAME=night

[root@night~]#

永久修改重启生效。

修改hosts文件

[root@night~]#cat/etc/hosts

127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4

::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6

192.168.100.211night

[root@night~]#ping-c1night//测试

PINGnight(192.168.100.211)56(84)bytesofdata.

64bytesfromnight(192.168.100.211):icmp_seq=1ttl=64time=0.198ms

---nightpingstatistics---

1packetstransmitted,1received,0%packetloss,time0ms

rttmin/avg/max/mdev=0.198/0.198/0.198/0.000ms

[root@night~]#

3、修改默认的yum源

默认情况下是没有下载工具的,现在安装一个linux字符界面下的下载工具wget

[root@night~]#mount/dev/cdrom/media/

mount:blockdevice/dev/sr0iswrite-protected,mountingread-only

[root@night~]#rpm-ivh/media/Packages/wget-1.12-1.8.el6.x86_64.rpm

warning:/media/Packages/wget-1.12-1.8.el6.x86_64.rpm:HeaderV3RSA/SHA1Signature,keyIDc105b9de:NOKEY

Preparing...###########################################[100%]

1:wget###########################################[100%]

[root@night~]#umount/dev/cdrom

[root@night~]#

备份原有的repo文件,下载163repo文件

[root@night~]#wgethttp://mirrors.163.com/.help/CentOS6-Base-163.repo

--2013-10-1811:22:31--http://mirrors.163.com/.help/CentOS6-Base-163.repo

Resolvingmirrors.163.com...123.58.173.106

Connectingtomirrors.163.com|123.58.173.106|:80...connected.

HTTPrequestsent,awaitingresponse...200OK

Length:2006(2.0K)[application/octet-stream]

Savingto:“CentOS6-Base-163.repo”

100%[===========================================================================================>]2,006--.-K/sin0.01s

2013-10-1811:22:32(165KB/s)-“CentOS6-Base-163.repo”saved[2006/2006]

[root@night~]#ls

anaconda-ks.cfgCentOS6-Base-163.repoinstall.loginstall.log.syslog

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

[root@nightyum.repos.d]#ls

CentOS-Base.repoCentOS-Debuginfo.repoCentOS-Media.repoCentOS-Vault.repo

[root@nightyum.repos.d]#mvCentOS-Base.repoCentOS-Base.repo.bak

[root@nightyum.repos.d]#mv/root/CentOS6-Base-163.repo./

[root@nightyum.repos.d]#ls

CentOS6-Base-163.repoCentOS-Base.repo.bakCentOS-Debuginfo.repoCentOS-Media.repoCentOS-Vault.repo

[root@nightyum.repos.d]#

生成yum缓存

[root@night~]#yumcleanall

Loadedplugins:fastestmirror

Cleaningrepos:baseextrasupdates

CleaningupEverything

Cleaninguplistoffastestmirrors

[root@night~]#yummakecache

Loadedplugins:fastestmirror

Determiningfastestmirrors

base|3.7kB00:00

base/group_gz|212kB00:02

base/filelists_db|5.9MB00:19

base/primary_db|4.4MB00:25

base/other_db|2.7MB00:06

extras|3.4kB00:00

extras/filelists_db|10kB00:01

extras/prestodelta|905B00:00

extras/primary_db|18kB00:01

extras/other_db|5.7kB00:00

updates|3.4kB00:00

updates/filelists_db|4.3MB00:14

updates/prestodelta|1.0MB00:10

updates/primary_db|5.0MB00:21

updates/other_db|720kB00:01

MetadataCacheCreated

[root@night~]#

4、安装必备的软件,并且更新系统的软件。

默认情况下只安装了EmailServer这个软件包组。这个时候可以安装一些必备的软件,删除一些不必要的软件。

[root@night~]#yumgrouplist

Loadedplugins:fastestmirror,security

SettingupGroupProcess

Loadingmirrorspeedsfromcachedhostfile

InstalledGroups:

AdditionalDevelopment//额外的开发

Base//基础

DesktopPlatformDevelopment//桌面平台开发

Developmenttools//开发工具

E-mailserver//邮件服务(不用邮件服务可以关掉25端口,但是最好不要删除)

GeneralPurposeDesktop//通用桌面

Hardwaremonitoringutilities//硬件监控实用工具

LegacyUNIXcompatibility//老的UNIX兼容

LegacyXWindowSystemcompatibility//传统的xwindow系统兼容

NetworkingTools//网络工具

PerformanceTools//性能工具

PerlSupport//perl支持

InstalledLanguageGroups:

ChineseSupport[zh]

更新系统

[root@night~]#yumupgrade

5、关闭SElinux,关闭不必要的服务(优化系统启动服务)

临时关闭SElinux

[root@night~]#getenforce

Enforcing//严格模式

[root@night~]#setenforce0

[root@night~]#getenforce

Permissive//只报警,但是不做处理

[root@night~]#

临时关闭启动系统失效。

永久关闭SElinux

[root@night~]#cat/etc/sysconfig/selinux

#ThisfilecontrolsthestateofSELinuxonthesystem.

#SELINUX=cantakeoneofthesethreevalues:

#enforcing-SELinuxsecuritypolicyisenforced.

#permissive-SELinuxprintswarningsinsteadofenforcing.

#disabled-NoSELinuxpolicyisloaded.

SELINUX=disabled//彻底关闭SElinux

#SELINUXTYPE=cantakeoneofthesetwovalues:

#targeted-Targetedprocessesareprotected,

#mls-MultiLevelSecurityprotection.

SELINUXTYPE=targeted//SElinux使用的策略集

[root@night~]#

永久关闭需要重新启动系统。

调整开机自启动服务的脚本内容如下:

[root@nightscript]#catser.sh

#!/bin/bash

##setsystembootservices

#setsystemlanguage

LANG=en

#setservicesoff

forvarin$(/sbin/chkconfig--list|/bin/grep3:on|/bin/awk'{print$1}')

do

/sbin/chkconfig--level3$varoff;

done

#setserviceson

forvarincrondsshdnetworkrsyslogiptablesirqbalance

do

/sbin/chkconfig--level3$varon;

done

[root@nightscript]#

提示:irqbalance能合理的调整cpu各个核心的平均负载。iptables一般都可以关闭。

6、关闭IPv6

查看IPv6的模块是否被加载

[root@night~]#lsmod|grepip

ipt_REJECT23512

nf_conntrack_ipv495062

nf_defrag_ipv414831nf_conntrack_ipv4

iptable_filter27931

ip_tables178311iptable_filter

ip6t_REJECT46282

nf_conntrack_ipv687482

nf_defrag_ipv6111821nf_conntrack_ipv6

nf_conntrack793573nf_conntrack_ipv4,nf_conntrack_ipv6,xt_state

ip6table_filter28891

ip6_tables194581ip6table_filter

ipv632142215ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6

[root@night~]#

关闭IPv6

[root@night~]#cat/etc/sysconfig/network

NETWORKING=yes

HOSTNAME=night

NETWORKING_IPV6=no

[root@night~]#tail-2/etc/modprobe.d/dist.conf

aliasnet-pf-10off

aliasipv6off

[root@night~]#

重启生效。

7、调整启动级别,设置文本界面启动。

[root@night~]#grepid:3/etc/inittab

id:3:initdefault:

[root@night~]#

8、关闭ctrl+alt+del

[root@night~]#tail-3/etc/init/control-alt-delete.conf

#startoncontrol-alt-delete

#exec/sbin/shutdown-rnow"Control-Alt-Deletepressed"

[root@night~]#

9、关闭多余的tty

[root@night~]#grep"1-2"/etc/init/start-ttys.conf

envACTIVE_CONSOLES=/dev/tty[1-2]

[root@night~]#grep"1-2"/etc/sysconfig/init

ACTIVE_CONSOLES=/dev/tty[1-2]

[root@night~]#

CentOS5.x系统中步骤8和步骤9可以在/etc/inittab中完成。

10、修改默认登录信息,不显示内核信息

[root@night~]#cat/etc/issue

welcometoserver!

[root@night~]#cat/etc/issue.net

welcometoserver!

[root@night~]#cat/etc/motd

welcometoserver!

[root@night~]#

11、设置时间同步的定时任务

[root@night~]#catscript/syncdate.sh

#!/bin/bash

#syncdate

/usr/sbin/ntpdatetime.nist.gov

[root@night~]#crontab-l

#syncdate

*/10****/bin/sh/root/script/syncdate.sh>/dev/null2>&1

[root@night~]#

12、适当的调整shell命令的history记录个数

[root@night~]#grep-i"300"/etc/profile

HISTSIZE=300

[root@night~]#

默认是1000,我这里修改为300.这个看情况而定。

13、关闭文件系统的atime时间。以提升磁盘的I/O性能。

[root@night~]#tail-1/etc/fstab

/dev/sda5/appext4defaults,noatime,nodiratime00

[root@night~]#chattr-R+A/app/

[root@night~]#mount|grep/app

/dev/sda5on/apptypeext4(rw,noatime,nodiratime)

[root@night~]#lsattr/app/

-------A-------/app/lost+found

-------A-----e-/app/aa

-------A-----e-/app/bb

[root@night~]#

这里是两种不同方法,一种是通过设置隐藏属性,一种是通过文件系统挂载命令mount的功能实现。适合用在大访问量的分区。

14、调整内核参数

[root@night~]#tail-12/etc/sysctl.conf

##bythinkdba

net.ipv4.tcp_syncookies=1#开启SYNcookies。当出现SYN等待队列溢出的时候,启用cookies来处理,可防范少量的SYN***

net.ipv4.tcp_fin_timeout=30#表示如果套接字由本段要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间

net.ipv4.tcp_keepalive_time=1200#表示当keepalive启用的时候,TCP发送keepalive消息的频度。默认是2小时,这里改为20分钟

net.ipv4.tcp_tw_reuse=1#表示开启重用,允许将TIME-WAIT套接字重新用于新的TCP连接

net.ipv4.tcp_tw_recycle=1#表示开启TCP连接中TIME-WAIT套接字的快速回收

net.ipv4.ip_local_port_range=102465000#表示向外连接的端口的范围

net.ipv4.tcp_max_syn_backlog=8192#表示SYN队列的长度,加大队列的长度,可以容纳更多等待连接的网络链接数

net.ipv4.tcp_max_tw_buckets=5000#表示系统同时保持TIME-WAIT套接字的最大数量,如果超过这个数字,TIME-WAIT套接字将立刻被清除并打印警告信息

net.ipv4.conf.all.rp_filter=1#打开方向路由过滤功能,防止IP地址欺骗

net.ipv4.tcp_max_syn_backlog=4096#限定SYN队列的长度

net.ipv4.ip_forward=0#禁止ip转发功能

[root@night~]#

[root@night~]#sysctl–p#立即生效

15、加大服务器的文件描述符

linux下面部署应用的时候,有时候会遇上Socket/FileCan’topensomanyfiles这样的问题,这个值会影响服务器的最大并发数。其实linux是有文件句柄限制的,但默认不是很高,一般都是1024,生产服务器很容易会达到这个值,所以需要改动此值。

[root@night~]#egrep-v"^$|^#"/etc/security/limits.conf

*softnofile60000

*hardnofile65535

[root@night~]#

注销之后查看

[root@night~]#ulimit-n

60000

[root@night~]#

重启后也生效

ulimit的其他一些用法可以参考manual文档。

[root@night~]#ulimit-a

corefilesize(blocks,-c)0

datasegsize(kbytes,-d)unlimited

schedulingpriority(-e)0

filesize(blocks,-f)unlimited

pendingsignals(-i)7818

maxlockedmemory(kbytes,-l)64

maxmemorysize(kbytes,-m)unlimited

openfiles(-n)60000//同时打开的文件数量

pipesize(512bytes,-p)8

POSIXmessagequeues(bytes,-q)819200

real-timepriority(-r)0

stacksize(kbytes,-s)10240//堆栈大小

cputime(seconds,-t)unlimited

maxuserprocesses(-u)7818//单一用户的最大进程数

virtualmemory(kbytes,-v)unlimited//可以使用的最大虚拟内存

filelocks(-x)unlimited

[root@night~]#

16、添加一个普通用户

[root@night~]#passwdthinkdba

Changingpasswordforuserthinkdba.

Newpassword:

BADPASSWORD:itisbasedonadictionaryword

Retypenewpassword:

passwd:allauthenticationtokensupdatedsuccessfully.

[root@night~]#

在一般的使用过程中,我们尽量使用普通用户。

17、使用sudo给账户适当的权限

[root@night~]#grep"thinkdba"/etc/sudoers

thinkdbaALL=(ALL)NOPASSWD:ALL

[root@night~]#

thinkdba”这个账户可以让管理员平时用来维护系统。可以让thinkdba在不知道root密码的情况下,切换到root用户。还可以添加其他的帐号,分配相应功能的权限。

18、禁止root用户远程登录

[root@night~]#egrep-v'^$|^#'/etc/ssh/sshd_config

Port22//默认的端口号,我这里是测试环境,就不修改了

Protocol2

SyslogFacilityAUTHPRIV

PermitRootLoginno//允许root登录,默认是yes,这里改为no,不允许root登录

PasswordAuthenticationyes

ChallengeResponseAuthenticationno

GSSAPIAuthenticationyes

GSSAPICleanupCredentialsyes

UsePAMyes

AcceptEnvLANGLC_CTYPELC_NUMERICLC_TIMELC_COLLATELC_MONETARYLC_MESSAGES

AcceptEnvLC_PAPERLC_NAMELC_ADDRESSLC_TELEPHONELC_MEASUREMENT

AcceptEnvLC_IDENTIFICATIONLC_ALLLANGUAGE

AcceptEnvXMODIFIERS

X11Forwardingyes

PrintMotdno//打印欢迎信息,默认是yes,改为no

PrintLastLogno//打印最后一次的登录信息,默认是yes,我改为no

Subsystemsftp/usr/libexec/openssh/sftp-server

[root@night~]#

这里只是一些基础的ssh服务的优化。

19、锁定日志文件

[root@night~]#chattr+a/var/log/messages//锁定日志文件,只允许添加,不允许修改

[root@night~]#chattr+a/var/log/secure

[root@night~]#chattr+a/var/log/cron

[root@night~]#chattr+a/var/log/spooler

[root@night~]#chattr+a/var/log/maillog

[root@nightlog]#cat/etc/logrotate.d/syslog

/var/log/cron

/var/log/maillog

/var/log/messages

/var/log/secure

/var/log/spooler

{

prerotate//轮询前

/usr/bin/chattr-a/var/log/messages

/usr/bin/chattr-a/var/log/cron

/usr/bin/chattr-a/var/log/secure

/usr/bin/chattr-a/var/log/maillog

/usr/bin/chattr-a/var/log/spooler

endscript

postrotate//轮询后

/bin/kill-HUP`cat/var/run/syslogd.pid2>/dev/null`2>/dev/null||true

/usr/bin/chattr+a/var/log/messages

/usr/bin/chattr+a/var/log/cron

/usr/bin/chattr+a/var/log/secure

/usr/bin/chattr+a/var/log/maillog

/usr/bin/chattr+a/var/log/spooler

endscript

}

[root@nightlog]#

测试:

[root@nightlog]#logrotate-fv/etc/logrotate.conf//强制轮询

[root@nightlog]#logrotate-d/etc/logrotate.conf//debug模式

20、设置linux控制台自动注销

[root@night~]#tail-1/etc/profile

exportTMOUT=120

[root@night~]#

补充:如果安装了sendmail并且关闭了sendmail服务的话,定时清理/var/spool/clientmqueue,否则磁盘的inode会被占满。CentOS6.x默认安装的是postfix,没有安装sendmail