Blue Flower

第一部分 概述

初始版本:CentOS 8.0.1905

继 RHEL 8 发布之后,CentOS 社区也发布了让人期待已久的 CentOS 8,并发布了两种模式:

  • CentOS stream:滚动发布的 Linux 发行版,适用于需要频繁更新的开发者
  • CentOS:类似 RHEL 8 的稳定操作系统,系统管理员可以用其部署或配置服务和应用

CentOS 8 系列只有 64 位系统,没有 32 位。

1
2
3
4
5
6
CentOS-8-x86_64-1905-boot.iso                      16-Aug-2019 05:22    534M
CentOS-8-x86_64-1905-boot.iso.manifest 16-Aug-2019 05:23 626
CentOS-8-x86_64-1905-boot.torrent 24-Sep-2019 04:51 21K
CentOS-8-x86_64-1905-dvd1.iso 16-Aug-2019 05:59 7G
CentOS-8-x86_64-1905-dvd1.iso.manifest 16-Aug-2019 05:59 401K
CentOS-8-x86_64-1905-dvd1.torrent 24-Sep-2019 04:52 266K

由于首个版本没有分享类似于 CentOS 7 的 Minimal 版本,这里使用 CentOS-8-x86_64-1905-boot.iso 进行安装,安装过程中选择 Minimal 安装,不过需要指定 repo 地址 (sysin)。

更新:CentOS 8.2.2004 终于增加了 Minimal iso。

因 CentOS 8 生命周期已于 2021.12.31 终结,本文更新加入了 AlmaLinux 8、Rocky Linux 8 的内容,笔者在后续文章尽量以 RHEL 8 兼容发行版 或者 RHEL 8 系列 来概称这集中发行版,因为它们是二进制兼容的发行版,仅仅在某些软件包名称和少量配置上略有差异。

1. CentOS 8 的新特性

  • DNF 成为了默认的软件包管理器,同时 yum 仍然是可用的

  • 使用网络管理器(nmclinmtui)进行网络配置,移除了网络脚本

  • 使用 Podman 进行容器管理

  • 引入了两个新的包仓库:BaseOS 和 AppStream

  • 使用 Cockpit 作为默认的系统管理工具

  • 默认使用 Wayland 作为显示服务器 (sysin)

  • iptables 将被 nftables 取代

  • 使用 Linux 内核 4.18

  • 动态编程语言、Web 和数据库服务器

    • Python 3.6 是默认的 Python 环境,有限支持 Python 2.7
    • Node.js 是在 RHEL 最新包含的,其他动态语言更新包括: PHP 7.2Ruby 2.5Perl 5.26SWIG 3.0
    • RHEL 8 分享的数据库服务包括:MariaDB 10.3MySQL 8.0PostgreSQL 10PostgreSQL 9.6,和 Redis 5
    • RHEL 8 分享 Apache HTTP Server 2.4 以及首次引入的, nginx 1.14
    • Squid 版本升级到 4.4 ,同时也首次分享 Varnish Cache 6.0

2. 版本历史

RHEL 8 CentOS Linux 8 AlmaLinux 8 Rocky Linux 8
RHEL Source Version Release (YYMM) Based on RHEL Source (Version) Based on RHEL Source (Version)
8.0 8.0.1905/ N/A N/A
8.1 8.1.1911/ N/A N/A
8.2 8.2.2004/ N/A N/A
8.3 8.3.2011/ 8.3 N/A
8.4 8.4.2105/ 8.4 8.4
8.5 8.5.2111/ 8.5 8.5
8.6 - 2022.05 EoL 8.6 8.6




3. 安装要点

详细步骤参看 CentOS 8 安装截图,这里列出几个注意点。

推荐使用 Minimal 安装介质(8.0 和 8.1 未发布 Minimal iso)。

先配置网络,否则某些项目无法配置。

  • Network & Hostname:点击 OFF 按钮为 ON,点击 Configure… 按钮,General 页面注意勾选 “Connect automatically with priority”,根据需要手动配置 IP 地址和 DNS。

  • Keyboard:默认 English (US)。

  • Language Support:下拉到最下面 “中文”,勾选 “简体中文” 和两个 “繁体中文”。

  • Time & Date:点选 Asia/Shanghai,Network Time 自动 ON(前面先配置了网络)。

  • Installation Source:如果是 Minimal 或者 DVD 介质,默认是 Local media。

    如果是 boot 安装介质 (sysin),配置网络后自动修改为 Cloest mirror,也可以根据需要手动指定,比如可以使用 163 或者阿里云镜像:

    https://mirrors.aliyun.com/CentOS/8/BaseOS/x86_64/os/
    https://mirrors.163.com/CentOS/8/BaseOS/x86_64/os/

    如果已经发布新版,安装旧版需要使用手动填写 vault 地址:https://vault.centos.org/8.0.1905/BaseOS/x86_64/os/,URL Type 为 repository URL。

  • Software Selection:Minimal Install,请勿勾选 “Development Tools”(实际上安装的组件有限,需要手动安装),虚机勾选 “Guest Agent”(Rocky Linux 和 AlmaLinux 无此选项)。

  • Installation Destination:创建分区,可选两种参考方案。

    • 默认分区方案:点选 Custom,默认使用 LVM,点击 “Click here to create them automatically” 自动创建,手动调整:删除 /home,将 SWAP 修改为整数 4 GiB,/boot 默认 1024 MiB,剩余分配给 /。

    • 在 VM 环境中,简化分区方便调整大小

      • 新建虚机,默认磁盘可以根据需要调整大小,比如 60G,这个直接用于 / 目录(可以合并 /boot),本例创建独立 /boot(容量 2G,默认 1G)。

      • 新增一块磁盘用作 SWAP,比如默认 4G。或者不创建 swap 分区,进入系统后创建文件如 /swap.img 作为 swap 分区。

        这样扩容就非常方便,虚机环境可能用不上 LVM 的便利。

  • KDUMP:默认启用。

  • Security Policy:暂无,忽略。

  • Root Password:创建 root 密码。

  • User Creation:新建额外的(管理员)账号,可选。

“Development Tools” 有哪些软件?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# dnf groupinfo "Development Tools"
Updating Subscription Management repositories.

Group: Development Tools
Description: A basic development environment.
Mandatory Packages:
autoconf
automake
binutils
bison
flex
gcc
gcc-c++
gdb
glibc-devel
libtool
make
pkgconf
pkgconf-m4
pkgconf-pkg-config
redhat-rpm-config
rpm-build
rpm-sign
strace
Default Packages:
asciidoc
byacc
ctags
diffstat
git
intltool
ltrace
patchutils
perl-Fedora-VSP
perl-generators
pesign
source-highlight
systemtap
valgrind
Optional Packages:
cmake
expect
rpmdevtools
rpmlint

手动安装开发工具命令:dnf groupinstall "Development Tools"

第二部分 配置

1. 创建文件作为 SWAP 分区

如果在安装时候没有创建 SWAP 分区,知识兔手动创建。

这是最简单的方式,直接在 / 目录下创建一个文件作为交换分区,可以非常灵活完美的启用和禁用 swap 并在线调整大小。

(1)创建要作为 swap 分区的文件 (sysin):

增加 4GB 大小的交换分区,则命令写法如下,其中的 count 等于想要的块的数量(bs*count = 文件大小)。

1
2
3
4
# 这里定义为 /swap.img
dd if=/dev/zero of=/swap.img bs=1M count=4096
# 修改权限
chmod 600 /swap.img

(2)创建 SWAP 分区文件系统:

1
mkswap /swap.img #mkswap - set up a Linux swap area

(3)启用交换分区文件:

1
swapon /swap.img #启用 swap 文件

此时使用 free -m 命令可以看到 Swap 的容量等于原有容量加上上述创建文件容量之和。

(4)编辑 /etc/fstab 开机自动加载上述 swap 文件:

增加如下一行。

1
2
3
4
/swap.img    none    swap    defaults    0 0
# 第二个字段在 CentOS 中默认使用 swap,两者并没有不一样。
/swap.img swap swap defaults 0 0
# 关于字段的风格,使用 tab 或者空格都可以,数量没有要求,通常为了对齐使用多个空格

直接命令添加:

1
sudo sh -c "echo'/swap.img    none    swap    defaults    0 0'>> /etc/fstab"

(5)取消 swap 文件

1
2
swapoff /swap.img
rm -r /swap.img

然后编辑 /etc/fstab,删除上述添加的一行即可。

Ubuntu 20.04 中默认使用 /swap.img 文件作为 SWAP 分区,可以直接 swapoff 并删除原文件,然后重新创建同名文件来简单扩容。知识兔这里借鉴了 Ubuntu 的做法,并推荐使用该种方式。

2. 格式化网卡命名

即禁用 consistent interface device naming

(1) 编辑 grub 配置文件

1
2
3
4
5
# 直接用 sed 命令替换
# CentOS 8
sed -i 's/rhgb/net.ifnames=0 rhgb/' /etc/default/grub
# CentOS 7
#sed -i 's/rhgb/net.ifnames=0 biosdevname=0 rhgb/' /etc/default/grub

(2) 运行如下命令重建 grub.cfg 文件

1
2
3
4
5
6
7
8
9
# legacy boot mode:
grub2-mkconfig -o /boot/grub2/grub.cfg

# UEFI boot mode(RHEL/CentOS):
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
# AlmaLinux:
#grub2-mkconfig -o /boot/efi/EFI/almalinux/grub.cfg
# Rocky Linux
#grub2-mkconfig -o /boot/efi/EFI/rocky/grub.cfg

(3) 重命名网卡配置文件

1
2
3
#重新对文件进行命名:
mv /etc/sysconfig/network-scripts/ifcfg-ens160 /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/ens160/eth0/g' /etc/sysconfig/network-scripts/ifcfg-eth0

(4) 重启生效

1
reboot

参考:官方文档

3. 配置网络

RHEL 8 系列完全使用 nmcli 来管理网络 (sysin),虽然仍然保留了旧版的 network-scripts 及 network.service,但是将在 RHEL 9 中废弃。

推荐使用 nmcli 命令行工具,另外有文本图形界面的 nmtui 操作比较简单,这里不再赘述。

nmcli 命令帮助

命令不支持自动补全,但是可以通过 - h 参数逐步获得帮助

1
2
3
4
5
6
7
## 说明 nmcli 后面的命令关键字都可以用第一个字母简写来标识,例如:
## nmcli connection = nmcli c
## nmcli connection show --active = nmcli c s --a
nmcli -h
nmcli connection -h
nmcli connection add -h
nmcli connection modify -h

创建一个完整的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
IFACE=`nmcli dev|grep ethernet|awk '{print $1}'`
nmcli con delete $IFACE
# 下面将使用传统的 eth0 命名方式,前提是已经做了格式化网卡名称的配置
nmcli con add con-name eth0 ifname eth0 type ethernet autoconnect yes

nmcli connection modify eth0 ipv4.method manual \
ipv4.addresses 10.3.5.5/24 \
ipv4.dns "10.3.5.11, 10.3.5.12" \
ipv4.gateway 10.3.5.1 \
ipv4.dns-search sysin.org

nmcli c up eth0
nmcli c reload

可以配置的参数选项:

ipv4.[method, dns, dns-search, dns-options, dns-priority, addresses, gateway, routes, route-metric, route-table, ignore-auto-routes, ignore-auto-dns, dhcp-client-id, dhcp-timeout, dhcp-send-hostname, dhcp-hostname, dhcp-fqdn, never-default, may-fail, dad-timeout]

重启网络

比如配置了静态路由,使用 nmcli c reload 无法生效,需要重启网络

1
2
systemctl restart NetworkManager.service
nmcli networking off && nmcli networking on

备注:CentOS 8 (默认安装) 重启网络 “systemctl restart network” 已经不可用。

RHEL 8 系列也可以手工配置 ifcfg,使用 nmcli 来生效新的网络配置(不推荐)

4. 修改主机名

说明:与 CentOS 7 方法相同

  • 即时生效
1
hostname sysin  #设置主机名为 sysin
  • 永久生效
1
2
3
4
5
6
7
8
9
10
vi /etc/hostname #编辑配置文件
sysin #修改 localhost.localdomain 为 sysin
:x #保存退出

或者使用命令:`hostnamectl set-hostname sysin`

同时修改 hosts 文件:
vi /etc/hosts #编辑配置文件
127.0.0.1 sysin #增加一条
:x #保存退出

5. 激活 cockpit web console

CentOS 8 默认集成了 cockpit,登录画面提示激活方法(模板未启用):

1
systemctl enable --now cockpit.socket

然后通过浏览器访问:http://:9090

6. 关闭 SELinux

SELinux 是 Linux 中最古老的一种 MAC(强制访问控制,Mandatory Access Control)模型,它是美国国家安全局的产品。除了在一些对安全有强制的要求的行业,SELinux 更多的以难以管理和排错而 “闻名”,通常认为其 “弊大于利”,许多应用安装文档中都要求关闭 SELinux。

编辑配置文件 /etc/selinux/config

1
2
3
4
5
# 修改 SELINUX=enforcing 为 SELINUX=disabled,即替换行
sed -i '/^SELINUX=.*/c SELINUX=disabled' /etc/selinux/config
# 或者:sed -i '/^SELINUX=enforcing/c SELINUX=disabled' /etc/selinux/config
# 注释 SELINUXTYPE=targeted
sed -i 's/^SELINUXTYPE=targeted/#&/' /etc/selinux/config

使配置生效:

1
2
setenforce 0  #0=permissive, SELinux prints warnings instead of enforcing.
shutdown -r now #最终重启系统生效

7. 配置 firewalld

关闭 firewalld(模板配置)

CentOS 8 主要改动和 RedHat Enterprise Linux 8 是一致的,基于 Fedora 28 和内核版本 4.18,其中网络方面的主要改动是 用 nftables 框架替代 iptables 框架作为默认的网络包过滤工具。

1
2
3
systemctl stop firewalld.service  #停止 firewall
systemctl disable firewalld.service #禁止 firewall 开机启动
firewall-cmd --state #查看状态

8. 安装 EPEL

EPEL 的全称叫 Extra Packages for Enterprise Linux。EPEL 是由 Fedora 社区打造,用以创建、维护以及管理针对企业版 Linux 的一个高质量附加软件包集。EPEL 适用于 RHEL 及衍生发行版如 CentOS 等。

1
2
3
4
5
yum -y install epel-release

或者 (EL8):
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

9. 更换国内镜像

示例更换为阿里云镜像:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 替换
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://mirrors.aliyun.com/centos|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo

# epel (url 不一样)
sed -e 's/metalink=/#metalink=/g' \
-e 's/#baseurl=/baseurl=/g' \
-e 's/https:\/\/download.example\/pub/https:\/\/mirrors.aliyun.com/g' \
-i.bak \
/etc/yum.repos.d/epel*.repo
# 或者
sed -e 's|^metalink=|#metalink=|g' \
-e 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|g' \
-i.bak \
/etc/yum.repos.d/epel*.repo
# 注意:
# Rocky Linux 中 #baseurl=https://download.example/pub
# 与 CentOS 相同,而 AlmaLinux #baseurl=https://download.fedoraproject.org/pub

# 清空缓存
dnf clean all
# 更新列表
dnf makecache

10. 排除不需要的更新包

修改配置文件:

1
echo 'exclude=kernel* centos-linux-release' >> /etc/yum.conf
1
备注:安装某些软件包需要新版内核支持,需要删除以上配置。

11. 更新软件包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#清理
dnf autoremove
dnf clean all
rm -rf /var/cache/dnf

dnf mackecache #缓存软件包信息
dnf upgrade # = dnf update,更新软件包,包括内核及系统版本

#再次清理
dnf autoremove
dnf clean all
rm -rf /var/cache/dnf

rm -rf /tmp/* #清空临时文件目录

12. 安装一些必备工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
## 一些基本工具最小化安装可能没有 (经测 vim 和 wget 等没有安装)
yum -y install vim wget zip unzip
# 开发工具
yum groupinstall "Development Tools"
# 以下网络工具已经不存在
# yum -y install setuptool system-config-network-tui system-config-firewall-tui
# 默认安装没有 ifconfig 命令,安装 net-tools
# ifconfig、netstat、route 等命令集
yum -y install net-tools
# host、dig 和 nslookup
yum -y install bind-utils
# 更好的 top 工具
yum -y install htop
# 文件传输:sz 和 rz
yum -y install lrzsz
# 查看日志神器 Log file Navigator
yum -y install lnav
# nc:
yum -y install nc
# lsof:
yum -y install lsof
# tree:
yum -y install tree
# pstree:
yum -y install psmisc
# ncdu:NCurses Disk Usage
yum -y install ncdu
# dstat 监控 CPU、磁盘和网络使用率
yum -y install dstat

fd 命令(fd-find,强烈推荐)

1
2
3
4
5
6
# musl libc 编译版本 (推荐)
wget https://ghproxy.com/https://github.com/sharkdp/fd/releases/download/v8.0.0/fd-v8.0.0-x86_64-unknown-linux-musl.tar.gz
# 安装:
tar -zxvf fd-v8.0.0-x86_64-unknown-linux-musl.tar.gz
cp fd-v8.0.0-x86_64-unknown-linux-musl/fd /usr/local/bin/
cp fd-v8.0.0-x86_64-unknown-linux-musl/fd.1 /usr/local/share/man/man1/

13. 配置网络时间同步 NTP

CentOS 7 开始默认使用 chrony 时间同步,可以使用恢复使用 ntp。

默认配置文件:

1
cat /etc/chrony.conf

查看状态:

1
2
chronyc sources -v
chronyc sourcestats -v

14. 安装 SNMP

1
2
3
yum -y install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils

# 因为是模板,这里暂不配置

15. 虚机安装 VM-tools

在系统安装时候勾选了 “Guest Agent”,将自动安装 open-vm-tools

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 手动安装 open-vm-tools:
yum -y install open-vm-tools

# 开启服务
#chkconfig vmtoolsd on
systemctl enable vmtoolsd.service

# 启动服务
#service vmtoolsd start
systemctl start vmtoolsd

# 查看版本
vmtoolsd -v
VMware Tools daemon, version 11.2.5.26209 (build-17337674)

16. 安装图形界面

基于特定场景需要,一般不用安装

1
2
3
4
5
6
yum grouplist  #查看可安装的组件

yum groupinstall "Server with GUI" #安装 GNOME 图形界面 (与 CentOS 7 名称不一样)
yum groupinstall "Graphical Administration Tools" #将自动安装

startx #启动图形界面

17. Shell 配置

Zsh

这里是针对当前用户配置。全局配置请参看其他文章这里直接使用全局配置文件即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Zsh
yum -y install zsh
# or
#dnf -y install zsh
yum -y install util-linux-user

chsh -s /bin/zsh

yum -y install git

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

sed -i '/^ZSH_THEME=.*/c ZSH_THEME="ys"' ~/.zshrc

echo 'alias ll="ls -lahF --color --time-style=long-iso"' >> ~/.zshrc

git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

sed -i '/^plugins=.*/c plugins=(git zsh-syntax-highlighting)' ~/.zshrc

18. 清理并制作镜像模板

清理 dnf/yum 缓存

1
2
3
dnf autoremove
dnf clean all
rm -rf /var/cache/dnf

清理临时文件夹

1
2
3
# 正确方式两句命令
rm -rf /tmp/.*
rm -rf /tmp/*

清空历史记录

第三部分 OVF 下载

下载体验:

下载仅供下载体验和测试学习,不得商用和正当使用。

下载体验

请输入密码查看内容!

如何获取密码?

 

点击下载