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基础优化的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7系统安装后初始化基础优化

centos7 初始优化+及目录讲解

CentOS7一键安全加固及系统优化脚本

centos7---环境优化

CentOS7安装后系统配置及优化

CentOS 7.6 系统进行基础软件安装和优化