Linux基础
1 网络管理
1.1 网卡命名
1.1.1 传统网卡命名机制
传统命名:
以太网eth[0,1,2,…]
wlan[0,1,2,…]
1.1.2 回归传统命名
//修改网卡配置文件
[root@syb ~]# cd /etc/sysconfig/network-scripts/
[root@syb network-scripts]# ls
ifcfg-ens160
[root@syb network-scripts]# mv ifcfg-ens160 ifcfg-eth0
[root@syb network-scripts]# vim ifcfg-eth0
TYPE="Ethernet"
BOOTPROTO="static"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR=192.168.200.152
PREFIX=24
GATEWAY=192.168.200.2
DNS1=114.114.114.114
/编辑/etc/default/grub配置文件,在以GRUB_CMDLINE_LINUX开头的行内rhgb的前面加上net.ifnames=0 biosdevname=0
[root@syb ~]# vi /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
//为grub2生成其配置文件
[root@syb ~]# grub2-mkconfig -o /etc/grub2.cfg
Generating grub configuration file ...
done
//重启系统
[root@syb ~]# reboot
1.2 网络管理常用常用命令
1.2.1 ifconfig命令
ifconfig命令,查看当前处于活动状态的所有网络接口(网卡)的信息,也可以临时修改网络接口(网卡)的配置。
//查看当前处于活动状态的所有网络接口
[root@syb ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.200.152 netmask 255.255.255.0 broadcast 192.168.200.255
inet6 fe80::20c:29ff:fe0e:69ba prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:0e:69:ba txqueuelen 1000 (Ethernet)
RX packets 4449 bytes 369986 (361.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6693 bytes 1392503 (1.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
//仅查看eth0网卡状态
[root@syb ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.200.152 netmask 255.255.255.0 broadcast 192.168.200.255
inet6 fe80::20c:29ff:fe0e:69ba prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:0e:69:ba txqueuelen 1000 (Ethernet)
RX packets 5892 bytes 488710 (477.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8900 bytes 1841929 (1.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
//关闭网卡
[root@syb ~]# ifconfig lo down
[root@syb ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.200.152 netmask 255.255.255.0 broadcast 192.168.200.255
inet6 fe80::20c:29ff:fe0e:69ba prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:0e:69:ba txqueuelen 1000 (Ethernet)
RX packets 6789 bytes 562242 (549.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10255 bytes 2104639 (2.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
//开启网卡
[root@syb ~]# ifconfig lo up
[root@syb ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.200.152 netmask 255.255.255.0 broadcast 192.168.200.255
inet6 fe80::20c:29ff:fe0e:69ba prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:0e:69:ba txqueuelen 1000 (Ethernet)
RX packets 7325 bytes 606810 (592.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 11036 bytes 2260053 (2.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
//查看所有网卡状态信息, 包括禁用和启用
[root@syb ~]# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.200.152 netmask 255.255.255.0 broadcast 192.168.200.255
inet6 fe80::20c:29ff:fe0e:69ba prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:0e:69:ba txqueuelen 1000 (Ethernet)
RX packets 8617 bytes 713569 (696.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12990 bytes 2644421 (2.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
1.2.2 ip命令
ip命令,查看所有网络接口的信息,也可临时修改网卡配置。
//语法:ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT:
link 网络设备
addr 协议地址(IPv4/IPv6)
route 路由表
OPTIONS
-s 查看详细信息
COMMAND
show 显示信息
set 设置
add 添加
del 删除
ip link show
//查看网络设备属性
[root@syb ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:0e:69:ba brd ff:ff:ff:ff:ff:ff
//显示报文统计信息
[root@syb ~]# ip -s link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:0e:69:ba brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
1714673 20728 0 0 0 0
TX: bytes packets errors dropped carrier collsns
6316469 31376 0 0 0 0
**ip link set **
//启用或禁用网络设备
[root@syb ~]# ip link set lo down
[root@syb ~]# ip link set lo up
ip addr show
//查看网络接口协议地址(IPv4/IPv6)信息
[root@syb ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:0e:69:ba brd ff:ff:ff:ff:ff:ff
inet 192.168.200.152/24 brd 192.168.200.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe0e:69ba/64 scope link
valid_lft forever preferred_lft forever
ip addr add
//给网卡添加IP地址
[root@syb ~]# ip addr add 192.168.200.153/24 dev eth0
[root@syb ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:0e:69:ba brd ff:ff:ff:ff:ff:ff
inet 192.168.200.152/24 brd 192.168.200.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 192.168.200.153/24 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe0e:69ba/64 scope link
valid_lft forever preferred_lft forever
ip addr del
//删除网卡的IP地址
[root@syb ~]# ip addr del 192.168.200.153/24 dev eth0
[root@syb ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:0e:69:ba brd ff:ff:ff:ff:ff:ff
inet 192.168.200.152/24 brd 192.168.200.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe0e:69ba/64 scope link
valid_lft forever preferred_lft forever
1.2.3 ss命令
ss是一种网络状态查看工具,取代netstat。
//语法:ss [options]
//常用的options:
-n:数字格式
-t:tcp协议相关
-u:udp协议相关
-l:listen状态的连接
-p:相关的程序及pid
-a:所有
//常见的state:
//tcp finite state machine:有限状态机
LISTENING:监听
ESTABLISHED:已建立的连接
//以数字格式查看tcp相关信息
[root@syb ~]# ss -ant
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
ESTAB 0 52 192.168.200.152:22 192.168.200.1:58078
LISTEN 0 128 [::]:22 [::]:*
//以数字格式查看监听的tcp端口
[root@syb ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
//以数字格式查看监听的tcp端口和进程号
[root@syb ~]# ss -antlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1021,fd=5))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1021,fd=7))
//常见端口
http 80/tcp
https 443/tcp
ssh 22/tcp
ftp 20,21/tcp
mysql 3306/tcp
rsync 873/rsync
redis 6379/tcp
1.2.4 netstat命令
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
//语法:netstat [options]
//常用的options:
-r:显示路由表
-n:数字格式
-t:tcp协议连接
-u:udp协议连接
-l:listen状态的连接
-p:相关的程序及pid
-a:所有
//显示路由表
[root@syb ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default _gateway 0.0.0.0 UG 0 0 0 eth0
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
//以数字方式显示路由表
[root@syb ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.200.2 0.0.0.0 UG 0 0 0 eth0
192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
//显示建立的tcp连接
[root@syb ~]# netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 52 syb:ssh 192.168.200.1:58078 ESTABLISHED
//显示udp连接
[root@syb ~]# netstat -u
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
//常用选项
[root@syb ~]# netstat -anltup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1021/sshd
tcp 0 52 192.168.200.152:22 192.168.200.1:58078 ESTABLISHED 1603/sshd: root [pr
tcp6 0 0 :::22 :::* LISTEN 1021/sshd
1.3 网卡配置文件
网卡(网络接口),其配置文件的路径是 /etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME。
TYPE="Ethernet" 接口类型
BOOTPROTO="static" ip获取的方式
NAME="eth0" 连接名称
DEVICE="eth0" 关联的设备名称
ONBOOT="yes" 在系统引导时是否自动激活网络接口
IPADDR=192.168.200.152 固定ip地址
PREFIX=24 子网掩码
GATEWAY=192.168.200.2 默认网关
DNS1=114.114.114.114 第一个DNS服务器指向
2 磁盘管理
2.1 磁盘命名方式
传统IDE接口硬盘:/dev/hd[a-z]
SCISI接口硬盘:/dev/sd[a-z]
**虚拟化硬盘:/dev/vd[a-z]**
2.2 磁盘分区
分区之前, 需要先给虚拟机添加一块磁盘,以便于我们做后续的实验vmware虚拟机,请按如下进行操作:
1.找到对应虚拟主机点击右键, 选择设置
2.在硬件向导里面点击添加按钮, 在硬件类型中选中“硬盘”, 点击下一步
3.磁盘类型选择默认, 然后创建新虚拟磁盘, 调整大小(不要勾选立即分配空间)
4.最后点击下一步, 完成即可
目的是为了方便管理
[root@syb ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.32.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x6b53fa52 的新 DOS 磁盘标签。
//创建主分区
命令(输入 m 获取帮助):n
分区类型
p 主分区 (0个主分区,0个扩展分区,4空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1):
第一个扇区 (2048-41943039, 默认 2048):
上个扇区,+sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +5G
创建了一个新分区 1,类型为“Linux”,大小为 5 GiB。
//创建拓展分区
命令(输入 m 获取帮助):n
分区类型
p 主分区 (1个主分区,0个扩展分区,3空闲)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):e
分区号 (2-4, 默认 2):
第一个扇区 (10487808-41943039, 默认 10487808):
上个扇区,+sectors 或 +size{K,M,G,T,P} (10487808-41943039, 默认 41943039):
创建了一个新分区 2,类型为“Extended”,大小为 15 GiB。
//创建逻辑分区
命令(输入 m 获取帮助):n
所有主分区的空间都在使用中。
添加逻辑分区 5
第一个扇区 (10489856-41943039, 默认 10489856):
上个扇区,+sectors 或 +size{K,M,G,T,P} (10489856-41943039, 默认 41943039): +10G
创建了一个新分区 5,类型为“Linux”,大小为 10 GiB。
//查看分区创建
命令(输入 m 获取帮助):p
Disk /dev/sda:20 GiB,21474836480 字节,41943040 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xcb8be735
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 2048 10487807 10485760 5G 83 Linux
/dev/sda2 10487808 41943039 31455232 15G 5 扩展
/dev/sda5 10489856 31461375 20971520 10G 83 Linux
//保存分区
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
//刷新分区
[root@syb ~]# partprobe /dev/sda
//查看分区
[root@syb ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 5G 0 part
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 10G 0 part
sr0 11:0 1 7.9G 0 rom /mnt
nvme0n1 259:0 0 50G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 49G 0 part
├─rhel-root 253:0 0 45G 0 lvm /
└─rhel-swap 253:1 0 4G 0 lvm [SWAP]
2.3磁盘格式化
使用mkfs命令格式化磁盘,创建文件系统
//mkfs常用的选项有
-b //设定数据区块占用空间大小,目前支持1024、2048、4096 bytes每个块。
-t //用来指定什么类型的文件系统,可以是ext3,ext4, xfs
-i //设定inode的大小
-N //设定inode数量,防止Inode数量不够导致磁盘不足
-L //预设该分区的标签label
//格式化整个sdb磁盘为ext4文件系统
[root@syb ~]# mkfs.ext4 /dev/sda1
mke2fs 1.45.4 (23-Sep-2019)
创建含有 1310720 个块(每块 4k)和 327680 个inode的文件系统
文件系统UUID:accbd790-7939-4b47-b32d-2b0b18675fc8
超级块的备份存储于下列块:
32768, 98304, 163840, 229376, 294912, 819200, 884736
正在分配组表: 完成
正在写入inode表: 完成
创建日志(16384 个块)完成
写入超级块和文件系统账户统计信息: 已完成
//也可以使用-t指定方式创建ext4文件系统
[root@syb ~]# mkfs -t ext4 /dev/sda2
/也可以格式化sda1分区为xfs文件系统
[root@syb ~]# mkfs.xfs /dev/sda1
2.4 磁盘挂载
挂载分区前需要创建挂载点, 挂载点以目录形式出现
如果往挂载点目录写入数据, 实际上会写入到该分区
挂载点建议是空目录, 不是也不影响挂载分区的使用,但是会隐藏原有的文件
2.4.1 临时挂载磁盘
命令:mount挂载磁盘,实质为文件系统指定访问入口
mount -t //指定文件系统挂载分区,如ext3,ext4, xfs
mount -a //重新读取/etc/fstab配置文件的所有分区
mount -o //指定挂载参数
//fstab被损坏情况下,让只读文件系统可写(正常情况下不使用)
[root@syb ~]#mount -o rw,remount /
//挂载/dev/sdb1至db1目录
[root@syb ~]# mkdir /syb
[root@syb ~]# mount -o xfs /dev/sda1 /syb
2.4.2 永久挂载磁盘
//使用blkid命令获取各分区的UUID
[root@syb ~]# blkid /dev/sda1
/dev/sda1: UUID="accbd790-7939-4b47-b32d-2b0b18675fc8" TYPE="ext4" PARTUUID="cb8be735-01"
//可以把下面这行写到/etc/fstab中,永久挂载, 开机自动挂载
[root@syb ~]# vi /etc/fstab
UUID="accbd790-7939-4b47-b32d-2b0b18675fc8" /syb ext4 defaults
0 0
//加载fstab配置文件, 同时检测语法是否有错误
[root@syb ~]# mount -a
3 计划任务管理
什么是计划任务,计划任务类似于我们平时生活中的闹钟。
在Linux
系统的计划任务服务crond
可以满足周期性执行任务的需求。
crond
进程每分钟会处理一次计划任务, 计划任务主要是做一些周期性的任务目前最主要的用途是定时备份数据
时间的配置
分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(0-7) 任务
*/2没隔两分钟
1-10第一到第十分钟
1,10第一和第十分钟
//编写计划任务
[root@syb ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
//查看已经写的计划任务
[root@syb ~]# crontab -l
*/2 * * * * /bin echo syb
4.日志管理
特性:
多线程
支持UDP,TCP,SSL,TLS协议
支持使用MySQL、PGSQL和Oracle实现日志存储
默认没启用此功能,需要加载rsyslog支持此类存储方式的模块,并配置其可使用mysql存储日志
强大的过滤器,可实现过滤系统日志信息中的任何部分
自定义输出格式
日志级别:
debug #程序或系统的调试信息
info #一般信息
notice #不影响正常功能,需要注意的消息
warning/warn #可能影响系统功能,需要提醒用户的重要事件
err/error #错误信息
crit #紧急,比较严重的
alert #必须马上处理的
emerg/panic #会导致系统不可用的
* # *表示所有的日志级别
none #跟*相反,表示啥也没有
5.httpd源码安装三部曲
1. ./configure --prefix=安装路径 --with
2. make编译
3.make install 安装
//从官网上下载三个包
[root@syb ~]# wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.48.tar.gz
[root@syb ~]# wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.7.0.tar.gz
[root@syb ~]# wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
[root@syb ~]# ls
anaconda-ks.cfg apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.48.tar.gz
//解压
[root@syb ~]# tar xf httpd-2.4.48.tar.gz
[root@syb ~]# tar xf apr-1.7.0.tar.gz
[root@syb ~]# tar xf apr-util-1.6.1.tar.gz
[root@syb ~]# ls
anaconda-ks.cfg apr-1.7.0 apr-1.7.0.tar.gz apr-util-1.6.1 apr-util-1.6.1.tar.gz httpd-2.4.48 httpd-2.4.48.tar.gz
[root@syb apr-1.7.0]# vi configure
cfgfile=${ofile}T
trap "$RM \"$cfgfile\"; exit 1" 1 2 15
# $RM "$cfgfile" //删除或者注释这一行
//编译安装apr-1.7.0
[root@syb apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@syb apr-1.7.0]# make && make install
//编译安装apr-util-1.6.1
[root@syb apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[root@syb apr-util-1.6.1]# make && make install
//编译安装httpd-2.4.28
[root@syb httpd-2.4.48]# ./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
[root@syb httpd-2.4.48]# make && make install
//开启服务
[root@syb ~]# /usr/local/httpd/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe0e:69ba%eth0. Set the 'ServerName' directive globally to suppress this message
//查看端口
[root@syb ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
//访问