CentOS6.4x86_64最小化安裝---基礎優化總結
目錄
1、默認情況下最小化安裝網卡是不啓動的,首先就是調整網絡的配置。...1
5、關閉SElinux,關閉不必要的服務(優化系統啓動服務)...3
12、適當的調整shell命令的history記錄個數...6
13、關閉文件系統的atime時間。以提升磁盤的I/O性能。...6
服務器使用的一個原則:系統的安裝包越少越好,這樣的機器纔會更加穩定。
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文件,下載163的repo文件
[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/
[[email protected]]#ls
CentOS-Base.repoCentOS-Debuginfo.repoCentOS-Media.repoCentOS-Vault.repo
[[email protected]]#mvCentOS-Base.repoCentOS-Base.repo.bak
[[email protected]]#mv/root/CentOS6-Base-163.repo./
[[email protected]]#ls
CentOS6-Base-163.repoCentOS-Base.repo.bakCentOS-Debuginfo.repoCentOS-Media.repoCentOS-Vault.repo
生成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/File:Can’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。