大家好,今天朱哥要和大家继续唠唠Linux系统,这一回我们的主角是:CentOS。她也是我最喜欢、最常用的Linux发行版。CentOS的全称是:Community Enterprise Operating System,她基于Red Hat Enterprise Linux(简称:RHEL)释出来的源代码重新编译而成。可以说,CentOS就是开源、免费版的RHEL。你会可能有疑问:都已经有RHEL了,为何还要再搞一个CentOS呢?别急,听朱哥慢慢道来!
1994年,有个叫Marc Ewing的小伙儿创建了自己的Linux发行版:Red Hat Linux。小Ewing的爷爷曾送给他一顶红帽子,他特别喜欢,经常戴着这顶帽子。Ewing在学校里是个出了名的编程小能手,同学们遇到啥问题也经常去找他请教。他还特别乐于助人,经常帮女同学们(也包括男同学...)修电脑。慢慢地,认识他的人就给取了个外号:Red Hat,这也正是红帽子名称的由来。
1995年,在国外卖光盘的Bob Young发现有个叫Red Hat Linux的系统盘卖得非常好,于是他就私下找到了软件的作者Marc Ewing以谋求合作。这俩人相见之后,简直是天雷勾地火,一拍即合!很快Young就收购了Ewing的公司,并重新组建了新公司:红帽公司(Red Hat)。
1999年,红帽公司成功上市,在当年也是创造了股市神话!红帽公司的客户都是一些大型企业,公司的收入也主要来源于企业服务。红帽公司虽然完全拥有 RHEL 的商标权和版权,但RHEL依然是基于Linux内核开发的发行版。由于Linux内核使用了GPL开源许可协议,红帽公司也必须遵照GPL协议开放RHEL的源代码。在2004年左右,社区里就聚集了一些爱好者,他们打算在开放的RHEL源码中移除RedHat商标和专用软件,然后重新编译一个新的Linux发行版,这就是CentOS!
2014年,RedHat宣布和CentOS开源项目展开合作,CentOS团队将被RedHat收编(发工资)。
2018年,IBM宣布以340亿美元的价格收购Red Hat,CentOS依然保持社区的运作方式。
简单来说: CentOS继承了RHEL稳定、可靠的优点,是目前最受企业欢迎的Linux发行版之一。
一. 系统安装
1.1 准备
CentOS已于2019年9与25日发布了最新的CentOS 8.0版,但在生产环境中我们还是优先选择相对稳定的版本。发布于2014年的CentOS 7,已经通过了关键的【五年考验】。接下来就和朱哥一起在VMware中安装CentOS 7操作系统吧。
首先,我们要下载CentOS 7的安装镜像文件。大家可以从官网或国内镜像源中下载最新的安装文件:
接下来,我们依然做以下准备:
- 在自己电脑上安装
VMware Workstation
或VirtualBox
等虚拟化软件; - 创建虚拟机、添加磁盘、设置虚拟机网络(可以先设置为桥接模式);
- 将下载好的镜像文件添加到CD驱动器中;
- 启动虚拟机,开始安装。
1.2 安装
运行模式: 当虚拟机从光驱启动后,屏幕上会提示选择运行模式。我们通过上下方向键选择第一个菜单项【Install CentOS 7】,然后回车:
语言选择: 这里要选择接下来安装过程中,窗口界面的语言类型。我们保持默认的英语,然后点击【Continue】按钮:
进入到主安装界面,我们可以在这里设置:【系统时间】、【磁盘分区】、【网络配置】等项目。
首先点击顶部的【DATE & TIME】菜单项,开始设置系统时间和时区:
系统时间: 这里我们主要设置时区,用鼠标点击世界地图中的区域,选择【上海】,然后点击左上角的 【Done】按钮完成设置:
回到主界面,接着点击【INSTALLATION DESTINATION】进行磁盘分区设置:
朱哥要为大家演示手动分区,因此在【Other Storage Options】选项中,点击选择【I will configure partitioning.】。然后点击左上角的【Done】按钮,开始设置分区:
CentOS 7中默认使用LVM进行分区管理,我们先点击【Click here to create them automatically.】,安装程序会自动创建一个分区方案:
自动创建的分区方案不一定满足我们真实的需求,我们还需要手动调整一下。朱哥建议至少保留三个分区:① /boot
用于系统引导;② swap
交换空间;③ /
系统目录。
鼠标点击选中 /home
分区,然后点击左下角的 【-】 按钮,先将该分区删除:
设置 swap
分区: 我们为系统预留4GB的虚拟内存。鼠标点击 swap
分区,在右侧编辑面板中,将其容量增到到 4096 MiB
,然后点击右下角的 【Update Settings】更新设置:
设置根分区:将剩余的磁盘空间全都挂载到系统根目录 /
。鼠标点击 /
分区,在右侧编辑面板中,将其容量调到最大(可适当超出磁盘总容量,安装工具会自动计算识别)。然后点击右下角的 【Update Settings】按钮,更新设置:
分区规则配置完成后,再点击左上角的 【Done】按钮,提交分区方案:
这时安装程序会再次确认分区规则,我们点击右下角的【Accept Changes】按钮,应用配置:
再次回到主界面,接下来我们要修改系统的网络配置。鼠标点击【NETWORK & HOST NAME】菜单:
设置主机名:在左侧面面板的底部,可以根据自己的喜好修改主机名,输入完成后记得点击【Apply】按钮。
网络配置:在右侧面板的顶部,点击开关按钮,启用网络适配器。系统默认是通过DHCP动态获取IP地址的。如果希望设置一个固定的IP地址,可以点击右下角的 【Configure...】按钮,进行手动设置:
点击窗口头部的 【IPv4 Settings】标签页。然后点击 【Method】下拉框,从中选择【Manual】,将打开配置窗口:
在配置窗口中,点击右侧的 【Add】按钮添加配置。然后在【Address】框中详细设置IP地址、子网掩码、默认网关等参数。在【DNS servers】输入框中可以设置域名解析服务器的IP,我们添加了三个:114.114.114.114
、223.5.5.5
、223.6.6.6
,中间用英文的逗号隔开。最后点击右下角的 【Save】按钮保存配置。 如:
回到网络配置界面,点击左上角的 【Done】按钮,完成配置:
到这里,主要的安装前配置就已经完成了。接下来我们点击右下角的 【Begin Installation】按钮,开始安装系统:
在系统安装过程中,可以创建系统用户以及修改 ROOT
用户的密码。
点击【USER CREATION】开始创建系统用户:
根据自己的喜好,设置用户全名、用户名和密码,然后点击左上角的 【Done】按钮完成创建。
注意: 如果你设置的密码较弱,系统会在底部弹出黄色背景的提示信息,如下图。此时需要点击2次 【Done】按钮。
回到用户界面,继续点击【ROOT PASSWORD】选项,为 root
用户设置初始密码:
输入密码后,点击左上角的【Done】按钮,保存配置:
再次回到用户界面,请耐心等待系统安装完成......
系统安装完成后,将会显示 Reboot
按钮,如:
我们只需要点击 【Reboot】按钮重启系统,CentOS也就顺利安装完成了!
二. 基础配置
系统安装完成后,我们还需要做一些简单的配置,这样用起来会更顺手。
2.1 常用配置
2.1.1 显示配置
修正中文乱码中文显示
export LC_ALL='zh_CN.utf8'
如需修改主机名、欢迎信息,可执行:
hostnamectl set-hostname LmkServer
vim /etc/motd
如需修改时区,可执行
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2.2.2 添加sudo 权限
系统安装过程中,我们创建了 lmk
用户,我们可以为他添加 sudo
执行权限。
修改配置文件:/etc/sudoers
,在该文件的100行左右,为 lmk
添加配置:
# 复制第100行的代码,将用户名改为当前管理员用户
# 100 root ALL=(ALL) ALL
# + 101 lmk ALL=(ALL) ALL
2.2.3 关闭SeLinux
SeLinux虽然提供了更强的安全防护,但也会让我们的操作变得很麻烦。这里我们先将其关闭。
-
永久有效
修改
/etc/selinux/config
文件,将其中的SELINUX=enforcing
修改为SELINUX=disabled
,然后重启系统。 -
即时生效
执行命令:
sudo setenforce 0
2.2.4 镜像加速
使用CentOS默认的软件源安装软件会非常慢,我们可以修改为国内的镜像。
先安装 wget
工具:
sudo yum install -y wget
更新 yum 仓库配置:
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #基础
sudo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #扩展(可选)
更新系统软件:
# 清理本地缓存
sudo yum clean all
# 更新本地缓存
sudo yum makecache
# 更新系统
sudo yum -y update
2.2 内核清理
我们可以将一些已经过时的、无用的系统内核清理掉,节省磁盘空间。
查看当前系统的版本:
cat /etc/redhat-release
删除多余内核
① 查询当前使用的内核版本,如:
# uname -sr
Linux 3.10.0-123.20.1.el7.x86_64
② 查询系统中存在的所有内核版本
# rpm -qa | grep kernel
kernel-3.10.0-123.el7.x86_64
kernel-3.10.0-123.20.1.el7.x86_64
kernel-devel-3.10.0-123.el7.x86_64
③ 删除多余内容
将低版本的内核及相关组件删除。(千万不要把正在使用的内核删掉!!!)
sudo yum remove kernel-3.10.0-123.el7.x86_64 kernel-devel-3.10.0-123.el7.x86_64
2.3 常用软件
安装文件传输工具
sudo yum -y install lrzsz
上传文件
rz
# 或鼠标直接拖拽
下载文件
sz 文件名
安装centos常用的软件包及工具
sudo yum -y install gcc gcc-c++ make cmake sudo wget htop unzip zip bzip2 bzip2-devel p7zip readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui crontabs logwatch logrotate perl-Time-HiRes libcom_err-devel.i686 libcom_err-devel.x86_64 zlib-devel perl-CPAN gettext gettext-devel
三. 网络配置
3.1 IP
CentOS 7可以通过nmtui
命令,以图形化的方式进行网络配置。配置的方式与我们在安装系统时的配置差不多,这里就不再重复介绍了。
配置文件示例:
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="c5f777d5-05bd-45bd-b73f-c5033922aaf2"
DEVICE="enp0s3"
ONBOOT="yes"
IPADDR="192.168.88.100"
PREFIX="24"
GATEWAY="192.168.88.2"
DNS1="114.114.114.114"
DNS2="223.5.5.5"
DNS3="223.6.6.6"
IPV6_PRIVACY="no"
3.2. 防火墙
3.2.1 介绍
CentOS 7 默认采用 firewalld 管理防火墙配置。firewalld服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。
Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别
drop: 丢弃所有进入的包,而不给出任何响应
block: 拒绝所有外部发起的连接,允许内部发起的连接
public: 允许指定的进入连接
external: 同上,对伪装的进入连接,一般用于路由转发
dmz: 允许受限制的进入连接
work: 允许受信任的计算机被限制的进入连接,类似 workgroup
home: 同上,类似 homegroup
internal: 同上,范围针对所有互联网用户
trusted: 信任所有连接
3.2.2 使用方法
systemctl start firewalld # 启动,
systemctl enable firewalld # 开机启动
systemctl stop firewalld # 关闭
systemctl disable firewalld # 取消开机启动
具体的规则管理,可以使用 firewall-cmd,具体的使用方法可以
firewall-cmd --help
3.2.2.1 查看规则
查看运行状态
firewall-cmd --state
查看已被激活的 Zone 信息
firewall-cmd --get-active-zones
public
interfaces: eth0 eth1
查看指定接口的 Zone 信息
firewall-cmd --get-zone-of-interface=eth0
public
查看指定级别的接口
firewall-cmd --zone=public --list-interfaces
eth0
查看指定级别的所有信息,譬如 public
firewall-cmd --zone=public --list-all
public (default, active)
interfaces: eth0
sources:
services: dhcpv6-client http ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
查看所有级别被允许的信息
firewall-cmd --get-service
查看重启后所有 Zones 级别中被允许的服务,即永久放行的服务
firewall-cmd --get-service --permanent
3.2.2.2 管理规则
firewall-cmd --panic-on # 设置丢弃状态
firewall-cmd --panic-off # 取消丢弃
firewall-cmd --query-panic # 查看丢弃状态
firewall-cmd --reload # 更新规则,不重启服务
firewall-cmd --complete-reload # 更新规则,重启服务
添加某接口至某信任等级,譬如添加 eth0 至 public,再永久生效
firewall-cmd --zone=public --add-interface=eth0 --permanent
设置 public 为默认的信任级别
firewall-cmd --set-default-zone=public
a. 管理端口
列出 public 级别的被允许的进入端口
firewall-cmd --zone=public --list-ports
允许 tcp 端口 80 至 public 级别,--permanent表示系统重启后仍然有效,没有这个参数重启后失效。
firewall-cmd --zone=public --add-port=80/tcp --permanent
禁止 tcp 端口 80 至 public 级别
firewall-cmd --zone=public --remove-port=80/tcp --permanent
允许某范围的 udp 端口至 public 级别,并永久生效
firewall-cmd --zone=public --add-port=5060-5059/udp --permanent
b. 管理服务
添加 smtp 服务至 work zone
firewall-cmd --zone=work --add-service=smtp
移除 work zone 中的 smtp 服务
firewall-cmd --zone=work --remove-service=smtp
c. 配置 ip 地址伪装
查看
firewall-cmd --zone=external --query-masquerade
打开伪装
firewall-cmd --zone=external --add-masquerade
关闭伪装
firewall-cmd --zone=external --remove-masquerade
d. 端口转发
要打开端口转发,则需要先
firewall-cmd --zone=external --add-masquerade
然后转发 tcp 22 端口至 3753
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=3753
转发 22 端口数据至另一个 ip 的相同端口上
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100
转发 22 端口数据至另一 ip 的 2055 端口上
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100
四. 安装 Docker
已经有越来越多的企业使用docker来部署应用了,接下来就和朱哥一起安装一下docker吧。
4.1 配置软件源
安装 yum-utils
工具
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
添加软件仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
4.2 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io
4.3 启动配置
sudo systemctl enable docker
sudo systemctl start docker
4.4 镜像加速
Docker官方的镜像仓库在国外,我们可以使用国内的镜像加速。
# 系统要求 CentOS 7 以上,Docker 1.10 以上。
# 注意:这里使用的是朱哥的阿里云账号加速,你也可以换成自己的账号,详细方法请参考阿里云的介绍文档。
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://k16l4r0k.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
五. 安装Nginx
相信大家都听说过Nginx的大名吧,但是CentOS官方仓库中的Nginx版本很低。我们可以从Nginx官方安装最新版本。
5.1 配置软件源
添加文件 /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
5.2 安装
sudo yum install -y nginx
六. 总结
好累,终于把CentOS的安装与配置唠完了!今天我们比较细致地聊了聊CentOS的安装、配置以及常用软件的安装。但这也仅仅是个开始,Linux的门道还多着呢,学无止境啊! 这一篇的内容比较多,希望能对大家有所帮助。关于Docker、Nginx的配置和使用,朱哥会在后续的文章中为大家详细介绍,敬请关注!
更多知识干货,请关注我的公众号:唠码客