开发|CentOS-7安装及配置

本文主要进行详细讲解CentOS7.5系统的安装过程,以及CentOS系统初始化技术。我并不想将这篇文章变成一个教程,尽管我将详细的进行每一步的讲解,enjoy!

前言

目前所有的文章思想格式都是:知识+情感。
知识:对于所有的知识点的描述。力求不含任何的自我感情色彩。
情感:用我自己的方式,解读知识点。力求通俗易懂,完美透析知识。

目录结构

开发|CentOS-7安装及配置
前言
正文
CentOS下载
    方式一
    方式二
    方式三
下载CentOS版本类型详解
    特别提醒
CentOS安装
安装VMware
    新建虚拟机设备
    安装CentOS
    配置网卡名字(有坑)
CentOS配置
    安装常用的应用
    关闭防火墙
    关闭selinux
CentOS系统初始化技术
    Sysvinit技术
    Upstart技术
    Systemd技术
    并发启动原理
总结
结束语

正文

由于最近需要使用linux系统,所以将这些自己走过的路与踩过的坑都记录下来,希望有缘人可以用的上。最近我尝试了很多 Geek technology,感觉很巧妙,后期我会会进行总结并记录下来,敬请期待。

CentOS下载

方式一

使用国内的aliyun镜像,下载地址:请猛击这里

注意:这里只可以下载最新版的CentOS,旧版本看方式二。

方式二

这个方式,也就是你在方式一,准备下载的不是最新版本的CentOS版本的时候,提示下载的readme文件,里面的提示下载旧版本信息的地址:请猛击这里

注意:进入对应版本之后,选择--->/isos--->/x86_64 --->CentOS-7-x86_64-DVD-1804.iso(或者选择下载种子文件:CentOS-7-x86_64-DVD-1804.torrent,请千万以及肯定,别告诉我不会使用种子下载文件。。。好吧,请点击查看教程https://jingyan.baidu.com/article/425e69e60e7488be15fc16ef.html)

方式三

直接一步到位的下载,因为某某原因,很多情况下,最终你都会跳转到这个地址:请猛击这里。直接进行相应的版本选择下载即可。 注意:其实一开始就可以直接说,在这里找,一定可以找到你想要的内容,但是这是你第一次找,所以花点时间还是值得的。

下载CentOS版本类型详解

当我们下载CentOS 7 时会发现有几个版本可以选择,如下:
1、CentOS-7-DVD版本:DVD是标准安装盘,一般下载这个就可以了。
2、CentOS-7-NetInstall版本:网络安装镜像。
3、CentOS-7-Everything版本:对完整版安装盘的软件进行补充,集成所有软件。
4、CentOS-7-GnomeLive版本:GNOME桌面版。
5、CentOS-7-KdeLive版本:KDE桌面版。
6、CentOS-7.0-livecd版本:光盘上运行的系统,类拟于winpe

特别提醒

注意CentOS的名字的变化,7版本之后,版本命名就跟发行的日期有关。
CentOS-7 -----> 系统是7.x版本
x86_64 -----> 64 位操作系统,并且从7以后不再提供32位镜像。
1708 -----> 2017年08月发表的版本

那么,抛出个问题: CentOS7.5又是怎么来的呢???(自己想,不要百度。)

CentOS安装

系统安装有坑,一定要注意!

安装VMware

VMware Workstation Pro的安装,就自己搞定吧!百度一下就够了 !

新建虚拟机设备

在整个过程中,这个文档只是将关键部分进行了讲解,剩下的地方,直接下一步保持默认即可。

1.打开VMware软件的界面,如下:

2.选择自定义

3.选择稍后安装系统

4.选择版本

5.目前选择桥接,这是我第一次使用它。巨坑,大家选择NAT。

6.进行硬件信息配置

7.选择自己下载的CentOS系统。

8.准备开始安装机器

安装CentOS

1.注意,使用上下键选择,tab键使用

2.输入内容,修改系统的内核,别写错了。

3.进行网络的配置

4.可以看到自己修改的内核参数,就是为了改变网卡的名字。

5.进行相关IP的配置

6.默认,启动使用默认配置

7.更改主机名,并保存

8.更改时区

9.最小化安装

10.别选做错了。

11.系统分区

12.自定义分区

13.分三个部分,名字,大小看自己

14.分区结束的确定

15.开始安装

16.设置root用户密码

17.设置的结果

18安装完成,准备启动

19.启动结果页面

配置网卡名字(有坑)

目前已经将CentOS安装成功了,现在来看看,为什么要内核的参数。
历史版本上,Linux的网络接口名称为eth0、eth1…,但这些名称并不一定符合实际的硬件插槽等,这可能会导致不同的网络配置错误(例如,自己无意的接口改名引起的禁止接口)。基于MAC地址的udev规则在虚拟化的环境中并不有用,这里的MAC地址如端口数量一样无常。

CentOS6/RHEL6 引入了一致和可预测的网络设备命名网络接口的方法。这些特性可以唯一地确定网络接口的名称以使定位和区分设备更容易,并且在这样一种方式下,无论是否重启机器、过了多少时间、或者改变硬件,其名字都是持久不变的。然而,这种命名规则并不是默认在CentOS/RHEL6上开启。

从CentOS7/RHEL7起,这种可预见的命名规则变成了默认。根据这一规则,接口名称被自动基于固件,拓扑结构和位置信息来确定。现在,即使添加或移除网络设备,接口名称仍然保持固定,而无需重新枚举,和坏掉的硬件可以无缝替换。

经过上面的历史,6版本,到7版本,从网口名称eth0到enp5s0/ens33。但是为了使用更顺手,所以将网口名字进行更名,也只有直接修改内核才可以根治。并且在7版本,很多命令都开始变化了,ifconfig失踪了,使用ip命令吧!啊啊哈哈~~
回顾一下修改的方法:在安装系统的时候配置:修改内核选项,net.ifnames=0 biosdevname=0

CentOS配置

配置,主要讲述最关键的,也就是一定可以用的上的内容。例如:关闭防火墙,关闭Selinux,安装常用软件包(我们使用的是最小化安装,所以软件包都是自己配置的,当自己玩服务器的时候,都是这个流程,需要啥配置啥,不可能啥啥都给你装上。)。

安装常用的应用

由于使用的是最小化安装,所以基本没啥软件,自己装,推荐安装下面的wget/vim/lrzsz/telnet/nmap/bash-completion.
bash-completion在7版本里面是一个好东西,由于7中的很多命令都是很长的,自己在那里敲,有点傻,多使用tab键,进行自动补全,举个例子,防火墙的那个,这么长:firewalld.service .
总结:多使用工具,做一个geek。

[root@Web ~]# yum -y install wget vim lrzsz bash-completion telnet nmap
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
。。。。。
关闭防火墙

1.登录到系统
2.查看防火墙状态,看 Active: active (running)

[root@Web ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-07-05 04:29:27 CST; 45min ago

Hint: Some lines were ellipsized, use -l to show in full.

3.关闭防火墙,并查看Active: inactive (dead)

[root@Web ~]# systemctl stop firewalld.service
[root@Web ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Fri 2019-07-05 05:15:59 CST; 4s ago
     Docs: man:firewalld(1)

Hint: Some lines were ellipsized, use -l to show in full.
[root@Web ~]#

4.防止开机重启

[root@Web ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@Web ~]#
关闭selinux

1.登录到系统
2.显示selinux配置信息
输入命令:cat /etc/selinux/config ,得到下面的结果:

[root@Web ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

3.使用vim进行修改,不会使用的自己进行百度一下哈 !
如果vim没有安装,看到的是下面的内容:

[root@Web ~]# vim /etc/selinux/config 
-bash: vim: command not found

安装vim

[root@Web ~]# yum -y install vim
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile

修改文件,SELINUX=disabled即可。

[root@Web ~]# vim /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protecte
d. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted


~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    
~                                                                                    
"/etc/selinux/config" 14L, 546C written                            
[root@Web ~]#

4,查看是否更改成功

[root@Web ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 


[root@Web ~]#

5.进行设置的生效,setenforce.

[root@Web ~]# getenforce 
Enforcing
[root@Web ~]# setenforce 0
[root@Web ~]# getenforce 
Permissive
[root@Web ~]#

CentOS系统初始化技术

Sysvinit技术

1.特点:
系统第1个进程(pid=1)为init;
Init进程是所有进程的祖先,不可kill;
大多数Linux发行版的init系统是和SystemV相兼容的,被称为sysvinit。
代表系统:CentOS5与6

2.系统查看进程树:

[root@kate-centos ~]# pstree
init─┬─abrtd
     ├─acpid
     ├─atd
     ├─auditd───{auditd}
     ├─console-kit-dae───63*[{console-kit-da}]
     ├─crond
     ├─dbus-daemon
     ├─hald─┬─hald-runner─┬─hald-addon-acpi
     │      │             └─hald-addon-inpu
     │      └─{hald}
     ├─login───bash
     ├─master─┬─pickup
     │        └─qmgr
     ├─5*[mingetty]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd─┬─sshd───bash
     │      └─sshd───bash───pstree
     └─udevd───2*[udevd]

3.应用场景:
用于服务器时代。

4.优点:
SysVinit运行非常良好,概念简单清晰。它主要依赖于Shell脚本。

5.缺点:
①按照一定顺序执行,即启动太慢。
②很容易hang住,fstab与nfs挂载问题

6.未来的趋势:
个人PC机和移动平台,需要便捷、快的系统。

Upstart技术

CentOS6采用了Upstart技术代替sysvinit进行引导,Upstart对rc.sysinit脚本做了大量的优化,缩短了系统初始化时的启动时间。但是CentOS6为了简便管理员的操作,upstart的很多特性并没有凸显或者直接不支持,因此在CentOS6中的服务启动脚本还是以原来SysV的形式提供的。
But,一个应运而生的技术,却因为竞争对手太强大,而被淘汰。
代表系统: CentOS6 ,Ubuntu14,从CentOS7,Ubuntu15开始使用systemd

Systemd技术

目前的新系统都会采用的技术(RedHat7,CentOS7,Ubuntu15等);
设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度
和 Sysvinit 兼容,降低迁移成本;
最主要优点:并行启动

Pid为1的进程:

[root@Web ~]# ps -ef|head -2
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 04:29 ?        00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
并发启动原理

1.解决 socket 依赖/端口依赖
主要是Systemd技术可以在一开始启动的时候,默认给某些依赖端口分配端口,让其顺利启动。
2.采用了D-Bus作为程序之间的通信工具,类似消息队列,可以缓存信息。
这个就是异步的概念了,随着科技的发展,异步越来越多的被用在底层的程序设计中,这是一个趋势,并且管道 pipeline 思想在异步中使用的非常多。
3.解决文件系统依赖:优先启动要用的文件系统,其余的文件系统都延迟启动加载。
这是系统内核的优化,将最需要的文件系统先运行,慢慢的不重要的再开始运行。window的底层也是这么干的,win10 开机最快可以达到刷到5秒,回想当年xp哈哈,还没有闪到图标,还没有开始读进度条呢~~~

总结

Sysvinit技术是完全的串行启动,速度让人捉急,一旦卡主就卡机了~
Upstart技术想法不错,但是生不逢时,没有发展到现在,被淘汰了,开始有同步启动的思想了,但是还是失败了
~

Systemd技术,算是最终的胜利者,设计的原理不仅仅是并发启动,还涉及异步启动,最终,还是Systemd技术笑到了最后~~~

结束语

恭喜各位,看完了CentOS基本上最底层最精华的内容,从0到1的过程,还了解到了底层的内核工作原理,量很大。希望可以帮助到真正需要的人。

总结:本文从开始的CentOS系统下载到安装,到后来的安装各种设置,到后来的配置参数,到后面的系统初始化技术讲解。知识量很大,其实醉着我对于geek世界的认识,很多东西都是一个体系,你只是学习一点,是很难有精进的,这是相当可怕的,系统的掌握一些知识,系统的学习很重要。

本文会在后面进行相关补充,文章内容还是比较糙的。