Blue Flower

第一部分 概述

1. CentOS 7 新特性

一如每个主要版本的首个发行本,多数组件都已作出改动及更新至较新版本。列出所有改动是本文档的范围以外的事情。最重大的改动计有:

  • 内核更新至 3.10.0
  • 支持 Linux 容器
  • Open VMware Tools 及 3D 图像能即装即用
  • OpenJDK-7 作为缺省 JDK
  • 原地升级 6.5 至 7.0
  • ext4 及 XFS 的 LVM 快照
  • 转用 systemd、firewalld 及 GRUB2
  • XFS 作为缺省文件系统 (sysin)
  • 内核空间内的 iSCSI 及 FCoE
  • 支持 PTPv2
  • 支持 40G 以太网络卡
  • 在兼容硬件上支持以 UEFI 安全引导模式进行安装

详见 CentOS 7 Release Notes

2. CentOS 7 版本历史

CentOS Linux 7
Release (YYMM) Based on RHEL Source (Version)
7 (2009) 7.9
7 (2003) 7.8
7 (1908) 7.7
7 (1810) 7.6
7 (1804) 7.5
7 (1708) 7.4
7 (1611) 7.3
7 (1511) 7.2
7 (1503) 7.1
7 (1406) 7.0

3. 下载 CentOS 7

下载 ISO 镜像:https://sysin.org/blog/centos-7-ovf/
官网下载:https://wiki.centos.org/Download
下载 OVF:https://sysin.org/blog/centos-7-ovf/

4. 安装摘要

语言选择:尽量选择 English,English (United States)

推荐使用 Minimal 安装介质。

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

  • 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。

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

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

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

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

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

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

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

  • KDUMP:默认启用。

  • Security Policy:暂无,忽略。

  • Root Password:创建 root 账号密码。

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

第二部分 配置

1. 格式化网卡命名

即禁用 consistent interface device naming

(1) 编辑 grub 配置文件

1
sed -i 's/rhgb/net.ifnames=0 biosdevname=0 rhgb/' /etc/default/grub

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

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

# UEFI boot mode:
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

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

1
2
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
shutdown -r now

2. 配置网络

配置文件示例如下:

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
#cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
DEVICE=eth0
UUID=547230df-5ab0-43cb-adae-4d3058664efc
ONBOOT=yes
#HWADDR=00:50:56:AE:2D:97
IPADDR0=10.19.188.2
PREFIX0=24
GATEWAY0=10.19.188.1
DNS1=10.19.190.11
DOMAIN=sgec.corp
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

#cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain

#cat /etc/resolv.conf
nameserver 10.19.190.11

修改后重启网络服务使配置生效:

1
2
systemctl restart network
# 即原来的 service network restart

3. 关闭 SELinux

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

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

1
2
3
4
5
vi /etc/selinux/config
# SELINUX=enforcing #注释掉
# SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:x #保存,关闭

使配置生效:

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

4. 防火墙配置

在旧版本的 CentOS 中,是使用 iptables 命令来设置防火墙的。但是,从 CentOS 7 开始,默认就没有安装 iptables,而是改用 firewall 来配置防火墙。

本次模板仅仅禁用了 firewalld,暂未安装 iptables。

1
2
3
4
#关闭 firewall:
systemctl stop firewalld.service #停止 firewall
systemctl disable firewalld.service #禁止 firewall 开机启动
firewall-cmd --state #验证

5. 安装 EPEL

EPEL = Extra Packages for Enterprise Linux

1
yum -y install epel-release

6. 排除内核或特定软件包更新

修改配置文件:

1
echo 'exclude=kernel* centos-release' >> /etc/yum.conf

排除了 centos-release,更新后版本也保持在原有版本。

7. 更换国内镜像 yum 源

使用阿里云镜像(模板配置)

阿里云镜像速度一般比较快(Ping 延迟低),但出现过一些问题,比如安装 Oracle 无法检测到依赖包。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
yum install wget #CentOS 默认不自带

## 第一步:备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup

## 第二步:下载
CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/epel-testing.repo http://mirrors.aliyun.com/repo/epel-testing.repo

## 第三步:运行 yum makecache 生成缓存
yum clean all
rm -rf /var/cache/yum
yum makecache

8. 软件更新

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

yum makecache #缓存软件包信息
yum upgrade #更新软件包,包括内核及系统版本

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

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

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
26
27
28
29
# 一些基本工具最小化安装可能没有 (经测 wget 等没有安装)
# CentOS 7 中 vi = vim,需要第三方 repo 安装 vim v8
yum -y install wget zip unzip
# 开发工具
yum -y groupinstall "Development Tools"
# 通过 setup 配置网络
yum -y install setuptool system-config-network-tui system-config-firewall-tui
# 默认安装没有 ifconfig 命令,安装 net-tools:ifconfig、netstat、route 等命令集
yum -y install net-tools
# 更好的 top 工具,包含在 EPEL repo 中
yum -y install htop
# host、dig 和 nslookup (sysin)
yum -y install bind-utils
#文件传输:sz 和 rz
yum -y install lrzsz
#查看日志神器 Log file Navigator,EPEL
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
7
8
9
10
11
12
13
14
15
16
- 下载(二选一):
# gcc 编译版本
wget https://github.com/sharkdp/fd/releases/download/v8.0.0/fd-v8.0.0-x86_64-unknown-linux-gnu.tar.gz
# musl libc 编译版本
wget https://github.com/sharkdp/fd/releases/download/v8.0.0/fd-v8.0.0-x86_64-unknown-linux-musl.tar.gz
# 使用 ghproxy 解决 github 无法访问问题
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
## CentOS 7 自带 glibc 版本过低,要求 GLIBC_2.18,故使用 musl 编译版本

# 安装:
tar -zxvf fd-v8.0.0-x86_64-unknown-linux-musl.tar.gz
cd fd-v8.0.0-x86_64-unknown-linux-musl

cp ./fd /usr/local/bin/
cp ./fd.1 /usr/local/share/man/man1/
mandb

10. 安装配置 SNMP

1
2
yum -y install net-snmp net-snmp-devel net-snmp-libs net-snmp-perl net-snmp-utils
# 模板暂不配置

11. 网络时间同步 NTP

CentOS 7 开始默认使用 chrony 进行网络时间同步。

1
2
# CentOS 7 开始默认使用 chrony,模板使用系统自带 chrony,默认配置如下
cat /etc/chrony.conf

查看时间同步状态:

1
2
chronyc sources -v
chronyc sourcestats -v

12. 虚机安装 VM-tools

1
2
3
4
5
6
7
8
9
10
11
12
yum -y install open-vm-tools
# 开启服务
chkconfig vmtoolsd on
systemctl enable vmtoolsd.service
# 启动服务
service vmtoolsd start
systemctl start vmtoolsd.service

# 查看版本
vmtoolsd -v
# 显示如下
VMware Tools daemon, version 11.0.5.17716 (build-15389592)

13. 安装图形界面

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

1
2
3
4
#安装 GNOME 图形界面:
yum grouplist
yum groupinstall "GNOME Desktop"
startx

14. Shell 配置

Zsh

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Zsh
yum -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

16. 清理并制作镜像模板

清理 yum 缓存

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

清理临时文件夹

1
rm -rf /tmp/*  #清空临时文件夹

清空历史记录

至此,基本配置已经完成,可以制作模板了。

第三部分 下载 OVF

CentOS 7 x86_64 OVF (sysin) - VMware 虚拟机模板

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

下载体验

请输入密码查看内容!

如何获取密码?

 

点击下载