给Linux小白的CentOS8.1基本安装说明
写在前面的话:用过Linux的同学应该都会觉得Linux安装是件非常简单的事情,根本不值得用博客记下来!但是我发现,其实没接触过Linux的同学还真不一定会装,就像在IT行业工作过几年但一直用Windows系统的同学可能就不会装Linux,这是正常的!毕竟不是谁都需要去安装或配置Linux服务器!所以想了下,还是将Linux的基本安装过程记一下流水账,在流水账最后讲一下基本网络环境的配置。
这里以使用Linux皇家血统Red Hat Enterprise Linux的源码编译而成的CentOS(Community Enterprise Operating System)为蓝本进行流水账的记录!CentOS的具体版本号为:CentOS-8.1.1911-x86_64,建议到阿里云CentOS镜像库下载,速度快嘛(可能你看这篇文章时已经有更新的版本了,但8.x的版本应该不会相差太多,多年后的小白如果发现8.x版本早已下架,那么可以关贴了)!
为了讲得足够小白,我从虚拟机的创建开始一步一步记下去,基本上都是截图标注+少量文字补充说明的方式(不要多说,一切都在酒中,一切都在图中!希望博客园一直稳住,不要破图了!),没啥技术含量的,所以不是小白的同学也可以关贴了(也可以直接翻到文末看看)!小白就接着看吧!→♥
先用VMware-workstation 15.5 创建虚拟机(VMware是收费的,别问我哪里搞到的,我是不会告诉你的,因为你懂的!):
CPU个数、核数以及内存大小要视自己的需要而定;比如Gitlab服务器一般都需要4G以上的内存。
网络模式也要视自己的情况而定,比如我的路由器内置了DHCP功能的,能够分配跟宿主机同级的IP地址并进行上网,这种情况我选择桥接模式可能会更好些,让宿主机与虚拟机处于相同级别,更像企业真实环境的局域网情况。关于这几种网络模式的区别,就自己去学了,将来有时间可能会再详细出一篇文章讲!现在继续...
虚拟机的磁盘大小后期是可以更改的,所以这里不用紧张才20G,先按默认的大小创建!当然如果你确定会有很多数据,那一开始设置大一点也没事!
选定好我们的CentOS8.1操作系统ISO文件作为后面的系统安装介质(光盘),如果这一步忘了选定安装介质ISO文件,下一步还能可能过“编辑虚拟机设置”进行选择!
首屏安装界面默认选中的是第二项“Test this media & Install CentOS Linux 8”,即检测安装介质并安装CentOS 8,检测的目的是看看安装包有没有被别人篡改过,比如植入后门、病毒等,如果不是生产服务器的安装,可以不用检测安装介质,直接上下方向键选择上面的“Install CentOS Linux 8”,因为安装介质检测过程可能会花掉很长的时间,机器慢一点的半个小时以上都有可能!
这是我建议的配置顺序:先配网络→再配日期时间(NTP服务器要用到前面的网络)→再配磁盘分区和文件系统→再配操作系统支持的语言→最后配要安装的软件包,下面我将按这个顺序来截图记录配置过程:
如果你设置的密码不够强大,但你坚持要用,那得按两次左上角的Done按钮!
如果在软件安装包的选择过程中选的是带图形界面的Server with GUI,那么启动后还有几个页面步骤让你做协议认可和初始化设置用的,这里就不切截图了!
最后一些常见问题的解答:
问题1:桥接模式(自动)安装完后,相同网段Linux主机ping宿主机的IP没有效果?
可能原因:宿主机防火墙开启状态,并且没有将ICMPv4协议配置成可以入站;
问题2:桥接模式(自动)安装完后,相同网段宿主机ping Linux主机的IP没有效果?
可能原因:Linux主机防火墙开启状态,并且没有将ICMPv4协议配置成可以入站;
Linux允许ping设置:
1) 临时允许ping的操作命令为:
# echo >/proc/sys/net/ipv4/icmp_echo_ignore_all
2) 永久允许ping的配置方法为:在 /etc/sysctl.conf系统控制配置文件中增加一行 net.ipv4.icmp_echo_ignore_all=0 修改完成保存后,执行sysctl -p使新配置生效:
# vim /etc/sysctl.conf
# systctl -p
net.ipv4.icmp_echo_ignore_all=0
此时可以尝试再从宿主机ping一下Linux主机,如果还没效果,可以尝试临时停止一下防火墙:
使用# systemctl stop firewalld.service 命令或 # service iptables stop 命令来停止防火墙:
# systemctl stop firewalld.service
# service iptables stop
然后可以再次尝试再从宿主机ping一下Linux主机,如果能通,那说明之前不能通是防火墙在阻止,配置防火墙允许ping通过:
# iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
# iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
生产服务器上一般是不允许ping的,如何禁掉之前开启的ping功能呢?
系统参数配置层面禁止ping:
1) 临时禁止ping的操作命令为:
# echo >/proc/sys/net/ipv4/icmp_echo_ignore_all
2) 永久禁止ping的配置方法为:在 /etc/sysctl.conf系统控制配置文件中增加一行(原来有的话直接修改) net.ipv4.icmp_echo_ignore_all=1 修改完成后执行sysctl -p使新配置生效
# vim /etc/sysctl.conf
# systctl -p
net.ipv4.icmp_echo_ignore_all=1
防火墙层面禁止ping:
# iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
如果上述禁用ping的设置都没有起作用,可以通过 # iptables -L 查看一下是不是还有其他的icmp防火墙设置在起作用,例如可能还有
# iptables -A INPUT -p icmp -j ACCEPT
# iptables -A OUTPUT -p icmp -j ACCEPT
这样的设置在起作用,将它们DROP掉就行了:
# iptables -A INPUT -p icmp -j DROP
# iptables -A OUTPUT -p icmp -j DROP
问题3:使命令如何设置服务器静态网络信息,如IP?
RHEL 8/CentOS 8版本开始network.service默认没有安装,默认只使用NetworkManager作为网络管理工具,而且RedHat官方指出在后续的版本中会彻底不支持network.service!!!
首先通过命令:# nmcli connection show 查看服务器网卡信息(nmcli→NetworkManager Client):
# nmcli connection show
NAME UUID TYPE DEVICE
ens33 d041f8bf-dfef-45e9--466170b5c09f ethernet ens33
然后到Linux的网卡配置目录 /etc/sysconfig/network-scripts/ 找到相应网卡的配置文件并用vi或vim打开,例如:
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
将BOOTPROTO的值由dhcp改为static,即静态分配;
在文档最后新起一行添加IPADDR={你的IP地址},例如IPADDR=”192.168.0.104”
在文档最后新起一行添加PREFIX={你的子网掩码前缀},例如PREFIX=”24”
在文档最后新起一行添加GATEWAY={你的网关地址},例如GATEWAY=”192.168.0.1“
保存配置变更,通过下面命令重启网卡(其中ens33为网卡设备名称):
# nmcli con up ens33
# systemctl restart NetworkManager
重启完后,可以通地下面命令查看网卡信息:
# ifconfig
问题4:使用命令怎么设置DNS地址?
同样在Linux的网卡配置目录 /etc/sysconfig/network-scripts/ 下找到网卡配置文件并用vi或vim打开,在最后新起行来添加你的DNS配置即可:
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
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="ens33"
UUID="d041f8bf-dfef-45e9-8055-466170b5c09f"
DEVICE="ens33"
ONBOOT="yes"
DNS1="192.168.1.3"
DNS2="192.168.10.105"
我们行末加了两个DNS服务器地址配置,保存退出后,使用# systemctl restart NetworkManager 重启一下网络:
# systemctl restart NetworkManager
最后使用vi或vim查看一下NetworkManager最终生成的DNS解析配置文件:
# cat /etc/resolv.conf
# Generated by NetworkManager
search DHCP HOST
nameserver 10.198.1.1
nameserver 114.114.114.114
nameserver 192.168.1.3
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 192.168.10.105
可以看到NetworkManager最终生成了4条DNS服务器配置,其中前两条是我们系统安装时指定的,后面两条是刚才在网卡配置文件末尾添加的,但有个提示说 libc解析器不支持超过3个域名服务器,因此第4条DNS配置可能无法识别,也就是无效咯!search DHCP HOST 表示域名查询顺序为先搜DHCP服务器,再搜本地HOST本地配置。
提醒下:不要试图通过直接修改 /etc/resolv.conf 文件来变更DNS的配置,你会失望的,它不会生效!NetworkManager重启或系统重启后又会被NetworkManager生成的最终配置信息覆盖!
问题 5:图形界面的Linux能不能启动成只有命令行的?
答案是可以的啊!从CentOS 7开始系统一共有5个启动级别或叫运行级别(CentOS7之前有7个):
- shutdown.target:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- emergency.target:紧急维护单用户状态,root权限,用于系统维护,禁止远程登陆
- rescue.target:多用户状态(没有NFS)
- multi-user.target:完全的多用户状态(有NFS),登陆后进入控制台命令行模式(软件安装包选择过程中选择无图形界面的Server就是这个级别)
- graphical.target:X11控制台,登陆后进入图形GUI模式(软件安装包选择过程中选择带图形界面的Server with GUI就是这个级别)
一般正常情况下我们只会用到multi-user.target和graphical.target,特殊维护场景才会打到emergency.target级别,那么如何切换运行级别呢?在终端界面(即命令行界面)运行 # systemctl isolate XXX 就可以了(XXX就是运行级别):
# systemctl isolate graphical.target
接着查看一下当前运行级别(运行级别新旧对照表见文末):
# runlevel
注意1:如果软件安装包选择的是Server(即运行级别为multi-user.target),那么你 # systemctl isolate graphical.target 是没有效果的,因为没有装图形界面相着的组件包!你强行# systemctl isolate graphical.target 不会报错,但也不会有效果!
注意2:上述命令 # systemctl isolate XXX 只是临时将运行级别打到XXX级,你下次重启系统后,它还是会运行到安装配置时所选定的级别!如果要永久更改启动级别,需要通下面的命令修改默认启动级别 :
# systemctl set-default graphical.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/graphical.target.
可以看到上述命令是通过重建软链接文件 /etc/systemd/system/default.target 所指向的目标运行级别配置文件来达到配置变更的!
接着查看一下默认运行级别:
# systemctl get-default
graphical.target
另外要说明一下,旧版的 /etc/inittab 配置文件在CentOS 8中已经不起作用了,废弃了!
# cat /etc/inittab
# inittab is no longer used.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel
# graphical.target: analogous to runlevel
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
最后放一下CentOS 7之前的init runlevels与CentOS 7之后的systemctl targets的对照表:
init runlevels | systemctl targets | 说明 |
0 | shutdown.target | 系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 |
1 | emergency.target | 紧急维护单用户状态,root权限,用于系统维护,禁止远程登陆 |
2 | rescue.target | 多用户状态(没有NFS) |
3 | multi-user.target | 完全的多用户状态(有NFS),登陆后进入控制台命令行模式(软件安装包选择过程中选择无图形界面的Server就是这个级别) |
4 | 无 | 系统未使用,保留 |
5 | graphical.target | X11控制台,登陆后进入图形GUI模式(软件安装包选择过程中选择带图形界面的Server with GUI就是这个级别) |
6 | 无 | 系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动 |
给Linux小白的CentOS8.1基本安装说明的更多相关文章
- linux小白成长之路6————安装Java+Apache(httpd)+Tomcat
[内容指引] 安装Java环境: 查看JDK版本: 安装Apache(httpd); 安装Tomcat: 设置服务开机启动. 1.安装Java环境 指令: yum intall java-1.8.0* ...
- linux小白成长之路5————安装Docker
1.安装docker 命令: yum -y install docker   2.启动docker 命令: systemctl start docker.service 3.查看docker版本 ...
- linux小白成长之路10————SpringBoot项目部署进阶
[内容指引] war包部署: jar包部署: 基于Docker云部署. 一.war包部署 通过"云开发"平台初始化的SpringBoot项目默认采用jar形式打包,这也是我们推荐的 ...
- 【转载】Linux小白福利:《超容易的Linux系统管理入门书》(三)在虚拟机上安装Linux
本篇是Linux小白最佳实践第3篇,目的就是让白菜们自己动手安装个Linux玩玩.如果你是Linux小白,请务必亲自动手来安装.不想安装多个操作系统的,虚拟机是最佳选择,一台电脑上可以用虚拟机安装7. ...
- Linux下非root用户如何安装软件
Linux下非root用户如何安装软件 从windows转移到Linux的用户最开始总会有各种不适,因为这种不适最终放弃linux的不在少数.对于这类人只能说可惜,还没有领略到linux的美好就过早放 ...
- ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
一.前言 最近一段时间自己主要的学习计划还是按照毕业后设定的计划,自己一步步的搭建一个前后端分离的 ASP.NET Core 项目,目前也还在继续学习 Vue 中,虽然中间断了很长时间,好歹还是坚持 ...
- 【Linux学习笔记】Linux-CentOS下安装Redis
虚机装了个Linux,尝试安装了一下Redis这款NoSQL数据库玩玩,作为Linux小白,我安装的是有可视化桌面的CentOS,所以不是纯命令行操作,怎么方便怎么来嘛~ 1.官网下载Redis到指定 ...
- CentOS8 AnolisOS8 yum安装 No match for argument: htop Error: Unable to find a match: htop
这里写自定义目录标题 CentOS8 AnolisOS8 yum安装失败 安装失败原因 阿里云官方镜像主页 正确的操作步骤 学习交流 My Blog 技术交流 CentOS8 AnolisOS8 yu ...
- Linux环境搭建-在虚拟机中安装Centos7.0
最近在空闲时间学习Linux环境中各种服务的安装与配置,都属于入门级别的,这里把所有的学习过程记录下来,和大家一起分享. 我的电脑系统是win7,所以我需要在win7上安装一个虚拟机-VMware,然 ...
随机推荐
- iOS中的系统目录(Documents、tmp、Library)、RunLoop的一些知识点
学习内容 欢迎关注我的iOS学习总结--每天学一点iOS:https://github.com/practiceqian/one-day-one-iOS-summary 实现轮播图需要注意的地方 需要 ...
- 接口testing简介
一.基础介绍 1.什么是接口 我们常说的接口一般指2种1)API:应用程序编程接口 2)GUI:图形用户界面(接口) 这里我们主要说API——接口测试 2.接口测试的目的 测试接口的正确性和稳定性 ...
- @vue/cli 4.0.5 学习记录
1. Vue CLI (@vue/cli) 是一个全局安装的 npm 包,提供了终端里的 vue 命令.Vue CLI 插件的名字以 @vue/cli-plugin- (内建插件) 或 vue-cli ...
- Json转化与ExtJS树(后台处理)
一.JSON对格式化数据的操作: 1.导入依赖包: import org.json.JSONArray; import org.json.JSONException; import org.json. ...
- npm run build 时 报 __webpack_public_path__ = window.webpackPublicPath; 中的windows未定义
原本 webpack.js在webpack.config.babel.js同目录下,在app.jsx中引用,用mac打包没问题,但是window就报window未定义,改到src和app.jsx同目录 ...
- python基本数据类型;字符串及其方法三:
###################判断类型################### ######################################################### ...
- HDU3829 Cat VS Dog
题目链接:https://vjudge.net/problem/HDU-3829 题目大意: 有\(P\)个小孩,\(N\)只猫,\(M\)只狗.每个小孩都有自己喜欢的某一只宠物和讨厌的某一只宠物(其 ...
- php 序列化
PHP serialize() 函数 serialize() 函数用于序列化对象或数组,并返回一个字符串. serialize() 函数序列化对象后,可以很方便的将它传递给其他需要它的地方,且其类型和 ...
- Python面向对象的特征跟私有属性
面向对象的三大特征 继成.封装.多态: 继承:一个类可以继承一个或多个类,被继承的类叫做父类,继承的类叫做子类 封装:将数据和方法放在了一个类中就构成了封装 多态:指的一类事物有多重形态,一个抽象类 ...
- 利用Nginx设置跨域的方式
1.服务端可控,添加响应头 2.服务端不可控.通过Nginx反向代理 3.服务端不可控.通过Nginx反向代理添加响应头 第一种方法.服务端可控时,可以在服务器端添加响应头(前端+后端解决) 浏览器地 ...