写在前面的话:用过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 0>/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 1>/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-8055-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 3 5
注意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 3 # graphical.target: analogous to runlevel 5 # # 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,否则不能正常启动 |