centos7基础优化
Posted blog-tim
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7基础优化相关的知识,希望对你有一定的参考价值。
centos7.x
1 centos7安装及优化
1.1 通过U盘安装物理服务器注意事项(Dell R710)
l 使用U盘安装centos7,选择UEFI方式安装(最好修改Bios为传统方式启动),在安装选择选项的时候,可能要给U盘一个挂载点(U盘卷标问题),选择第一项,按e编辑,将 LABEL=CentOSx207x2086_64 替换为 /dev/sda4 (注意这个名称不能和硬盘已经分好的区编号重复),然后按 Ctrl+x 启动安装。
注意:
l 安装centos7系统,boot引导分区大小建议700-1024M左右,因为云计算要使用到很大的空间
1.1.1 安装系统时修改网卡名称为eth0操作
l 挂载镜像后,进入系统在第一个选项按tab键后输入参数,回车(修改网卡名称为eth0)
输入net.ifnames=0 biosdevname=0 #net前面有个空格
安装时修改如下图
l PS:此操作也可以在安装完系统后再修改,效果是一样的,具体是在 /etc/sysconfig/grub文件中添加了内容
1.2 安装时的其他选项
l 全部选择英文字符集,如果选择中文,后期不好排错
l 选择Minimal Install(最小化安装)
Debugging Tools
Compatiblity Libraries
Development Tools
l 硬盘分区时选择自定义分区
I wiil configure partitioning。
点击+号,添加boot、swap、根、分区
分区:/boot 容量:1G 说明:boot要分700M到1个G,云计算需要依赖,所以比较大。
分区: swap 容量:1G 说明:工作一般不会用到swap.只有内存不够才使用swap,工作有监控,内存不足80%会报错,磁盘满了,最后才会使用swap
分区:/ 容量:剩余 说明:一般所有剩余容量分给根目录,如果不够可以分区给一个目录。
l 分区完毕下一步后,点击Accept Changes
l 关闭Engble kdump(系统崩溃捕捉信息)
l 设置主机名Centos7或其他主机名
l 到网卡配置里直接下一步,安装完系统再配置网卡信息
l 关闭SECURITY POLICY安全机制,把ON关闭成OFF
l 点击Begin Installation(开始安装),安装完成后再设置root密码(解压包过程最好不要设置root密码,否则容易出错)
1.1 快捷键
ctrl+A 光标跳最前
ctrl+E 光标跳最后
ctrl+U 删除光标前所有字符
ctrl+K 删除光标后所有字符
ctrl+R 搜索关键字相关命令历史
ctrl+L 清屏(或clear命令)
1.2 centos7服务管理命令
启动nginx服务 systemctl start nginx.service
设置/添加开机自启动 systemctl enable nginx.service
停止/移除开机自启动 systemctl disable nginx.service
查看服务当前状态 systemctl status nginx.service
重新启动服务 systemctl restart nginx.service
查看所有已启动的服务 systemctl list-units --type=service
注意:
l systemctl命令需要总结
1.3 更改主机网卡名称为eth0和配置主机IP地址
参考博客http://blog.51cto.com/oldboy/1722101
l 强烈建议主机IP地址在安装完系统后再设置,不要在开机的时候设置,否则可能要手工添加网卡配置文件
[[email protected] network-scripts]# cp ifcfg-ens32 ifcfg-ens32.bak
[[email protected] network-scripts]# mv ifcfg-ens32 ifcfg-eth0
[[email protected] network-scripts]# vi ifcfg-eth0 #编辑配置文件并添加内容
[[email protected] network-scripts]# cat ifcfg-eth0 #<==修改后的结果如下。
TYPE=Ethernet
BOOTPROTO=static #设置为静态IP地址,如果是自动获取就设置为DHCP,后面#注释静态IP
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eth0 #<==修改为eth0
UUID=3e8d1581-84bd-44e8-ae70-467fa29e2585
DEVICE=eth0 #<==修改为eth0
ONBOOT=yes #设置网卡开机自动启动
PREFIX=24
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no
IPADDR=192.168.81.222
GATEWAY=192.168.80.1
NETMASK=255.255.254.0 #设置IP,添加NETMASK,子网掩码地址
[[email protected] network-scripts]# systemctl restart network #Centos7的network等网络启动程序,都在systemctl目录下,和centos6有很大区别
修改grub菜单:
[[email protected] network-scripts]# cat /etc/sysconfig/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed ‘s, release .*$,,g‘/etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=128M rhgb net.ifnames=0 biosdevname=0 quiet" #<==黄色底纹内容是添加的。
GRUB_DISABLE_RECOVERY="true"
[[email protected] ~]# grub2-mkconfig -o /boot/grub2/grub.cfg #<==生成grub启动菜单。
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-229.el7.x86_64
Found initrd image:/boot/initramfs-3.10.0-229.el7.x86_64.img
Found linux image:/boot/vmlinuz-0-rescue-1100f7e6c97d4afaad2e396403ba7f61
Found initrd image:/boot/initramfs-0-rescue-1100f7e6c97d4afaad2e396403ba7f61.img
Done
[[email protected] network-scripts]# reboot #重启系统才生效,虚拟机可能要重启2次
1.3.1 验证是否修改成功
[[email protected] ~]# yum install net-tools -y #<== centos7默认没有ifconfig 需要安装net-tools包
[[email protected] network-scripts]# ifconfig #<==再次查看网卡信息
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet10.0.0.201 netmask 255.255.255.0 broadcast 10.0.0.255
inet6fe80::20c:29ff:feae:ef19 prefixlen64 scopeid 0x20<link>
ether00:0c:29:ae:ef:19 txqueuelen 1000 (Ethernet)
RX packets36248 bytes 2319009 (2.2 MiB)
RXerrors 0 dropped 0 overruns 0 frame 0
TXpackets 43090 bytes 67555745 (64.4 MiB)
TXerrors 0 dropped 0 overruns 0 carrier 0 collisions 0
l 备注:此操作可以在配置完yum源和epel源之后在配置
l 修改为eth0的原因:方便以后自动化管理ansble管理,或其他软件批量管理。
1.3.2 centos7图形化网卡管理工具nmti
l centos7 上管理网路的图形化界面工具nmtui,类似于centos6的setup
l 此命令可以代替系统服务,网络服务,防火墙管理等
[[email protected] ~]# nmtui
1.3.3 centos7与centos网卡坏了修复好后的区别
l Centos6网卡,有4个,如果eth0坏了,重新添加网卡进去后就会默认命名为eth4,后面多台机器就不好管理,需要人工修改
l Centos7网卡,有4个,如果eth0坏了,重新添加网卡进去后就会默认命名为eth0,默认找到损坏的卡槽进去装备,类似这样的概念。
1.4 配置DNS服务器地址
[[email protected] ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 202.96.128.86
nameserver 202.96.128.166
1.5 安装系统必要的软件
[[email protected] ~]# yum install -y wget vim lrzsz bash-completion dos2unix telnet tree net-tools namp sl nc psmisc
1.6 配置yum源和epel源为国内地址
l 注意:yum源和epel源要同时配置,centos7起这2个有依赖关系
[[email protected] yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[[email protected] yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[[email protected] Packages]# yum clean all && yum makecache #清空缓存,重新生成缓存
[[email protected] Packages]# yum repolist enabled #查看yum仓库信息
阿里云开源镜像站https://opsx.alibaba.com/mirror
1.7 更改主机名
以下命令在centos7中修改主机名永久生效(2种方法)
[[email protected] ~]# hostnamectl set-hostname --static meinv05 #注意修改/etc/hosts与新主机名一致
[[email protected]~]# vi /etc/hostname #或编辑此配置文件(centos6没有此文件)
meinv05
1.8 停止/关闭防火墙
[[email protected] ~]# systemctl stop firewalld.service #暂时停止防火墙服务
备注:iptables不能系统的firewalld.serice服务同时存在,如果同时存在要rpm -e卸载iptables
[[email protected] ~]# systemctl disable firewall.service #永久关闭防火墙
1.9 关闭selinux
[[email protected] ~]# grep enforcing /etc/selinux/config
[[email protected] ~]# sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g‘ /etc/selinux/config
[[email protected] ~]# setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
[[email protected] ~]# setenforce 0
setenforce: SELinux is disabled
[[email protected] ~]# getenforce #之前已经关闭,所以显示disabled
Disabled
1.10 调整文件描述符大小为65535
[[email protected] ~]# ulimit -n #查看系统默认文件描述符大小
1024
[[email protected] ~]# echo ‘* - nofile 65535‘ >>/etc/security/limits.conf #调整为65535或更大
[[email protected] ~]# tail -1 /etc/security/limits.conf
* - nofile 65535
[[email protected] ~]# ulimit -n #ctrl+D退出重新登录后查看已经生效
65535
1.1 授权普通用户sudo管理
l centos7下要下载安装sudo命令包
[[email protected] ~]# yum install sudo #大小为1.1M左右
[[email protected] ~]# useradd oldboy && echo "123456"|passwd --stdin oldboy
Changing password for user oldboy.
passwd: all authentication tokens updated successfully.
[[email protected] ~]# ll /etc/sudoers #centos7此文件默认没有写权限
-r--r-----. 1 root root 3938 Apr 11 2018 /etc/sudoers
[[email protected] ~]# chmod +w /etc/sudoers #root用户也可以强制修改不加w权限
[[email protected] ~]# ll /etc/sudoers
-rw-r-----. 1 root root 3938 Apr 11 2018 /etc/sudoers
[[email protected] ~]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
oldboy ALL=(ALL) NOPASSWD: ALL #新增加的行
[[email protected] ~]# visudo -c #检查语法
[[email protected] ~]# chmod -w /etc/sudoers
[[email protected] ~]# ll /etc/sudoers
-r--r----- 1 root root 3972 Dec 1 02:34 /etc/sudoers
1.2 更改用户远程连接端口和禁止root用户登录
[[email protected] ~]# grep -vE "^$|^#" /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem sftp /usr/libexec/openssh/sftp-server
[[email protected] ~]# cat /etc/ssh/sshd_config #修改以下项
#PermitRootLogin yes ======》PermitRootLogin no #去掉注释并改为no
#PermitEmptyPasswords no ======》PermitEmptyPasswords no #去掉注释
GSSAPIAuthentication yes ======》GSSAPIAuthentication no #如果远程连接慢要改这里为no
#UseDNS yes ======》UseDNS no #不使用此DNS
#Port 22 ======》Port 52113 #更改为其他端口
[[email protected] ~]# systemctl restart sshd.service #记得重启服务才生效(不生效就reboot)
[[email protected] ~]$ sudo su -
Last login: Sat Dec 1 02:51:10 CST 2018 on tty1
[[email protected] ~]#
1.2.1 修改不生效解决办法
[[email protected] ~]# systemctl status sshd.service #查看sshd服务状态
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2018-12-01 03:00:03 CST; 3min 26s ago
[[email protected] ~]# systemctl restart sshd.service #重启服务
[[email protected] ~]# systemctl enable sshd.service #开机启动服务
[[email protected] ~]# reboot
[[email protected] ~]# netstat -lntup|grep sshd
1.3 修改系统字符集
l 编辑/etc/locale.conf (c6是 /etc/sysconfig/i18n)
[[email protected] ~]# cat /etc/locale.conf
LANG="en_US.UTF-8"
[[email protected] ~]# localectl set-locale LANG=zh_CN.UTF-8 #命令直接修改
[[email protected] ~]# source /etc/locale.conf #生效修改的配置文件
l 注意:没有必要不用修改,使用英文更好
1.4 查看系统版本号
[[email protected] ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[[email protected] ~]# cat /etc/os-release
1.5 查看/etc/rc.local文件权限
[[email protected] ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Nov 30 20:02 /etc/rc.local -> rc.d/rc.local
1.6 查看系统运行级别
[[email protected] ~]# systemctl get-default #和c6区别是用英文:命令行界面 显示
multi-user.target
[[email protected] ~]# runlevel
N 3
1.6.1 设置运行级别命令
l 注意:c6和c7设置运行级别命令不一样
[[email protected] ~]# systemctl set-default graphical.target #临时设置为图形界面运行级别(忽略)
[[email protected] ~]# cat /etc/inittab
# inittab is no longer used when using systemd.
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
# systemd uses ‘targets‘ instead of runlevels. By default, there are two main targets:
# multi-user.target: analogous to runlevel 3 #命令行界面
# graphical.target: analogous to runlevel 5 #图形界面
# To view current default target, run:
# systemctl get-default
# To set a default target, run:
# systemctl set-default TARGET.target #设置运行级别命令使用格式
注意:
l Centos7运行级别0 和1 都有, 234结合在一起组合是命令行模式,以后启动的时候都合并在一起运行了,图形界面模式没有变化,只是设置命令改变了,这是Centos7跟Centos6不同的区别。
1.7 查看开机启动的服务
[[email protected] ~]# systemctl list-unit-files|grep enabled #此命令查看开机启动的服务
abrt-ccpp.service enabled
abrt-oops.service enabled
abrt-vmcore.service enabled
abrt-xorg.service enabled
abrtd.service enabled
auditd.service enabled
[email protected] enabled
crond.service enabled
dbus-org.freedesktop.NetworkManager.service enabled
dbus-org.freedesktop.nm-dispatcher.service enabled
[email protected] enabled
irqbalance.service enabled
lvm2-monitor.service enabled
microcode.service enabled
NetworkManager-dispatcher.service enabled
NetworkManager-wait-online.service enabled
NetworkManager.service enabled
postfix.service enabled
rhel-autorelabel.service enabled
rhel-configure.service enabled
rhel-dmesg.service enabled
rhel-domainname.service enabled
rhel-import-state.service enabled
rhel-loadmodules.service enabled
rhel-readonly.service enabled
rsyslog.service enabled
sshd.service enabled
systemd-readahead-collect.service enabled
systemd-readahead-drop.service enabled
systemd-readahead-replay.service enabled
tuned.service enabled
vgauthd.service enabled
vmtoolsd.service enabled
dm-event.socket enabled
lvm2-lvmetad.socket enabled
lvm2-lvmpolld.socket enabled
default.target enabled
multi-user.target enabled
remote-fs.target enabled
runlevel2.target enabled
runlevel3.target enabled
runlevel4.target enabled
1.8 centos启动时间优化
[[email protected] ~]# systemd-analyze time #查看系统启动时间
[[email protected] ~]# systemd-analyze blame #具体服务启动时间,查看每个服务启动了多久
[[email protected] ~]# systemd-analyze plot >bootime.svg #把记录变为网页浏览方式在本地
l 说明:使用rz下载bootime.svg到win查看每个服务的负载情况,然后高效率排错服务
2 centos7的目录结构
l 最大的变化是 bin和sbin放到了 /usr 下,库文件也放到了 /usr下
2.1 centos目录树拓扑
[[email protected] Packages]# tree -L 1 /
/
|-- bin -> usr/bin #普通用户使用的命令
|-- boot #系统引导的相关信息
|-- dev #设备文件目录
|-- etc #系统配置文件目录及其他应用配置文件路径
|-- home #普通用户家目录
|-- lib -> usr/lib #库文件
|-- lib64 -> usr/lib64 #库文件64位
|-- media #移动设备(光驱等)挂载目录
|-- mnt #可移动磁盘等挂载目录
|-- opt
|-- proc #虚拟的文件系统,内核和进程编号及其他状态信息
|-- root #超级管理员家目录
|-- run
|-- sbin -> usr/sbin #超级用户/管理员使用的命令
|-- srv
|-- sys
|-- tmp #临时文件
|-- usr #系统相关文件
`-- var #可变化文件目录,例如系统日志,邮件等
[[email protected] ~]# ll /
total 16
lrwxrwxrwx. 1 root root 7 Nov 30 20:01 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Nov 30 20:06 boot
drwxr-xr-x 19 root root 3120 Dec 1 00:22 dev
drwxr-xr-x. 80 root root 8192 Dec 1 02:04 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 home
lrwxrwxrwx. 1 root root 7 Nov 30 20:01 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Nov 30 20:01 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 media
drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt
drwxr-xr-x. 2 root root 6 Apr 11 2018 opt
dr-xr-xr-x 117 root root 0 Dec 1 00:22 proc
dr-xr-x---. 3 root root 163 Dec 1 02:01 root
drwxr-xr-x 25 root root 720 Dec 1 01:42 run
lrwxrwxrwx. 1 root root 8 Nov 30 20:01 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Apr 11 2018 srv
dr-xr-xr-x 13 root root 0 Dec 1 00:22 sys
drwxrwxrwt. 11 root root 217 Dec 1 02:04 tmp
drwxr-xr-x. 13 root root 155 Nov 30 20:01 usr
drwxr-xr-x. 19 root root 267 Nov 30 20:06 var
[[email protected] Packages]# ll /dev/null /dev/random /dev/zero
crw-rw-rw-. 1 root root 1, 3 Nov 29 03:56 /dev/null #黑洞,空设备
crw-rw-rw-. 1 root root 1, 8 Nov 29 03:56 /dev/random #产生随机数设备
crw-rw-rw-. 1 root root 1, 5 Nov 29 03:56 /dev/zero #零设备
2.2 ACL高级特性
3 系统进程管理
3.1 进程
注意:
l centos5/6所有进程的父进程是init,centos7所有进程的父进程是 systemd
[[email protected] Packages]# yum install psmisc #安装centos7的pstree命令包
Psmisc的内容
Psmisc软件包包含三个帮助管理/proc目录的程序。
安装下列程序: fuser, killall,pstree和pstree.x11(到pstree的链接)
简短说明
fuser 显示使用指定文件或者文件系统的进程的PID。
killall 杀死某个名字的进程,它向运行指定命令的所有进程发出信号。
pstree 树型显示当前运行的进程。
pstree.x11 与pstree功能相同,只是在退出前需要确认。
Psmisc 安装依赖关系
Psmisc 依赖于: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed.
---------------------
[[email protected] ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─abrt-watch-log
├─abrtd
├─agetty
├─auditd───{auditd}
├─crond
├─dbus-daemon
├─irqbalance
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─polkitd───5*[{polkitd}]
├─rsyslogd───2*[{rsyslogd}]
├─sshd───sshd───sshd───bash───sudo───su───bash───su───bash───sudo───su─+++
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tuned───4*[{tuned}]
└─vmtoolsd───{vmtoolsd}
以上是关于centos7基础优化的主要内容,如果未能解决你的问题,请参考以下文章