大家好,今天朱哥要和大家继续唠唠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的安装镜像文件。大家可以从官网或国内镜像源中下载最新的安装文件:

接下来,我们依然做以下准备:

  1. 在自己电脑上安装 VMware WorkstationVirtualBox 等虚拟化软件;
  2. 创建虚拟机、添加磁盘、设置虚拟机网络(可以先设置为桥接模式);
  3. 将下载好的镜像文件添加到CD驱动器中;
  4. 启动虚拟机,开始安装。

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.114223.5.5.5223.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虽然提供了更强的安全防护,但也会让我们的操作变得很麻烦。这里我们先将其关闭。

  1. 永久有效

    修改 /etc/selinux/config 文件,将其中的 SELINUX=enforcing 修改为 SELINUX=disabled,然后重启系统。

  2. 即时生效

    执行命令: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 

五. 安装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的配置和使用,朱哥会在后续的文章中为大家详细介绍,敬请关注!

更多知识干货,请关注我的公众号:唠码客

文章来源于互联网,如有雷同请联系站长删除:Linux服务器之CentOS的安装与配置

发表评论