Linux安裝後基本系統優化

一、配置yum源

1、添加普通用戶,使用普通用戶su - root 登陸到root
2、設置更新源
Linux下方便安裝軟件的優秀工具叫做yum工具,linux的二進制軟件包一般是rpm包,類似windows下的exe程序。
通過yum工具安裝軟件,默認獲取rpm包的軟件配置是從國外centos官方源下載。
因此,我們yum安裝軟件速度會比較慢,因此需要把默認獲取rpm包的配置從國外官方源改爲國內。
centos 5.8 64位yum 源
http://mirrors.sohu.com/help/CentOS-Base-sohu.repo
centos 6.4 64位yum源
http://mirrors.163.com/.help/CentOS6-Base-163.repo

cd /etc/yum.repos.d/ //進入yum源
/bin/mv CentOS-Base.repo CentOS-Base.repo.ori //備份yum源
wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo //下載soho源
/bin/mv CentOS-Base-sohu.repo CentOS-Base.repo

說明:我們現在使用的是互聯網上的門戶網站提供的yum源,將來我們也可以把iso鏡像或光盤配置成yum源,你還可以自己配置一個像門戶網站提供的這種yum源
配置公網yum源及製作rpm包。
http://dreamway.blog.51cto.com/1281816/1110874 你們的師兄


3、使用yum upgrade 相當於windows下的打補丁,這個功能就用到了yum源,速度會比較快

4、安裝必要的軟件包
yum -y install lrzsz
一、關閉selinux
由於安裝服務、軟件中,經常和selinux衝突,在國內生產環境中,都是關掉selinux。
vi /etc/selinux/config //配置文件
默認是 enforcing啓用狀態
disabled是完全關閉狀態
permissive是打印警告,selinu不生效
這種修改只能重啓生效

gentenforce 0 臨時關閉selinux,使用gentenforce查看當前selinux狀態

二、設定runlevel 3
runlevel 查看當前系統運行級別
vi /etc/inittab //運行級別配置文件

三、精簡開機啓動服務
1、可以使用setup-system services 裏面調整,這樣調整起來效率低
2、或者ntsysv調出來
3、使用腳本一件關閉
#LANG=en

#顯示出所有服務的所有運行級別的啓動狀態

chkconfig --list

#停止所有在運行級別3上開機啓動的服務

for oldboy in `chkconfig --list|grep3:on |awk '{print $1}'`;do chkconfig --level 3 $oldboyoff;done

#在開啓常用的服務,crond,network,rsyslog,sshd

for oldboy in crond network rsyslogsshd;do chkconfig --level 3 $oldboy on;done

#顯示出所有3運行級別下的所有服務(根據需求決定哪個服務啓動)

chkconfig --list |grep3:on

剛裝完的操作系統,只需要開啓幾個服務,剩下的以後用到再開,這樣安全,遵循最小化原則,沒用的不啓動。
crond 定時任務
network 網絡服務
sshd 遠程服務
syslog 日誌服務


四、配置sudo授權管理
爲什麼使用sudo,如果普通用戶使用su - root切換到管理員。進行非法操作,比如passwd root 修改root密碼。那麼系統其他用戶將無法訪問系統。這個普通管理員說白了,已經”功高蓋主“
1、在root權限下執行visudo 在98行修改。命令使用逗號隔開,使用全路徑。
# user MACHINE= COMMANDS
root ALL =(ALL) ALL
用戶 機器=(授權哪個角色的權限) /usr/sbin/useradd,/usr/sbin/passwd

如果不授權,默認是不能執行useradd命令的
#su - liuyalei //切換到普通用戶liuyalei$sudo /usr/sbin/useradd test //創建test用戶,注意,前面要加上sudo,打個比方就是一把鑰匙開一把鎖。第一次執行sudo需要輸入普通用戶密碼,防止被非法利用。下次5分鐘內不需要輸入密碼

如果你是運維經理,帶一個小弟,不會吧整個root的權限都給他,只給他一些普通權限。目的:既能讓菜的運維幹活,又不能威脅系統安全
如果你是小弟,你的運維經歷要把自己的賬戶提升成root,那麼直接複製,把root改成經理賬號即可。下次經理直接使用sudo su - root 就能切到root權限下
boss ALL =(ALL) ALL

這樣做,boss既有了root權限還不知道root的密碼,但是每次切到root,都要輸入boss普通用戶密碼,太繁瑣了,可以在visudo中改成如下,這樣就不用輸入密碼了,但是不安全。
boss ALL =(ALL) NOPASSWD: ALL


su命令總結
普通用戶切換到root,使用su - 或者su - root 需要輸入root密碼
超級用戶切換到普通用戶不需要密碼。但是centos5.8會有環境變量問題,需要給普通用戶修改環境變量

su優點是給管理服務器帶來方便,但是他的缺點就是大家都知道root的密碼,而且還能改掉root的密碼。在一定程度上,對服務器帶來了很大的安全隱患。在工作用幾乎有一半的問題來自於內部。

五、ssh服務優化
linux默認管理員root,port端口號是22,爲了安全,我們要改掉默認的管理員和端口
配置文件/etc/ssh/sshd_config

[root@oldboy ~]# vi /etc/ssh/sshd_config添加如下內容保存。

####byoldboy#2011-11-24##

52113#→ssh連接默認的端口,誰都知道,必須要改。

PermitRootLogin no#→root用戶***都知道的,禁止它遠程登陸。

PermitEmptyPasswords no #→禁止空密碼登陸

UseDNSno#→不使用DNS

GSSAPIAuthentication no

####byoldboy#2011-11-24##

重啓sshd服務 #/etc/init.d/sshd restart
注意:yum,rpm安裝的軟件,啓動程序一般都在/etc/init.d

六、修改linux默認字符集
[root@eric6 ~]# cat /etc/sysconfig/i18n //查看linux默認的字符集,默認是UTF-8
LANG="zh_CN.UTF-8"
cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori //備份默認字符集
echo 'LANG="ZH_CN.GB18030"' >/etc/sysconfig/i18n //修改字符集爲GB18030

什麼是字符集?
簡單的說就是一套文字符號及其編碼。常用的字符集有:
GBK 定長 雙字節 不是國際標準,支持的系統不少
UTF-8 非定長 1-4字節 廣泛支持,MYSQL也使用UTF-8
這個不一定要修改,有的公司使用的就是UTF-8,因爲linux對中文支持不好

七、服務器時間同步
如果時間不同步,經常帶來業務不正常。如果公司規模小,可以使用聯網手動同步,如果服務器多,可以在公司內部搭建ntp server。還有一種可能是公司服務器不出外網,比如內部數據庫服務器。可以在內網搭建兩臺時間服務器,因爲一臺可能down掉,搭建兩臺可以做到冗餘的目的(50臺-100臺以上在用)。

100813978.jpg

手動同步方法:
/sbin/ntpdate time.nist.gov //必須要聯網
/usr/sbin/ntpdate time.nist.gov //6.4在/usr/sbin下


自動同步方法(每五分鐘同步一次):
echo '#time sync by oldboy at 2010-2-1' >>/var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1' >>/var/spool/cron/root

八、加大服務器文件描述符
最簡單的說,在unix/liux裏面,你的服務只要開啓一個進程,就要佔用文件描述符的。liunx默認是1024,如果描述符少了,你的訪問量多了,你的服務器支撐不了,所以要把描述符加大。
#echo '* - nofile 65535 ' >>/etc/security/limits.conf
#ulimit -n //查看當前文件描述符數量
有的時候,你的服務器硬盤/內存沒那麼大,如果文件描述符過大,訪問量過來,有可能把服務器搞垮。但是網友們通常都改成65535

九、清理clientmqueue垃圾文件防止inode被佔滿
#find /var/spool/clientmqueue/ -type -f |xargs rm -f

十、調整內核優化
所謂內核優化,主要是在linux中針對業務服務應用而進行的系統內核參數優化,優化並無特殊的標準,下面以常見生產環境linux的內核優化爲例講解,僅供大家參考:
內核調優

#vi /etc/sysctl.cof


net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#以下參數是對iptables防火牆的優化,防火牆不開會提示,可以忽略不理。
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120







[root@eric6 ~]#
sysctl -p //使配置文件生效
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
error: "net.ipv4.ip_conntrack_max" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_max" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_established" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait" is an unknown key
error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait" is an unknown key //防火牆未開啓報錯,不用管,5.8的話,不會報錯


centos 6.4 安裝軟件包:

軟件自定義-基本

性能工具

調試工具

兼容程序庫

開發工具

服務器----系統管理工具

系統管理---snmp/系統管理

優化總結

01)添加普通用戶,通過sudo授權管理
02)定時自動更新服務器時間
03)配置yum更新源
04)關閉selinux和iptables
05)調整文件描述符數量
06)定時自動清理/var/spool/clientmquene/目錄垃圾文件,防止inodes節點被佔滿
07)精簡開機自動啓動服務(sshd,crond,network,syslog)
08)內核參數優化/etc/sysctl.config,sysctl -p 生效
09)更改默認ssh服務端口,及禁止root用戶遠程登陸
10)更改字符集,支持中文
11)鎖定關鍵系統文件
chattr +i /etc/passwd
chattr +i /etc/inittab
chattr +i /etc/group
chattr +i /etc/shadow
chattr +i /etc/gshadow
12)清空/etc/issue,去除系統及內核版本登陸前的屏幕顯示
13)更改系統登錄後的信息 /etc/motd



j_0036.gif以上是基礎的linux調優


本文出自 “劉亞磊” 博客,請務必保留此出處http://liuyalei.blog.51cto.com/7767729/1285545


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章