安装linux系统后的基础优化

1、安装系统后的基础优化


[hadoop@hadoop ~]$ cat /etc/centos-release 查看系统版本
CentOS release 6.6 (Final)


[hadoop@hadoop ~]$ uname -r   内核版本
2.6.32-504.1.3.el6.x86_64
[hadoop@hadoop ~]$ uname -m 64位
x86_64


2、添加一个普通账号
[root@hadoop ~]# useradd hdfs
useradd: cannot open /etc/passwd
[root@hadoop ~]# chattr -i /etc/passwd 添加用户系列文件被锁定
[root@hadoop ~]# useradd hdfs         
useradd: cannot open /etc/shadow
[root@hadoop ~]# chattr -i /etc/shadow
[root@hadoop ~]# useradd hdfs         
useradd: cannot open /etc/group
[root@hadoop ~]# chattr -i /etc/group
[root@hadoop ~]# useradd hdfs   添加用户


[root@hadoop ~]# id hdfs 检查是否添加成功
uid=505(hdfs) gid=505(hdfs) 组=505(hdfs)


[root@hadoop ~]# passwd hdfs 给hdfs设置密码


[root@hadoop ~]# echo "hadoop"|passwd --stdin hdfs 直接通过echo给用户设置密码,可以批量给用户设置密码


[root@hadoop ~]# su - hdfs 带着用户配置过去[环境变量等] [su和su -区别]


[hdfs@hadoop ~]$ whoami 查看当前用户
hdfs


3、 使用更新源的国内镜像
http://mirrors.163.com/centos/
http://mirrors.sohu.com/


[root@hadoop yum.repos.d]# cd /etc/yum.repos.d/
[root@hadoop yum.repos.d]# cat CentOS-Base.repo
[root@hadoop yum.repos.d]# wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo 下载sohu提供的yum源文件


[root@hadoop yum.repos.d]# cp CentOS-Base.repo CentOS-Base.repo.ori 备份原文件
[root@hadoop yum.repos.d]# mv CentOS-Base-sohu.repo CentOS-Base.repo 覆盖源yum文件,sohu用不了只支持4,5版本


[root@hadoop yum.repos.d]# route -n  查看网关


[root@hadoop yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo   163的yum源,CentOS6文件[支持6.x版本]
[root@hadoop yum.repos.d]# /bin/mv CentOS6-Base-163.repo CentOS-Base.repo 修改默认yum源为国内源
[root@hadoop yum.repos.d]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* 导入key


[root@hadoop yum.repos.d]# yum clean all  清理缓存
[root@hadoop yum.repos.d]# yum makecache


[root@hadoop yum.repos.d]# yum install lrzsz stysstat -y   安装软件测试一下国内安装源效率。比较工具和性能测试工具
[root@hadoop yum.repos.d]# rpm -qa lrzsz sysstat 验证安装是否成功
sysstat-9.0.4-27.el6.x86_64
lrzsz-0.12.20-27.1.el6.x86_64
[root@hadoop yum.repos.d]# rpm -qa | grep screen                                查看安装包
gnome-screensaver-2.28.3-28.el6.x86_64


[root@hadoop yum.repos.d]# yum upgrade 更新软件


4、常用包组安装
[root@hadoop yum.repos.d]# yum grouplist      查看已经安装的组


[root@hadoop yum.repos.d]# yum groupinstall "Base" -y  如果一些包组没有安装,可以包组安装,或者当个安装


5、安装后的基本调优及安全设置
a、简单优化linux
(1)关闭Selinux
[root@hadoop yum.repos.d]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etclinux/config   修改配置文件永久生效,得重启


[root@hadoop yum.repos.d]# grep SELINUX=disabled /etclinux/config                            验证修改是否成功
SELINUX=disabled


[root@hadoop yum.repos.d]# setenforce 0 零时生效
[root@hadoop yum.repos.d]# getenforce               查看当前selinux的状态
Disabled


(2)设定runlevel为3
[root@hadoop yum.repos.d]# grep 3:initdefault /etc/inittab    检查系统当前启动级别
id:3:initdefault:


(3)精简开机系统启动的服务
[root@hadoop yum.repos.d]# setup 方法1
[root@hadoop yum.repos.d]# ntsysv 方法2
[root@hadoop ~]# chkconfig --list|grep 3:on 查看开机自启动服务
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
httpd           0:off   1:off   2:off   3:on    4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:off   3:on    4:off   5:off   6:off


[root@hadoop ~]# chkconfig --list sshd
sshd            0:off   1:off   2:off   3:on    4:off   5:off   6:off
[root@hadoop ~]# chkconfig sshd off 关闭当个服务的命令


写脚本关闭多个服务:
[root@hadoop ~]# chkconfig --list|grep 3:on | cut -d " " -f1    取出所有服务名称
crond
httpd
network
ntpd
rsyslog
sshd
[root@hadoop ~]# for name in `chkconfig --list|grep 3:on | cut -d " " -f1` ;do chkconfig $name off;done  关闭所有3级别运行的软件
[root@hadoop ~]# chkconfig --list|grep 3:on


开启多个服务:
crond,httpd,network,ntpd,rsyslog,sshd
[root@hadoop ~]# for name in crond httpd network ntpd rsyslog sshd;do chkconfig $name on;done
[root@hadoop ~]# chkconfig --list | grep 3:on 验证


(4)零时关闭iptables防火墙
[root@hadoop ~]# iptables -L -n 查看防火墙状态
[root@hadoop ~]# /etc/init.d/iptables stop   


注:一般有外网ip的服务器需要开启防火墙,但是高并发业务不能开,只能在前端加硬件防火墙。


6、更改ssh登陆配置
windows默认远程端口:3389
linux默认远程端口:22


[hadoop@hadoop ssh]$ cd /etc/ssh/
[hadoop@hadoop ssh]$ cp sshd_config sshd_config.ori
[hadoop@hadoop ssh]$ sudo vim sshd_config
Port 52113           
        PermitRootLogin no
        PermitEmptyPasswords no
        UseDNS no              
        #itweet 2014-12-8
    
    [hadoop@hadoop ssh]$ vimdiff sshd_config sshd_config.ori   修改文件后和源文件比较。


    [hadoop@hadoop ssh]$ sudo /etc/init.d/sshd restart 修改配置文件重启


    [hadoop@hadoop ssh]$ sudo netstat -lntup|grep ssh           查看端口是否改变
tcp        0      0 0.0.0.0:52113               0.0.0.0:*                   LISTEN      2445/sshd           
tcp        0      0 :::52113                    :::*                        LISTEN      2445/sshd           


[hadoop@hadoop ssh]$ sudo lsof -i :52113 反查
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1194   root    3u  IPv4   9909      0t0  TCP hadoop:52113->192.168.2.104:53123 (ESTABLISHED)
sshd    1197 hadoop    3u  IPv4   9909      0t0  TCP hadoop:52113->192.168.2.104:53123 (ESTABLISHED)
sshd    2445   root    3u  IPv4  18277      0t0  TCP *:52113 (LISTEN)
sshd    2445   root    4u  IPv6  18279      0t0  TCP *:52113 (LISTEN)


[hadoop@hadoop ssh]$ sudo netstat -an|grep -i est 查看有哪些会话保持连接
Active Internet connections (servers and established)
tcp        0      0 192.168.2.124:52113         192.168.2.104:53123         ESTABLISHED 


7、 将普通账号加入到sudo管理
[root@hadoop ~]# LANG=en
[root@hadoop ~]# visudo   把用户添加到sudo管理,80gg到达80行
#user[用户或者组]     MACHINE[所有主机]=[切换到什么角色] COMMANDS[可以干什么事,即命令]
root    ALL=(ALL)       ALL
leader  ALL=(ALL)       ALL 拥有所有权限
hadoop  ALL=(ALL)       NOPASSWD: ALL 免密码执行root权限命令
#hadoop ALL=(ALL)       /usr/sbin/useradd,/usr/sbin/userdel   限制执行命令


[root@hadoop ~]# vi /etc/sudoers 这样也可以把用户sudo管理起来
:set nu 显示行号


[hadoop@hadoop ~]$ mkdir /aaa 使用hadoop创建文件提示权限不够
mkdir: cannot create directory `/aaa': Permission denied


[hadoop@hadoop ~]$ sudo mkdir /aaa 使用root权限执行命令,创建完成后该文件为root所有


[hadoop@hadoop ~]$ sudo /usr/sbin/useradd dnn 不提示输入密码直接创建用户,sudo以root身份执行命名
[hadoop@hadoop ~]$ id dnn
uid=506(dnn) gid=506(dnn) groups=506(dnn)


[hadoop@hadoop ~]$ sudo /usr/sbin/userdel dnn 删除用户
[hadoop@hadoop ~]$ id dnn
id: dnn: No such user


[hadoop@hadoop ~]$ sudo su - 切入root用户,免密码


[hadoop@hadoop ~]$ sudo -l 查看当前用户拥有那些sudo权限


8、普通用户环境变量问题
[hadoop@hadoop ~]$ vi /etc/profile   全局环境变量
[hadoop@hadoop ~]$ echo $PATH   


[hadoop@hadoop ~]$ vi .bash_profile 当前用户环境变量
[hadoop@hadoop ~]$ . .bash_profile 


9、字符编码乱码
[hadoop@hadoop ~]$ LANG=en
[hadoop@hadoop ~]$ LANG="zh_CN.GB18030" 当前窗口有效
[hadoop@hadoop ~]$ export LANG="zh_CN.GB18030"


[hadoop@hadoop ~]$ cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori   备份
[hadoop@hadoop ~]$ sudo vi /etc/sysconfig/i18n 添加LANG="zh_CN.GB18030"或者LANG="zh_CN.UTF-8",相应CRT客户端也要修改




[root@hadoop ~]# echo 'LANG="zh_CN.GB18030"' > /etc/sysconfig/i18n 修改配置文件,CRT修改字符编码为UTF-8


[hadoop@hadoop ~]$ . /etc/sysconfig/i18n 验证
[hadoop@hadoop ~]$ echo $LANG           
zh_CN.GB18030


10、服务器的时间同步
[root@hadoop sbin]# which ntpdate 命令所在路径
/usr/sbin/ntpdate


[root@hadoop sbin]# ntpdate time.nist.gov 同步时间
26 Dec 00:01:32 ntpdate[2540]: the NTP socket is in use, exiting




[root@hadoop sbin]# echo '#time sync by hadoop at 2010-2-1' >> ar/spool/cron/root  
[root@hadoop sbin]# echo '*/5 * * * * ntpdate time.nist.gov > /dev/null 2>&1' >> ar/spool/cron/root    定时执行时间同步


[root@hadoop sbin]# crontab -l 查看定时任务列表
#time sync by hadoop at 2010-2-1
*/5 * * * * ntpdate time.nist.gov > /dev/null 2>&1
#delete files
00 00 * * 6 /bin/sh rver/scripts/del.sh > /dev/null 2>&1


11、增大文件描述符
对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数,增大文件描述符有利于高并发!


[root@hadoop sbin]# ulimit -n 默认文件描述符
1024


[root@hadoop sbin]# echo '* - nofile 65535' >> /etccuritymits.conf   修改文件描述符


[root@hadoop sbin]# tail -1 /etccuritymits.conf   验证
* - nofile 65535


[root@hadoop sbin]# ulimit -n
65535


12、调整内核参数优化
博客:http://oldboy.blog.51cto.com/,http://oldboy.blog.51cto.com/2561410/1184228


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
将上面的内核参数值加入/etc/sysctl.conf文件中,然后执行如下命令使之生效:sysctl -p 


[hadoop@hadoop ~]$ sudo vi /etc/sysctl.conf 
[hadoop@hadoop ~]$ sudo sysctl -p   
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版本。6版本可能稍有不同。


[hadoop@hadoop ~]$ sudo /etc/init.d/iptables start
[hadoop@hadoop ~]$ sudo sysctl -p


13、定时清理邮件的零时目录clienttmqueue
[hadoop@hadoop ~]$ find ar/spool/clientmqueue/ -type f | xargs rm -f 手动清理


[hadoop@hadoop ~]$ ll ar/spool/clientmqueue/|wc -l 检测清理情况
1


[hadoop@hadoop ~]$ rpm -qa sendmail 如果提示没有目录,那么查看sendmail是否安装
[hadoop@hadoop ~]$ sudo yum install sendmail -y 安装sendmail软件


[hadoop@hadoop ~]$ sudo find ar/spool/clientmqueue/ -type f 此时执行命令就没有报目录没有找到提示
[hadoop@hadoop ~]$ sudo find ar/spool/clientmqueue/ -type f | xargs rm -f  手动清理


[hadoop@hadoop ~]$ sudo mkdir rver/scripts/ -p
[hadoop@hadoop scripts]$ vi del.sh   加入内容find ar/spool/clientmqueue/ -type f|xargs rm -f


[hadoop@hadoop scripts]$ sudo chmod u+x del.sh 授予文件执行权限


[root@hadoop ~]# crontab -e 进入定时任务可编辑模式加入内容
#delete files
00 00 * * 6 /bin/sh rver/scripts/del.sh > /dev/null 2>&1


[root@hadoop ~]# crontab -l 查看定时任务
#time sync by hadoop at 2010-2-1
*/5 * * * * ntpdate time.nist.gov > /dev/null 2>&1
#delete files
00 00 * * 6 /bin/sh rver/scripts/del.sh > /dev/null 2>&1


14、给一些重要文件上锁
[root@hadoop ~]# chattr +i /etc/passwd 上锁
[root@hadoop ~]# chattr -i /etc/passwd 解锁


需要锁定文件
[root@hadoop ~]# chattr +i /etc/passwd
[root@hadoop ~]# chattr +i /etc/shadow
[root@hadoop ~]# chattr +i /etc/group
[root@hadoop ~]# chattr +i /etc/shadow
[root@hadoop ~]# chattr +i /etc/inittab 


15、清空/etc/issue ,去除系统及内核版本登陆前的屏幕显示。
[root@hadoop ~]# cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m


[root@hadoop ~]# > /etc/issue   清空里面系统的基本信息,登陆时候显示的版本提示信息!

你可能感兴趣的:(linux)