CentOS7.2最小化安装后系统优化
系统初始化技术的演变
1、sysvinit技术
(1)Linux系统的第一个进程(pid=1)为init:
Linux 操作系统的启动首先从 BIOS 开始,接下来进入 boot loader,由 bootloader 载入内核,进行内核初始化。内核初始化的最后一步就是启动 pid 为 1 的 init 进程。这个进程是系统的第一个进程。它负责产生其他所有用户进程。
(2)init进程是所有进程的祖先,不可以kill(也kill不掉)
init 以守护进程方式存在,是所有其他进程的祖先。init 进程非常独特,能够完成其他进程无法完成的任务。Init 系统能够定义、管理和控制 init 进程的行为。它负责组织和运行许多独立的或相关的始化工作(因此被称为 init 系统),从而让计算机系统进入某种用户预订的运行模式。
(3)大多数linux发行版的init系统是和systemV相兼容的,被称为sysvinit
sysvinit 就是 system V 风格的 init 系统,顾名思义,它源于 System V 系列 UNIX。它提供了比 BSD 风格 init 系统更高的灵活性。是已经风行了几十年的 UNIX init 系统,一直被各类 Linux 发行版所采用。
1.1、sysvinit代表系统
(1)CentOS 5
(2)CentOS 6
1.2、sysvinit系统的优缺点
(1)优点
sysVinit运行非常良好,概念简单清晰,它主要依赖于shell脚本。
(2)缺点
按照一定的顺序执行-->启动太慢、很容易夯(hang)住,fstab与nfs挂载问题
2、upstart技术
说明:CentOS6采用了Upstart技术代替sysvinit进行引导,Upstart对rc.sysinit脚本做了大量的优化,缩短了系统初始化时的启动时间,但是CentOS6为了简便管理员的操作,Upstart的很多特性并没有凸显或者直接不支持,因此在CentOS6中的服务启动脚本还是以原来的sysv的形式提供的,
2.1、upstart的代表系统
(1)CentOS6
(2)Ubuntu14
3、systemd技术
说明:systemd技术的设计目标是克服sysvinit固有的缺点,提高系统的启动速度,和sysvinit兼容,降低迁移成本,
做主要的优点:并行启动
3.1、systemd技术的代表系统
(1)RedHat 7/CentOS 7
(2)Ubuntu 15
4、三种技术运行的对比图
CentOS 7.2系统优化
1、将网卡名称修改为eth0
方法1(在装系统时修改):
在安装系统的时候配置,修改内核选项:net.ifnames=0 biosdevname=0
方法2(装系统时忘记修改,装系统后修改):
(1)编辑网卡
# cd /etc/sysconfig/network-scripts/
# mv ifcfg-ens160 ifcfg-eth0
# mv ifcfg-ens192 ifcfg-eth1
# vim ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0 #网卡名称改为eth0
DEVICE=eth0 #设备名称改为eth0
ONBOOT=yes
IPADDR=xxx.xxx.x.xx
PREFIX=
GATEWAY=xxx.xxx.x.x
DNS1=xxx.xxx.x.x
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no
注:删掉网卡内的UUID=176582f7-d198-4e4f-aab0-34ab10d17247 通用唯一识别码和HWADDR=:0c::a5:3f: MAC地址 这两行。 所有网卡都需要修改
(2)编辑grub文件
[root@localhost network-scripts]# cp -a /etc/sysconfig/grub /etc/sysconfig/grub.bak #备份文件
[root@localhost network-scripts]# vim /etc/sysconfig/grub
GRUB_TIMEOUT=
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto net.ifnames=0 biosdevname=0 rhgb quiet" #这行添加net.ifnames= biosdevname=
GRUB_DISABLE_RECOVERY="true"
(3)生成启动菜单
[root@localhost network-scripts]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.-.el7.x86_64
Found initrd image: /boot/initramfs-3.10.-.el7.x86_64.img
Found linux image: /boot/vmlinuz--rescue-7d9a96ac2162427d937e06ede5350e9e
Found initrd image: /boot/initramfs--rescue-7d9a96ac2162427d937e06ede5350e9e.img
done
然后重启服务器:reboot,重启服务器后查看网卡信息,
2、下载必要软件包
再安装操作系统的时候使用的最小化安装,有很多包没有安装,使用时发现好多命令没有如{vim、wget、tree...等},下面就安装命令,可以根据需求自行调整。
yum -y install wget net-tools screen lsof tcpdump nc mtr openssl-devel vim bash-completion lrzsz nmap telnet tree ntpdate iptables-services
3、使用aliyun的repo源
rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
4、给/etc/rc.d.rc.local添加执行权限
需要开机自启动的脚本或者配置,可以放在/etc/rc.local里,但是发现并没有执行,下面我们看一下原因。
# ll /etc/rc.local
lrwxrwxrwx root root Jan : /etc/rc.local -> rc.d/rc.local #发现是个软连接文件
# ls -l /etc/rc.d/rc.local
-rw-r--r-- root root Oct : /etc/rc.d/rc.local #问题在这里,没有执行权限
# chmod +x /etc/rc.d/rc.local #添加执行权限
# ls -l /etc/rc.d/rc.local
-rwxr-xr-x root root Oct : /etc/rc.d/rc.local
注:这样添加在rc.local里的开机自启动配置就可以执行了。
5、修改ssh默认端口及进制root用户远程登陆
linux系统下都有一个默认的超级管理员root,ssh服务的默认端口是22,圈内都知道,那么接下来我们可以修改一下我们的默认端口和禁止root用户远程登录,初步提高一下服务器的安全
、首先修改ssh的默认端口
# sed -i "s#\#Port 22#Port 53226#g" /etc/ssh/sshd_config #端口可以改成1-65535之间任意端口,建议改成较大的端口,因为一万以内的端口常用的服务有占用,防止冲突(需要注意的是:这个端口要记住,否则连接不上服务器)
、禁止root用户远程登陆
a):添加一个普通用户并设置密码(注:这一步必须执行,否则将造成远程连接不上服务器)
# useradd xxx #添加xxx用户
# echo "pass" | passwd --stdin xxx #给xxx用户设置密码为pass
b):修改ssh服务配置文件并撑起服务
# sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# systemctl restart sshd
此时断开当前连接或者新开一个连接就会发现使用root用户连接不上服务器了,莫慌,使用xxx用户连接然后切换到root用户即可
6、关闭selinux
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,说白了就是安全机制,当然如果会配置的话建议配置更好,这里就介绍一下如何关闭吧,哈哈哈。
# sed -i.bak 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config #修改配置文件需要重启服务器配置才会生效,如何立即生效那?
# setenforce #关闭SELinux立即生效,重启服务器后配置失效。
7、关闭防火墙
防火墙,不解释,内网服务建议关掉,对外开放的服务器需要配置规则,这里先关掉,关于防火墙配置规则等待后续更新。
# systemctl stop firewalld #临时关闭
# systemctl disable firewalld #永久关闭
8、修改主机名并设置本地hosts文件
装机后主机名默认为localhost,这里个人想更改自己的主机名,在不搭建内网DNS的情况,能通过主机名找到本机的IP地址。
# hostnamectl set-hostname web01 #设置主机名为web01,这样设置连配置文件里都修改了
# echo "192.168.6.6 web01" >>/etc/hosts #192.168.6.6为本机IP
9、解决ssh远程连接慢的问题
如果是云服务器,这步优化基本都被作了,如果是物理机需要执行此步
# sed -i.bak 's@#UseDNS yes@UseDNS no@g;s@^GSSAPIAuthentication yes@GSSAPIAuthentication no@g' /etc/ssh/sshd_config
# systemctl restart sshd
说明:GSSAPIAuthentication参数是用于Kerberos验证的,而对于绝大多数人来说,不可能使用这种验证机制的,所以要注意把他们停掉。然后重启服务会发现远程连接速度有明显提升
10、设置字符集
设置服务器字符集,国际通用utf-8,根据自身业务来定
# localectl status #查看当前字符集
System Locale: LANG=en_US.UTF-
VC Keymap: us
X11 Layout: us
# localectl set-locale LANG=zh_CN.UTF- #修改字符集为zh_CN.UTF-,命令行和配置文件都生效
# cat /etc/locale.conf #查看配置文件
LANG=zh_CN.UTF-
11、加大打开文件数的限制
CentOS 7.2系统默认最大打开文件限制为1024,每建立一个TCP连接既浪费一个限制(这里不细讲,后续会更新详细说明),为了提升服务器性能,所以我们要增加打开文件的最大限制
# ulimit -n #默认大小 # echo "* soft nofile 65536" >> /etc/security/limits.conf #xi修改最大限制为65535
# echo "* hard nofile 65536" >> /etc/security/limits.conf
12、时间同步
时间同步,这里不多说了,向OpenStack的所有节点的时间不一致会导致创建不了虚拟机,也会有其他的问题,不多说,我们生产上所有服务器时间都是同步的。
# yun install -y ntpdate #前面已经装过了
# ntpdate ntp1.aliyun.com #这里同步的是aliyun的时间,公司内部建议自己搭建时间服务器(减少流量、广播等),然后加入crontab即可,内网时间服务器等待后续更新。
13、开启快速回收
TCP断开连接时会有一个等待时间为2msl(60秒)对应的状态为TIME_WAIT,如果业务并发较大的话会有很多的TIME_WAIT状态(详细等待后续更新),如何来解决那?
# cat /proc/sys/net/ipv4/tcp_timestamps #时间戳,默认是开启的
# cat /proc/sys/net/ipv4/tcp_tw_reuse # 连接复用,tcp_timestamps是开启的状态下是可以开启的,1为开启,默认是关闭的状态。
# cat /proc/sys/net/ipv4/tcp_tw_recycle #socket快速回收,net网络状态下不可以开启,负载均衡上不可以打开,读者根据自身情况开启或关闭,默认为关闭状态。
好了,服务器优化就介绍到这里,以上优化不分先后顺序!!
CentOS7.2最小化安装后系统优化的更多相关文章
- CentOS 6,7最小化安装后再安装图形界面
CentOS 6.2最小化安装后再安装图形界面 在安装CentOS 6.2时发现它没有提示我要怎么安装,而是“自作主张”地给我选择了最小化安装,结果装完之后只有终端界面,因为有时候不得不用图形界面,所 ...
- Centos7VMware虚拟机最小化安装后,安装Tenda U12 USB无线网卡驱动
前几天买下了Tenda U12 USB 无线网卡 ,想连接上无线玩玩,可惜买下折腾了一周才解决他它驱动问题,前后在VMware上装了十多次,测试了好几个内核版本才搞定,好了废话不多说,分享下我安装过程 ...
- Linux_总结_02_最小化安装后需要安装和更新的命令
一.前言 二.安装命令 1.配置yum源 2.更新yum sudo yum -y update 3.安装ifconfig 最小化安装后,是无法使用ifconfig命令的. 可参见:CentOS7下解决 ...
- 【深入学习linux】CentOS 7 最小化安装后的注意事项及一些必备组件的安装
转载:https://blog.csdn.net/F_Srion/article/details/54910943 在VM虚拟机中安装CentOS 7 时 有时候顾虑到电脑硬件性能,我们需要最小化安装 ...
- CentOS 7 最小化安装后的注意事项
http://blog.csdn.net/f_srion/article/details/54910943 在VM虚拟机中安装CentOS 7 时 有时候顾虑到电脑硬件性能,我们需要最小化安装,而最小 ...
- 生产服务器环境最小化安装后 Centos 6.5优化配置[转]
内容目录 centos6.5最小化安装后配置网络: IP地址, 网关, 主机名, DNS 更新系统源并且升级系统 系统时间更新和设定定时任 创建普通用户并进行sudo授权管理 修改SSH端口号和屏蔽r ...
- CentOS-6.5-x86_64 最小化安装后,怎样安装 man 程序?
CentOS-6.5-x86_64 最小化安装后.怎样安装man 程序? CentOS-6.5-x86_64 最小化安装后,没有man 程序,没它还真的不方便. man 是 manual(手冊)的意思 ...
- Linux 最小化安装后IP的配置(手动获取静态IP地址)
一.图形化界面配置(假设为电脑A) 如果你的Linux安装有图形化界面,那么通过以下方式来配置: 我这里是有两块网卡,第一个网卡在上篇中已经通过DHCP来配置了:Linux 最小化安装后IP的配置(D ...
- Linux 最小化安装后IP的配置(DHCP获取IP地址)
图形化Linux的DHCP好配置,我就不讲了.主要将一下Linux最小化安装后IP的配置: linux最小化安装后没有ifconfig这个命令: yum install net-tools.x86_6 ...
随机推荐
- Apollo2.5摄像头安装
前言:在Apollo美研团队和长沙CiDi团队的支持下,最近完成了Apollo推荐的摄像头AR023ZWDR(Rev663F12)调试,在这里对Apollo的笔记做一个补充,希望以后的开发者不用在踩我 ...
- RedHat(小红帽)下 yum用不了的解决办法
由于RedHat是商业版的,通常由于没有注册,导致yum程序无法使用(linux下面,yum是个安装软件的“神器”).此时可用CentOS的地址进行替换.下面将一步步说明如何处理: 一.删除RedHa ...
- [转]TortoiseSVN客户端的安装
TortoiseSVN是windows平台下Subversion的免费开源客户端. 一般我们都是先讲讲服务器的配置,然后再讲客户端的使用,但是在TortoiseSVN上,却可以反过来.因为,如果你的要 ...
- ThinkPHP5入门(二)----控制器篇
一.控制器访问 1.命名空间 命名空间与目录路径对应. 如:路径位置为:application/index/controller/Index.php 其文件的命名空间应为:app\index\cont ...
- String系列01 - String 60%
1.String简介 String类实现CharSequence接口.(同时,实现Serializable, Comparable 接口). String类使用final修饰符,为final类,不可被 ...
- 国产开源JavaWeb应用程序框架——XWAF(1)
XWAF是一个基于java反射和Servlet 技术的国产开源Web应用程序框架.其英文全称为“eXtensible Web Application Framework”,意即“可扩展的网络应用程序框 ...
- Notes 20180312 : String第四讲_String上的操作
作为一个基本的工具类,同时又是使用频率很高的类,Java为其提供了丰富的方法支持.Java中的String类中包含了50多个方法.最令人惊讶的是绝大多数方法都很有用,下面我们根据功能来分类介绍一下: ...
- MVC与MVVM之间在IOS中的区别
作为一个iOS开发者,我不止一次听到我的一些开发者朋友跟我说我写的iOS代码看起来好舒服,很整洁,为什么咱们iOS开发的相当一大部分应用软件都给人以美的享受,究竟是什么使得iOS上的应用可以如此漂亮? ...
- oracle入门(二)
### 一,视图 ```1. 什么是视图 视图是一张虚表, 可以把视图看成表使用(增删改查),视图中没有数据,所有的数据都在基本表中(tables) 封装了一个复杂的DQL 操作视图 ...
- Java并发编程(六)原子性与易变性
原子性 原子是最小单元.不可再分的意思.原子性是指某个操作在获取CPU时间时,要么就给它足够时间,让这个操作执行完,要么就不执行这个操作,执行时不能出现上下文切换(把CPU时间从一个线程分配到另一个线 ...