1 centos7安裝及優化
1.1 通過U盤安裝物理服務器注意事項(Dell R710)
使用U盤安裝centos7,選擇UEFI方式安裝(最好修改BIOS為傳統方式啟動),在安裝選擇選項的時候,可能要給U盤一個掛載點(U盤卷標問題),選擇第一項,按e編輯,將 LABEL=CentOS\x207\x20\86_64 替換為 /dev/sda4 (注意這個名稱不能和硬盤已經分好的區編號重復),然后按 Ctrl+x 啟動安裝。
注意:
安裝centos7系統,boot引導分區大小建議700-1024M左右,centos7雲計算要使用到很大的空間。
1.1.1 安裝系統時修改網卡名稱為eth0操作
掛載鏡像后,進入系統在第一個選項按tab鍵后輸入參數,回車(修改網卡名稱為eth0)
輸入net.ifnames=0 biosdevname=0 #net前面有個空格。
PS:此操作也可以在安裝完系統后再修改,效果是一樣的,具體是在 /etc/sysconfig/grub文件中添加了內容。
1.1.2 安裝時的其他選項
全部選擇英文字符集,不要選擇中文,習慣英文就好。
選擇Minimal Install(最小化安裝)
Debugging Tools
Compatiblity Libraries
Development Tools
硬盤分區時選擇自定義
I wiil configure partitioning
點擊+號,添加常規分區boot、swap、根、分區
分區:/boot 容量:1G 說明:boot要分700M到1個G,雲計算需要依賴,所以比較大。
分區: swap 容量:1G 說明:工作一般不會用到swap.只有內存不夠才使用swap,工作有監控,內存不足80%會報錯,磁盤滿了,最后才會使用swap
分區:/ 容量:剩余 說明:一般所有剩余容量分給根目錄,如果不夠可以分區給一個目錄。
分區完畢下一步后,點擊Accept Changes
關閉Engble kdump(系統崩潰捕捉信息)
設置主機名Centos7或其他主機名
到網卡配置里直接下一步,安裝完系統再配置網卡信息
關閉SECURITY POLICY安全機制,把ON關閉成OFF
點擊Begin Installation(開始安裝),安裝完成后再設置root密碼(解壓包過程最好不要設置root密碼,否則容易出錯)
1.2 常用快捷鍵
ctrl+A 光標跳最前
ctrl+E 光標跳最后
ctrl+U 刪除光標前所有字符
ctrl+K 刪除光標后所有字符
ctrl+R 搜索關鍵字相關命令歷史
ctrl+L 清屏(或clear命令)
1.3 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
注意:
systemctl 命令需要總結
1.4 更改主機網卡名稱為eth0和配置主機IP地址,配置DNS
參考博客http://blog.51cto.com/oldboy/1722101
強烈建議主機IP地址在安裝完系統后再設置,不要在開機的時候設置,否則可能要手工添加網卡配置文件
[root@oldboy network-scripts]# cp ifcfg-ens32 ifcfg-ens32.bak
[root@oldboy network-scripts]# mv ifcfg-ens32 ifcfg-eth0
[root@oldboy network-scripts]# vi ifcfg-eth0 #<==編輯配置文件並添加內容
[root@oldboy 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,子網掩碼地址
DNS1=202.96.128.86 #注意,CentOS7起DNS在網卡配置文件中配置
DNS2=202.96.128.166
[root@oldboy network-scripts]# systemctl restart network #Centos7的network等網絡啟動程序,都在systemctl目錄下,和centos6有很大區別
修改grub菜單:
[root@oldboy 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"
[root@linux-node2 ~]# 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
[root@oldboy network-scripts]# reboot #重啟系統才生效,虛擬機可能要重啟2次
1.4.1 驗證網卡是否修改成功
[root@linux-node2 ~]# yum install net-tools -y #<== centos7默認沒有ifconfig 需要安裝net-tools包
[root@oldboy 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
備注:此操作可以在配置完yum源和epel源之后在配置
修改為eth0的原因:方便以后自動化管理ansble管理,或其他軟件批量管理。
1.4.2 centos7圖形化網卡管理工具nmtui
centos7 上管理網路的圖形化界面工具nmtui,類似於centos6的setup
此命令可以代替系統服務,網絡服務,防火牆管理等
[root@meinv05 ~]# nmtui
1.4.3 centos7與centos網卡壞了修復好后的區別
Centos6網卡,有4個,如果eth0壞了,重新添加網卡進去后就會默認命名為eth4,后面多台機器就不好管理,需要人工修改
Centos7網卡,有4個,如果eth0壞了,重新添加網卡進去后就會默認命名為eth0,默認找到損壞的卡槽進去裝備,類似這樣的概念。
1.5 配置DNS服務器地址
[root@meinv05 ~]# cat /etc/resolv.conf #注意:CentOS起在此配置DNS可能會和網卡起沖突,永久生效辦法是在網卡配置文件中配置DNS
# Generated by NetworkManager
nameserver 202.96.128.86
nameserver 202.96.128.166
1.6 安裝系統必要的軟件
[root@meinv05 ~]# yum install -y wget vim lrzsz bash-completion dos2unix telnet tree net-tools namp sl nc psmisc
1.7 配置yum源和epel源為國內地址
注意:yum源和epel源要同時配置,centos7起這2個有依賴關系
[root@meinv05 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@meinv05 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@meinv05 Packages]# yum clean all && yum makecache #清空緩存,重新生成緩存
[root@meinv05 Packages]# yum repolist enabled #查看yum倉庫信息
阿里雲開源鏡像站https://opsx.alibaba.com/mirror
1.8 更改主機名
以下命令在centos7中修改主機名永久生效(2種方法)
[root@meinv05 ~]# hostnamectl set-hostname --static meinv05 #注意修改/etc/hosts與新主機名一致
[root@meinv05~]# vi /etc/hostname #或編輯此配置文件(centos6沒有此文件)
meinv05
1.9 停止/關閉防火牆
[root@meinv05 ~]# systemctl stop firewalld.service #暫時停止防火牆服務
備注:iptables不能系統的firewalld.serice服務同時存在,如果同時存在要rpm -e卸載iptables
[root@meinv05 ~]# systemctl disable firewalld.service #永久關閉防火牆
1.10 關閉selinux
[root@meinv05 ~]# grep enforcing /etc/selinux/config
[root@meinv05 ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
[root@meinv05 ~]# setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
[root@meinv05 ~]# setenforce 0
setenforce: SELinux is disabled
[root@meinv05 ~]# getenforce #之前已經關閉,所以顯示disabled
Disabled
1.11 調整文件描述符大小為65535
[root@meinv05 ~]# ulimit -n #查看系統默認文件描述符大小
1024
[root@meinv05 ~]# echo '* - nofile 65535' >>/etc/security/limits.conf #調整為65535或更大
[root@meinv05 ~]# tail -1 /etc/security/limits.conf
* - nofile 65535
[root@meinv05 ~]# ulimit -n #ctrl+D退出重新登錄后查看已經生效
65535
1.12 授權普通用戶sudo管理
centos7下要下載安裝sudo命令包
[root@meinv05 ~]# yum install sudo #大小為1.1M左右
[root@meinv05 ~]# useradd oldboy && echo "123456"|passwd --stdin oldboy
Changing password for user oldboy.
passwd: all authentication tokens updated successfully.
[root@meinv05 ~]# ll /etc/sudoers #此文件默認沒有寫權限
-r--r-----. 1 root root 3938 Apr 11 2018 /etc/sudoers
[root@meinv05 ~]# chmod +w /etc/sudoers #root用戶也可以強制修改不加w權限
[root@meinv05 ~]# ll /etc/sudoers
-rw-r-----. 1 root root 3938 Apr 11 2018 /etc/sudoers
[root@meinv05 ~]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
oldboy ALL=(ALL) NOPASSWD: ALL #新增加的行
[root@meinv05 ~]# visudo -c #檢查語法
[root@meinv05 ~]# chmod -w /etc/sudoers
[root@meinv05 ~]# ll /etc/sudoers
-r--r----- 1 root root 3972 Dec 1 02:34 /etc/sudoers
1.13 更改用戶遠程連接端口和禁止root用戶登錄
[root@meinv05 ~]# 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
[root@meinv05 ~]# 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 #更改為其他端口
[root@meinv05 ~]# systemctl restart sshd.service #記得重啟服務才生效(不生效就reboot)
[oldboy@meinv05 ~]$ sudo su -
Last login: Sat Dec 1 02:51:10 CST 2018 on tty1
[root@meinv05 ~]#
1.13.1 修改不生效解決辦法
[root@meinv05 ~]# 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
[root@meinv05 ~]# systemctl restart sshd.service #重啟服務
[root@meinv05 ~]# systemctl enable sshd.service #開機啟動服務
[root@meinv05 ~]# reboot
[root@meinv05 ~]# ss -lntup|grep sshd #c7把netstat換成ss
1.14 修改系統字符集
第一種方法:編輯/etc/locale.conf (c6是 /etc/sysconfig/i18n)
[root@meinv05 ~]# cat /etc/locale.conf
LANG="en_US.UTF-8"
[root@meinv05 ~]# source /etc/locale.conf #生效修改的配置文件,和c6的路徑不一樣
第二種方法:
[root@meinv05 ~]# localectl set-locale LANG=zh_CN.UTF-8 #命令直接修改
注意:沒有必要不用修改,使用英文更好
1.15 查看系統版本號
[root@meinv05 ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@meinv05 ~]# cat /etc/os-release
1.16 查看系統運行級別
[root@meinv05 ~]# systemctl get-default #和c6區別是用英文:命令行界面 顯示
multi-user.target
[root@meinv05 ~]# runlevel
N 3
1.16.1 設置運行級別命令
注意:c6和c7設置運行級別命令不一樣
[root@meinv05 ~]# systemctl set-default graphical.target #臨時設置為圖形界面運行級別(忽略)
[root@meinv05 ~]# 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 #設置運行級別命令使用格式
注意:
Centos7運行級別0 和1 都有, 234結合在一起組合是命令行模式,以后啟動的時候都合並在一起運行了,圖形界面模式沒有變化,只是設置命令改變了,這是Centos7跟Centos6不同的區別。
1.17 查看開機啟動的服務
[root@meinv05 ~]# 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
autovt@.service enabled
crond.service enabled
dbus-org.freedesktop.NetworkManager.service enabled
dbus-org.freedesktop.nm-dispatcher.service enabled
getty@.service 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
2 centos7的目錄結構
最大的變化是 bin和sbin放到了 /usr 下,庫文件也放到了 /usr下
2.1 centos目錄樹拓撲
[root@meinv05 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 #可變化文件目錄,例如系統日志,郵件等
3 系統進程管理
3.1 進程
注意:
centos5/6所有進程的父進程是 init ,centos7所有進程的父進程是 systemd
[root@meinv05 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.
---------------------
[root@meinv05 ~]# 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}
