CentOS 8 安装笔记
作者主页:sysin.org
第一部分 概述
初始版本:CentOS 8.0.1905
继 RHEL 8 发布之后,CentOS 社区也发布了让人期待已久的 CentOS 8,并发布了两种模式:
- CentOS stream:滚动发布的 Linux 发行版,适用于需要频繁更新的开发者
- CentOS:类似 RHEL 8 的稳定操作系统,系统管理员可以用其部署或配置服务和应用
CentOS 8 系列只有 64 位系统,没有 32 位。
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 地址。
更新: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 仍然是可用的
- 使用网络管理器(
nmcli
和nmtui
)进行网络配置,移除了网络脚本 - 使用 Podman 进行容器管理
- 引入了两个新的包仓库:BaseOS 和 AppStream
- 使用 Cockpit 作为默认的系统管理工具
- 默认使用 Wayland 作为显示服务器
iptables
将被nftables
取代- 使用 Linux 内核 4.18
- 动态编程语言、Web 和数据库服务器
-
Python 3.6
是默认的 Python 环境,有限支持 Python 2.7 -
Node.js
是在 RHEL 最新包含的,其他动态语言更新包括:PHP 7.2
,Ruby 2.5
,Perl 5.26
,SWIG 3.0
- RHEL 8 提供的数据库服务包括:
MariaDB 10.3
,MySQL 8.0
,PostgreSQL 10
,PostgreSQL 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 安装介质,配置网络后自动修改为 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” 有哪些软件?
# 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 分区的文件:
增加 4GB 大小的交换分区,则命令写法如下,其中的 count 等于想要的块的数量(bs*count = 文件大小)。
# 这里定义为 /swap.img
dd if=/dev/zero of=/swap.img bs=1M count=4096
# 修改权限
chmod 600 /swap.img
(2)创建 SWAP 分区文件系统:
mkswap /swap.img #mkswap - set up a Linux swap area
(3)启用交换分区文件:
swapon /swap.img #启用 swap 文件
此时使用 free -m
命令可以看到 Swap 的容量等于原有容量加上上述创建文件容量之和。
(4)编辑 /etc/fstab
开机自动加载上述 swap 文件:
增加如下一行。
/swap.img none swap defaults 0 0
# 第二个字段在 CentOS 中默认使用 swap,两者并没有不一样。
/swap.img swap swap defaults 0 0
# 关于字段的风格,使用 tab 或者空格都可以,数量没有要求,通常为了对齐使用多个空格
直接命令添加:
sudo sh -c "echo'/swap.img none swap defaults 0 0'>> /etc/fstab"
(5)取消 swap 文件
swapoff /swap.img
rm -r /swap.img
然后编辑 /etc/fstab
,删除上述添加的一行即可。
Ubuntu 20.04 中默认使用
/swap.img
文件作为 SWAP 分区,可以直接 swapoff 并删除原文件,然后重新创建同名文件来简单扩容。我们这里借鉴了 Ubuntu 的做法,并推荐使用该种方式。
2. 格式化网卡命名
即禁用 consistent interface device naming
(1) 编辑 grub 配置文件
# 直接用 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 文件
# 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) 重命名网卡配置文件
#重新对文件进行命名:
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) 重启生效
reboot
参考:官方文档
3. 配置网络
RHEL 8 系列完全使用 nmcli 来管理网络,虽然仍然保留了旧版的 network-scripts
及 network.service,但是将在 RHEL 9 中废弃。
推荐使用 nmcli 命令行工具,另外有文本图形界面的 nmtui 操作比较简单,这里不在赘述。
nmcli 命令帮助:
命令不支持自动补全,但是可以通过 - h 参数逐步获得帮助
## 说明 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
** 创建一个完整的配置文件:**
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
无法生效,需要重启网络
systemctl restart NetworkManager.service
nmcli networking off && nmcli networking on
备注:CentOS 8 (默认安装) 重启网络 “systemctl restart network” 已经不可用。
RHEL 8 系列也可以手工配置 ifcfg,使用 nmcli 来生效新的网络配置(不推荐)
4. 修改主机名
说明:与 CentOS 7 方法相同
- 即时生效
hostname sysin #设置主机名为 sysin
- 永久生效
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,登录画面提示激活方法(模板未启用):
systemctl enable --now cockpit.socket
然后通过浏览器访问:http://<IP>:9090
6. 关闭 SELinux
SELinux 是 Linux 中最古老的一种 MAC(强制访问控制,Mandatory Access Control)模型,它是美国国家安全局的产品。除了在一些对安全有强制的要求的行业,SELinux 更多的以难以管理和排错而 “闻名”,通常认为其 “弊大于利”,许多应用安装文档中都要求关闭 SELinux。
编辑配置文件 /etc/selinux/config
:
# 修改 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
使配置生效:
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 框架作为默认的网络包过滤工具。**
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 等。
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. 更换国内镜像
示例更换为阿里云镜像:
# 替换
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. 排除不需要的更新包
修改配置文件:
echo 'exclude=kernel* centos-linux-release' >> /etc/yum.conf
备注:安装某些软件包需要新版内核支持,需要删除以上配置。
11. 更新软件包
#清理
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. 安装一些必备工具
## 一些基本工具最小化安装可能没有 (经测 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,强烈推荐)
# 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。
默认配置文件:
cat /etc/chrony.conf
查看状态:
chronyc sources -v
chronyc sourcestats -v
14. 安装 SNMP
yum -y install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils
# 因为是模板,这里暂不配置
15. 虚机安装 VM-tools
在系统安装时候勾选了 “Guest Agent”,将自动安装 open-vm-tools
# 手动安装 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. 安装图形界面
基于特定场景需要,一般不用安装
yum grouplist #查看可安装的组件
yum groupinstall "Server with GUI" #安装 GNOME 图形界面 (与 CentOS 7 名称不一样)
yum groupinstall "Graphical Administration Tools" #将自动安装
startx #启动图形界面
17. Shell 配置
Zsh
这里是针对当前用户配置。全局配置请参看其他文章,** 这里直接使用全局配置文件即可 **。
# 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.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
sed -i '/^ZSH_THEME=.*/c ZSH_THEME="ys"' ~/.zshrc
echo 'alias ll="ls -lahF --color"' >> ~/.zshrc
git clone https://github.com/sangrealest/zsh-autosuggestions.git ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
sed -i '/^plugins=.*/c plugins=(git zsh-autosuggestions)' ~/.zshrc
18. 清理并制作镜像模板
清理 dnf/yum 缓存
dnf autoremove
dnf clean all
rm -rf /var/cache/dnf
清理临时文件夹
# 正确方式两句命令
rm -rf /tmp/.*
rm -rf /tmp/*
清空历史记录
第三部分 OVF 下载
下载地址: