当前位置: 首页 > news >正文

第1周

1 linux系统安装+远程登录

1.1 系统安装

1.1.1 常见的linux内核

  • Redhat家族
    • RHEL(红帽商业版)
      • Centos/Rokey
    • Fedora
    • OpenEuler
  • Debian家族
    • Ubuntu
      • openKylin
    • Kali

1.1.2 系统安装

1.1.3 命令行界面/终端/控制台的几种形式

  • 物理终端:键盘+显示器,直接连接在计算机上的物理输入输出设备
  • 虚拟终端:操作系统(linux内核)模拟的多用户登录界面,通过Ctrl+Alt+F1~F7进行切换,适合图形化界面异常后切换终端进行调试
  • 伪终端:软件模拟的终端(如 xshell、Mobaxterm、powershell等终端模拟器),用于远程或图形界面下的终端窗口。

1.1.4 不同终端的承载文件名(命令tty查看)

linux中一切皆文件,所以不同终端对应的文件名表示如下:


  • 控制台终端(早起的管理员终端):/dev/console
  • 串行终端(通过串口连接到主机的终端):/dev/ttyS数字
  • 虚拟终端tty: /dev/tty数字
  • 伪终端pty:/dev/pts数字

1.2 远程登录

使用任意远程管理工具通过ssh协议连接,本文使用Mobaxterm;或是直接执行“ssh 用户@主机地址”命令进行登录


  • 首先确认安装linux操作系统时是否默认安装了ssh服务,如果未安装如下命令安装
sudo apt update && sudo apt install openssh-server  # ubuntu
sudo yum install openssh-server  # Rokey/CentOS
  • 确保ssh服务开启,并设置开机自启
sudo systemctl status ssh
sudo systemctl start ssh
sudo systemctl enable ssh  # (Debian/Ubuntu)sudo systemctl start sshd
sudo systemctl enable sshd  # (Rokey/CentOS)
  • 尽量关闭防火墙或是放行22端口
sudo ufw disbale  # Debiansudo systemctl stop firewalld  # Redhat
sudo systemctl disable firewalld
sudo ufw allow ssh  # Debiansudo firewall-cmd --add-service=ssh --permanent  # RHEL
sudo firewall-cmd --reload
  • 查询主机ip后使用Moba远程连接,可配置定制的用户的信息实现永久登录
    image
    image

1.3 调整终端命令行提示符显示样式

命令行提示符和变量PS1相关,修改PS1可调整提示符的颜色、显示信息等

PS1常用的符号和含义

符号 含义与功能
\u 显示当前用户名
\h 显示主机名(第一个.之前的短名称)
\H 显示完整的主机名
\w 显示当前工作目录的完整路径(用户家目录会缩略为 ~显示)
\W 显示当前工作目录的最后一级目录名
\$ 根据用户权限显示提示符:root用户为 #,普通用户为 $
\t 显示24小时制格式的当前时间(HH:MM:SS)
\T 显示12小时制格式的当前时间
\@ 显示12小时制带AM/PM的当前时间
\d 显示日期,格式为 "Weekday Month Date"(例如 "Mon May 06")
\n 换行符,用于将提示符分成多行显示
\# 显示当前命令的序号(在历史记录中是第几条命令)
\! 显示该命令在历史记录中的编号
\v 显示 Bash 的版本信息
\s 显示当前运行的 Shell 的名字(如 "bash")
\[\] 非常重要:用于包围任何不打印的字符序列(如颜色代码)。确保Bash正确计算提示符的可见长度,避免行编辑错乱。

  • 临时修改
# 直接在命令行下修改PS1变量值
[wch@wch-rokey-9 ~]$ echo $PS1  # 查看PS1变量值
[\u@\h \W]\$
[root@wch-rokey-9 ~]# PS1="\[\033[01;35m\]\D{%H:%M:%S}\[\033[00m\]-\[\033[01;34m\][当前目录:\w]\[\033[00m\]\n\[\033[01;32m\][\u@\h]\[\033[00m\]\[\033[01;93m\]\$ \[\033[00m\]"  # 直接命令行下修改PS1,但临时有效果,新开一个终端后失效
10:45:49-[当前目录:~]
[root@wch-rokey-9]$
  • 永久修改
# 在.bashrc文件中修改
[root@wch-rokey-9 ~]# echo "PS1='\[\033[01;35m\]\D{%H:%M:%S}\[\033[00m\]-\[\033[01;34m\][当前目录:\w]\[\033[00m\]\n\[\033[01;32m\][\u@\h]\[\033[00m\]\[\033[01;93m\]\$ \[\033[00m\]'" >> .bashrc  # 把自定义的PS1新增到.bashrc文件中
[root@wch-rokey-9 ~]# source .bashrc  # 让bashrc文件立即生效
10:51:09-[当前目录:~]
[root@wch-rokey-9]$

2 linux系统基础命令+文件操作命令

2.1 常见命令

2.1.1 查看当前登录用户信息的基础命令

last  # 显示上次登录的用户列表信息
who  # 显示当前所有登录到系统的用户信息
whoami  # 查看当前登录的用户
who am i  # 仅显示当前终端登录系统的用户名+终端+登录时间+来源主机,‘i’可以是任意字符,等同于who -m
[wch@wch-rokey-9 ~]$ whoami
wch
[wch@wch-rokey-9 ~]$ who am i
wch      pts/1        2025-09-03 08:51 (10.0.0.1)
[wch@wch-rokey-9]$ who
root     tty1         2025-09-03 09:45
wch      pts/0        2025-09-03 10:54 (10.0.0.1)
id  # 查看当前用户的所有信息
su 用户  # 切换用户,切换后保存上一个用户的信息
su - 用户  # 切换一个全新的用户,切换后在新用户的家目录下
w  # 显示当前系统登录的用户和活动状态
[wch@wch-rokey-9 ~]$ w09:32:04 up  2:26,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
wch      pts/0     二10   22:09m  0.06s  0.06s sshd: wch [priv]
wch      pts/1     08:51    2.00s  0.03s  0.00s w

2.1.2 简单的shell命令

Shell:操作系统和应用程序之间的命令翻译工具


echo $SHELL  # 查看当前系统的shell
cat /etc/shells  # 查看当前系统支持的shell
[wch@wch-rokey-9 ~]$ echo $SHELL
/bin/bash
[wch@wch-rokey-9 ~]$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash/bin/bash 脚本  # 执行脚本文件

2.1.3 变量相关命令

echo $变量名  # 查看变量
env  # 查看系统变量
变量名="/path/to/file"  # 临时定义变量

2.1.4 查看系统信息的命令

lscpu  # 查看cpu
free  # 查看内存
arch  # 查看系统架构
uname -r  # 查看内核信息
cat /etc/redhat-release  # 查看系统发行版本信息(Rokey)
cat /etc/os-release      # 查看系统发行版本信息
cat /etc/lsb-release      # 查看系统发现版本(Ubuntu)

2.1.5 进程基本命令查看

# PS
ps aux  # 常见搭配,列出所有进程,并列出属主
ps -ef  # 常见搭配,列出所有进程,并列出属主
ps -eFH  # 详细格式列出所有进程
pstree  # 树状图的形式直观的显示进程和子进程

2.1.6 历史命令

# 命令行上下箭头可找历史命令
ctrl+p  # 显示上一条命令,上箭头一个效果
history  # 显示历史命令
history -c  # 清除历史命令
!!  # 重复执行上一条命令
!n      # 执行history的第n条命令
!string  # 重复前一个以“string”开头的命令
ctrl+r  # 进入历史命令的模式下搜索命令
ctrl+g  # 退出搜索模式

2.1.7 命令行快捷键

ctrl+A  # 光标回行首
ctrl+E  # 光标回行尾ctrl+k  # 删除光标到行尾内容
ctrl+u  # 删除光标到行首内容
ctrl+y  # 粘贴删除的内容
ctrl+c  # 终止执行的命令
Esc+b/Alt+b    # 移动到单词开头
Esc+f/Alt+f    # 移动到单词结尾

2.1.8 命令帮助

# whatis借助linux内部的命令数据库文档显示命令的简单描述# man命令可以获取对应命令的详细手册# --help绝大多数命令都支持该选项,显示对应命令的基本用法# info命令:类似man,但显示的结果更加结构化,包含更多示例(看发行版)

2.2 文件与目录命令

ls  # 不加目录默认显示当前目录下文件,加目录显示该目录下文件信息
tree  dir  # 以树形结构显示dir目录结构
mkdir dir  # 创建dir目录
mkdir -p /dir/dir1/dir2  # 递归创建目录
cd dir  # 进入到dir目录
cd ~  # 进入到家目录
cd -  # 进入到上一次访问的目录下
cd .  # 进入当前所在目录
cd ..  # 进入上一级目录
pwd  # 打印当前所在绝对路径
cp sour_file dest_file  # 文件复制
cp file dir1  # 把文件复制到目录,文件可以是多文件
cp -r dir1 dir2  # 复制目录
mv file1 file2  # 同目录下移动相当于重命名,不同目录则实现文件转移
touch file1  # 创建文件
rm -rf  file|dir  # 删除文件|目录;-f是强制删除,-r是删目录

cat/tac/rev命令


cat -n [file]  # 查看文件内容,显示行号
cat -A [file]  # 显示所有不可见字符的可见形式
cat -E [file]  # 显示结尾符号$
cat -b [file]  # 空行不显示行号
cat -s [file]  # 压缩连续空行为一行
# tac命令逆向显示文件内容,cat的反义
# rev命令逆向显示文件内容,区别tac,rev行内容也逆向

head/tail命令


head -n N [file]  # 显示文件的前N行内容
[wch@wch-rokey-9]$ head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
head -c N [file]  # 显示文件的前N个字符(截取字符)
# tail是head的反向命令
tail -n 10 [file] # 显示文件后十行内容
tail -f # 实时监控文件,常用监控日志记录
[wch@wch-rokey-9]$ sudo tail -n1 -f /var/log/messages
[sudo] wch 的密码:
Sep 15 06:20:30 wch-rokey-9 systemd-logind[806]: Removed session 1.
# head和tail可配合获取文件中某一行内容
[wch@wch-rokey-9]$ head -n10 /etc/passwd | tail -n1
operator:x:11:0:operator:/root:/sbin/nologin

echo/printf命令


# 将内容显示到默认的输出设备
echo "hello world!"  # 将hello world输出到终端命令行
echo "hello world" >> ./hello  # 将字符串hello world追加到文件hello中
echo -e [string]  # 启用转义字符的解析
[wch@wch-rokey-9]$  echo -e "The 2021 State of DevOps Report\n\t- is here"  # 将\n和\t转换为换行符和tab
The 2021 State of DevOps Report- is here
echo -n [string]  # 信息输出是不换行
[wch@wch-rokey-9]$ echo -n "hello world!"
hello world!07:37:29-[当前目录:~]
# printf类似C语言的printf函数,可格式化显示一些信息
[wch@wch-rokey-9]$ printf "hello world\n"
hello world
08:21:05-[当前目录:~]
[wch@wch-rokey-9]$ printf "hello world"  # 区别于echo,printf默认不换行,需要加\n
hello world08:21:13-[当前目录:~]
[wch@wch-rokey-9]$ printf "姓名:%s, 语文:%d, 数学:%d\n" "张三" 89 98  # printf占位符
姓名:张三, 语文:89, 数学:98
[wch@wch-rokey-9]$ printf "(%d %s)\n" 1 张三 2 李四 3 王五  # 批量化输出信息
(1 张三)
(2 李四)
(3 王五)

wall/write命令


# wall用于给多用户广播发送消息,一般用于系统管理向登录到系统的用户广播通知
wall "message-hello"  # 将该信息发送给所有系统已登录用户
wall message.txt  # 将该文件内容发送给所有系统已登录用户
# write区别于wall,write可指定具体用户发送消息
write [用户名] [ttyname]
[wch@wch-rokey-9]$ echo "hello wch pts/0" | write wch pts/0
[wch@wch-rokey-9]$
wch@wch-rokey-9.6 于 pts/1 在 08:07 发的消息...
hello wch pts/0
EOF

3 网络基础知识+web基础知识+部署Server

3.1网络基础

3.1.1 OSI七层模型

# 一种理论上的网络通信模型,实践中未应用;从底层到上层分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
* 物理层:物理介质传输比特流,如电缆、光缆
* 数据链路层:相邻节点(点对点)间提供可靠的帧级数据传输服务,如通过流量控制、差错控制技术
* 网络层:实现跨网络的逻辑寻址与路由选择
* 传输层:为应用程序提供端到端的通信服务,保证数据传输过程中的可靠性和完整性
* 会话层:建立、管理和终止会话,实现数据同步
* 表示层:数据的各种编码转换,确保数据在不同系统之间的兼容
* 应用层:为应用软件提供网络服务

3.1.2 TCP/IP四层模型

# 实际网络通信中所用的模型,从底层到上层分别是物理层、数据链路层、网络层、传输层、应用层

3.1.3 以太网

# 一种基于分组交换技术的局域网通信标准,以数据帧的形式传输,数据帧包含:目的地址、源地址、数据、校验码;目的地址和源地址标识发送方和接收方,数据包含实际传输的信息,校验码检测数据在传输过程中是否发生错误

3.1.4 网关和路由器的区别

网关 路由器
功能 不同协议网络的连接和转换 主要是同类型网络的数据转发
工作层级 网络层->应用层之间 网络层
应用场景 不同协议网络的连接,如智能家居(蓝牙、wifi等协议)、企业网络(内部专网和运营商网络)、物联网(传感器和云端sss) 同类型网络的互联

3.1.5 集线器、中继器、交换机的区别

中继器 集线器 交换机
工作层级 物理层 物理层;相当于多端口的中继器 数据链路层
核心功能 放大物理信号 放大物理信号;无差别转发数据,共享带宽 根据Mac地址智能转发数据帧
应用场景 延长物理距离 局域网核心设备

3.2 web基础

3.2.1 HTTP协议

# 超文本传输协议,属于应用层协议,作用于客户端和服务端之间进行信息交互,有如下显著特点:
1 无连接:完成一次数据传输后主动断开,不会一直保持连接状态,下次重连
2 无状态:每个请求独立且完整,服务器不记录历史请求;协议本身不保留客户端和服务器之间的交互状态
3 请求-响应模型:客户端发起请求,服务端根据请求内容响应
# http报文-请求报文
- 起始行:(start line),开始行,请求行,描述了请求的基本信息
- 头部字段合集:(header),首部行,使用 key: value 格式详细的说明报文
- 消息正文:(entity),实体(body),请求数据,可以没有
# http报文-相应报文
- 起始行:(start line),开始行,状态行,描述了响应的基本信息
- 头部字段合集:(header),首部行,使用 key: value 格式详细的说明报文
- 消息正文:(entity),实体(body),响应数据,可以没有

3.2.2 Socket套接字

# 网络编程中的一个概念,介于应用层和传输层之间的编程接口,用于实现不同主机间的通信

3.2.3 浏览器访问网站的简单过程

  1. 浏览器输入地址
  2. DNS解析域名得到目标服务器ip地址
  3. 浏览器和服务器基于TCP的三次握手协议建立连接
  4. 浏览器组织报文发送服务器
  5. 服务器收到报文后处理请求,拼接好回复报文后返给浏览器
  6. 浏览器解析报文,然后渲染显示
  7. 关闭连接,释放资源

3.2.4 https协议

# https协议=http协议+SSL/TLS协议 相当于在原有http协议基础上进行了加密处理

3.2.5 常见的前端开发框架

1. React:一款由Facebook开发的JavaScript库,最大的特点是采用组件化的开发方式,允许开发者
将用户界面拆分为可复用的独立组件,通过虚拟DOM技术优化性能,是构建大型、高性能Web应用
的首选。
2. Vue:一款轻量级、渐进式的JavaScript框架,最大的特点是提供了响应式数据绑定和双向数据绑定
的特性,能够自动追踪数据的变化并更新视图,适合构建中小型应用,学习曲线平缓,易于上手。
3. Angular:由Google维护的一款JavaScript框架,最大的特点是提供了构建Web应用所需的所有工
具,包括数据绑定、路由、表单处理、HTTP客户端等,是一个完整的解决方案,适合构建复杂的单
页应用。
4. jQuery:一款简化JavaScript操作的库,最大的特点是提供了一系列的便捷方法,使得DOM操作、
事件处理、动画效果等变得更加简单和高效。
5. Bootstrap:一个开源的前端框架,最大的特点是提供了丰富的CSS和JavaScript组件,用于快速构
建响应式网页,内置了多种样式和组件,大大简化了前端开发工作。

3.3 Server部署

3.3.1 网络配置文件

# ubuntu
/etc/netplan/*.yaml
wch@ubuntu-server-24-04:~$ ls /etc/netplan/		# ubuntu-server版,默认只有5050-cloud-init.yaml
50-cloud-init.yaml
wch@wch-ubuntu-desktop-24:~$ ls /etc/netplan/		# ubuntu-desktop版,默认只有01*.yaml和50*yaml,两个90*yaml文件是在图形化界面修改网卡信息留下的配置文件
01-network-manager-all.yaml  90-NM-14f59568-5076-387a-aef6-10adfcca2e26.yaml
50-cloud-init.yaml           90-NM-3fc91611-2585-3063-ac16-0d3e7c50d8c3.yaml
# 解读
- 1-network-manager-all.yaml(desktop版无该文件):由 Ubuntu中网络配置和管理的工具networkManager服务使用,该文件可能包含NetworkManager动态生成的配置信息。通俗讲:01-network-manager-all.yaml文件告诉Netplan使用NetworkManager来管理系统上的所有网络设备。这意味着可以通过NetworkManager的图形界面或命令行工具来配置、监控和管理网络连接,而不用直接编辑Netplan的配置文件
- 50-cloud-init.yaml:Ubuntu 24.04及更高版本的默认网络配置文件
- 90-NM-xxx.yaml(desktop版无该文件):该文件是NetworkManager为手工图形创建网络设备时候添加的配置文件,会覆盖01-network-manager-all.yaml或50-cloud-init.yaml中的全局设置
# 注:在Ubuntu系统中,可以有多个Netplan配置文件,但通常只有一个会被用作活动配置。Netplan会根据文件名的数字前缀(在这个例子中是01-)来确定哪个文件是活动配置。数字越小,优先级越高。如果存在多个配置文件,Netplan将合并它们的内容,但如果有冲突,优先级高的文件将覆盖优先级低的文件中的设置

3.3.2 静态IP和动态IP配置⭐️

# 在ubuntu-server主机下修改ip信息
[wch@ubuntu-server-24-04]$ sudo cat /etc/netplan/50-cloud-init.yaml
network:version: 2ethernets:ens33:dhcp4: true
18:30:11-[当前目录:~]
[wch@ubuntu-server-24-04]$ vim /etc/netplan/50-cloud-init.yaml
network:version: 2ethernets:ens33:dhcp4: noaddresses:- "10.0.0.16/24"nameservers:addresses:- 10.0.0.2routes:- to: defaultvia: 10.0.0.2
sudo netplan apply	# 让修改后的网卡信息生效
# 给ubuntu-server新增一张虚拟网卡,并配置相应网络地址信息# 首先是在VMware中给Ubuntu-server主机新增一个虚拟网卡,然后查看虚拟网卡名称后进行如下配置
[wch@ubuntu-server-24-04]$ sudo vim /etc/netplan/50-cloud-init.yaml
network:version: 2ethernets:ens33:dhcp4: noaddresses:- "10.0.0.16/24"nameservers:addresses:- 10.0.0.2routes:- to: defaultvia: 10.0.0.2ens37:		# 新增一张名为ens37的虚拟网卡dhcp4: noaddresses:- "10.0.0.111/24"nameservers:addresses:- 10.0.0.2routes:- to: defaultvia: 10.0.0.2
sudo netplan apply
[wch@ubuntu-server-24-04]$ ifconfig ens37	# 查看ens37网卡信息
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 10.0.0.111  netmask 255.255.255.0  broadcast 10.0.0.255inet6 fe80::20c:29ff:fe69:a492  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:69:a4:92  txqueuelen 1000  (Ethernet)RX packets 4  bytes 295 (295.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 14  bytes 1096 (1.0 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

3.3.3 网络配置相关命令

3.3.3.1 主机名配置
# 临时修改主机名	->	hostname命令
[wch@ubuntu-server-24-04]$ hostname		# 显示当前主机名
ubuntu-server-24-04
19:42:42-[当前目录:~]
[wch@ubuntu-server-24-04]$ hostname temp	
hostname: you must be root to change the host name
19:42:49-[当前目录:~]
[wch@ubuntu-server-24-04]$ sudo hostname temp	# 临时修改主机名
[sudo] password for wch:
19:43:00-[当前目录:~]
[wch@ubuntu-server-24-04]$ hostname
temp
19:43:48-[当前目录:~]
[wch@ubuntu-server-24-04]$ exec /bin/bash	# 立即生效
19:45:02-[当前目录:~]
[wch@temp]$			# 可看到当前显示主机名temp
19:42:03-[当前目录:~]
[wch@ubuntu-desktop-24]$		# exit退出后再进入temp主机名失效# 永久修改主机名	->		hostnamectl命令
[wch@ubuntu-desktop-24]$ hostnamectl status		# 输出主机信息,同hostnamectl命令效果Static hostname: wch-ubuntu-desktop-24.04
Transient hostname: ubuntu-desktop-24Icon name: computer-vmChassis: vm 🖴Machine ID: 3c2aae15fbeb42ad9f34197b061f6fe5Boot ID: 3e850da7ff184a3d9aca2945f1606f4cVirtualization: vmwareOperating System: Ubuntu 24.04 LTSKernel: Linux 6.8.0-31-genericArchitecture: x86-64Hardware Vendor: VMware, Inc.Hardware Model: VMware Virtual PlatformFirmware Version: 6.00Firmware Date: Thu 2020-11-12Firmware Age: 4y 10month 1w 1d
[wch@ubuntu-desktop-24]$ hostnamectl hostname		# hostname子命令显示当前主机名
ubuntu-desktop-24
[wch@ubuntu-desktop-24]$ hostnamectl set-hostname xxxxxxxxxxxxxx	# set-hostname子命令用于永久修改主机名,目前已被废弃,使用hostname子命令
==== AUTHENTICATING FOR org.freedesktop.hostname1.set-static-hostname ====
Authentication is required to set the statically configured local hostname, as well as the pretty hostname.
Authenticating as: wch
Password:
==== AUTHENTICATION COMPLETE ====
19:54:11-[当前目录:~]
[wch@ubuntu-desktop-24]$ exec /bin/bash
19:54:25-[当前目录:~]
[wch@xxxxxxxxxxxxxx]$
[wch@xxxxxxxxxxxxxx]$ sudo hostnamectl hostname Ubuntu-Desktop-24	# 使用hostname子命令永久修改主机名
[sudo] wch 的密码:
19:56:08-[当前目录:~]
[wch@xxxxxxxxxxxxxx]$ exec /bin/bash
19:56:15-[当前目录:~]
[wch@Ubuntu-Desktop-24]$
3.3.3.2 net-tools相关命令
# ifconfig
[wch@Ubuntu-Server-24]$ ifconfig		# 查看所有启用的网卡信息,-a参数可多显示被禁用的网卡
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 10.0.0.16  netmask 255.255.255.0  broadcast 10.0.0.255inet6 fe80::20c:29ff:fe69:a488  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:69:a4:88  txqueuelen 1000  (Ethernet)RX packets 267021  bytes 235336964 (235.3 MB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 224173  bytes 24827183 (24.8 MB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 10.0.0.111  netmask 255.255.255.0  broadcast 10.0.0.255inet6 fe80::20c:29ff:fe69:a492  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:69:a4:92  txqueuelen 1000  (Ethernet)RX packets 22  bytes 2693 (2.6 KB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 25  bytes 1890 (1.8 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 402  bytes 42892 (42.8 KB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 402  bytes 42892 (42.8 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
# route
[wch@Ubuntu-Server-24]$ route	# 查看路由表	(0.0.0.0表示默认路由)
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    0      0        0 ens33
default         _gateway        0.0.0.0         UG    0      0        0 ens37
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 ens33
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 ens37
20:09:00-[当前目录:~]
[wch@Ubuntu-Server-24]$ route -n	# 以ip格式查看路由表
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.2        0.0.0.0         UG    0      0        0 ens33
0.0.0.0         10.0.0.2        0.0.0.0         UG    0      0        0 ens37
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 ens33
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 ens37
3.3.3.3 IP命令

可取代ifconfig和route命令,主要用于管理和配置网络接口和路由表,在没有安装net-tools包就可以使用该命令

# 命令格式:ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]
格式解读:   OPTIONS:    一些修改ip行为或者改变其输出的选项,以“-”字符开头,分为长、短两种形式。       例如,-V(或--Version)用于打印ip的版本并退出,。   OBJECT:       要管理或者获取信息的对象,       如link(网络设备)、address(设备的协议地址)、route(路由表条目)等。   COMMAND:       对指定对象执行的具体命令,如show(显示信息)、set(设置属性)等。   ARGUMENTS:       命令的附加参数,用于进一步指定命令的行为。  
# 案例
[wch@Ubuntu-Server-24]$ ip addr show	# 显示所有网卡信息
[wch@Ubuntu-Server-24]$ ip addr show ens33	# 显示指定网卡信息
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:69:a4:88 brd ff:ff:ff:ff:ff:ffaltname enp2s1inet 10.0.0.16/24 brd 10.0.0.255 scope global ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe69:a488/64 scope linkvalid_lft forever preferred_lft forever
[wch@Ubuntu-Desktop-24]$ ip route list	# 列出当前路由表信息
default via 10.0.0.2 dev ens33 proto static metric 100
10.0.0.0/24 dev ens33 proto kernel scope link src 10.0.0.13 metric 100
3.3.3.4 网络连接状态查看
# netstat命令(用于显示网络连接、路由表、接口统计、伪装连接和多播成员资格等信息)
[wch@Ubuntu-Server-24]$ netstat -tnulp	# -t:显示tcp端口数据	-u:显示udp端口数据  -n:以数字形式显示ip和端口	-p:显示相关进程和pid	-l:仅显示监听状态的端口
(No info could be read for "-p": geteuid()=1000 but you should be root.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.54:53           0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      -
tcp6       0      0 ::1:6010                :::*                    LISTEN      -
tcp6       0      0 :::80                   :::*                    LISTEN      -
udp        0      0 127.0.0.54:53           0.0.0.0:*                           -
udp        0      0 127.0.0.53:53           0.0.0.0:*                           -
[wch@Ubuntu-Server-24]$ netstat -r	# 显示路由表信息
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         _gateway        0.0.0.0         UG        0 0          0 ens33
default         _gateway        0.0.0.0         UG        0 0          0 ens37
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 ens33
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 ens37# ss命令
Socket Statistics的缩写,主要用于获取系统中socket的统计信息,可以帮助系统管理员诊断和排查网络问题,包括检查当前网络连接及端口状态、搜索网络问题、统计网络情况等;可代替netstat命令
[wch@Ubuntu-Server-24]$ ss -tnulp	# 选项参数和netstat类似
Netid  State   Recv-Q  Send-Q   Local Address:Port   Peer Address:Port Process
udp    UNCONN  0       0           127.0.0.54:53          0.0.0.0:*
udp    UNCONN  0       0        127.0.0.53%lo:53          0.0.0.0:*
tcp    LISTEN  0       4096     127.0.0.53%lo:53          0.0.0.0:*
tcp    LISTEN  0       511            0.0.0.0:80          0.0.0.0:*
tcp    LISTEN  0       4096        127.0.0.54:53          0.0.0.0:*
tcp    LISTEN  0       128          127.0.0.1:6010        0.0.0.0:*
tcp    LISTEN  0       128              [::1]:6010           [::]:*
tcp    LISTEN  0       511               [::]:80             [::]:*

3.3.4 Web站点环境部署

3.3.4.1 常见的Web server软件
- Apache
- Tomcat
- Nginx
3.3.4.2 Ubuntu环境部署Nginx
[wch@Ubuntu-Server-24]$ apt list nginx -a	# 列出nginx所有可用版本
Listing... Done
nginx/noble-updates,noble-security,now 1.24.0-2ubuntu7.5 amd64 [installed]
nginx/noble 1.24.0-2ubuntu7 amd64
sudo apt install nginx -y	# 安装nginx
# 推荐安装的命令是: apt install nginx nginx-core fcgiwrap nginx-doc
[wch@Ubuntu-Server-24]$ systemctl  is-active nginx.service	# 查看nginx服务的启动状态,也可使用命令systemctl status nginx查看
active
[wch@Ubuntu-Server-24]$ sudo netstat -tunlp | grep nginx	# 使用netstat命令查看nginx端口
[sudo] password for wch:
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      834/nginx: master p
tcp6       0      0 :::80                   :::*                    LISTEN      834/nginx: master p

浏览器访问:

image-20250921011747658

# 若无法访问web页面,尝试关闭防火墙:sudo systemctl disable --now ufw.service
3.3.4.3 Nginx⭐️
# 1 nginx首页的配置目录:/var/WWW/html/
# 2 nginx相关命令
[wch@Ubuntu-Server-24]$ nginx -v	# 查看nginx版本
nginx version: nginx/1.24.0 (Ubuntu)
-V:	#在显示基础版本信息的基础上,​额外输出编译时的详细配置参数​(如编译器版本、依赖库信息、启用模块、安装路径等)
-h   #显示帮助信息
-t   #检查并测试配置文件
-q   #在配置文件测试期间禁止显示非错误消息
# 3 Nginx配置文件
-nginx.conf:nginx的主配置文件
-conf.d:nginx的其他配置文件,会导入到主配置文件使用
-default.d:nginx的其他配置文件,会导入到主配置文件使用(存在于rokey系统)
-modules-available:nginx的其他配置文件,会导入到主配置文件使用(存在于ubuntu系统)
-sites-enabled:nginx的其他配置文件,会导入到主配置文件使用(存在于ubuntu系统)
......
3.3.4.4Nginx配置结构解读⭐️

image-20250921233008352

# 1 Server配置段内的关键信息:
-listen:指定server监听的ip地址和端口
-root:请求的根目录路径 
...
# 2 location配置段的关键信息:
-try-files:根据顺序查找文件,如:$uri $uri/ =404;这个执行顺序表示先查找请求的文件,找不到再找请求的目录下的默认index.html,还找不到返回404错误
3.3.4.5 Nginx web实践
# 基于端口号实现多server# 1 首先删除nginx下默认的配置文件:/etc/nginx/sites-enabled/default
[wch@Ubuntu-Server-24]$ sudo rm -f /etc/nginx/sites-enabled/default
# 2 定制3个站点的web页面
[wch@Ubuntu-Server-24]$ sudo mkdir -p /data/server/nginx/web{1..3}	# 创建3个站点的资源目录
[wch@Ubuntu-Server-24]$ sudo chmod -R o+w /data/server/nginx	# 增加其他用户对该文件夹所有文件的写权限
16:47:27-[当前目录:~]
[wch@Ubuntu-Server-24]$ ll /data/server/nginx
total 20
drwxr-xrwx 5 root root 4096 Sep 22 16:36 ./
drwxr-xr-x 3 root root 4096 Sep 22 16:36 ../
drwxr-xrwx 2 root root 4096 Sep 22 16:36 web1/
drwxr-xrwx 2 root root 4096 Sep 22 16:36 web2/
drwxr-xrwx 2 root root 4096 Sep 22 16:36 web3/
16:47:37-[当前目录:~]
[wch@Ubuntu-Server-24]$ sudo echo "nginx web1" > /data/server/nginx/web1/index.html	# 定制化web首页内容
16:48:08-[当前目录:~]
[wch@Ubuntu-Server-24]$ sudo echo "nginx web2" > /data/server/nginx/web2/index.html
16:48:20-[当前目录:~]
[wch@Ubuntu-Server-24]$ sudo echo "nginx web3" > /data/server/nginx/web3/index.html
# 3 定制配置文件,实现端口号访问多server
[wch@Ubuntu-Server-24]$ sudo vim /etc/nginx/conf.d/vhost.conf	# 编辑配置文件
server { listen 80; root /data/server/nginx/web1;
}
server { listen 81;
 root /data/server/nginx/web2;
}
server { listen 82; root /data/server/nginx/web3;
}
# 4 重启nginx服务进行验证
[wch@Ubuntu-Server-24]$ sudo nginx -t	# -t参数验证配置文件的语法格式是否正确
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
17:12:24-[当前目录:~]
[wch@Ubuntu-Server-24]$ sudo systemctl restart nginx.service	# 重启nginx服务
17:12:50-[当前目录:~]
[wch@Ubuntu-Server-24]$ curl 10.0.0.16:80	# 访问不同端口对应的默认站点页面
nginx web1
17:13:07-[当前目录:~]
[wch@Ubuntu-Server-24]$ curl 10.0.0.16:81
nginx web2
17:13:10-[当前目录:~]
[wch@Ubuntu-Server-24]$ curl 10.0.0.16:82
nginx web3
http://www.hskmm.com/?act=detail&tid=13854

相关文章:

  • 多商家在线客服系统 - 客服用户表设计方案
  • 九月22号
  • 25.9.22 继续MySQL
  • 使用python读取windows注册表
  • 当日总结
  • 3123004481
  • 使用python读取windows日志表
  • 开机RAM分析调试SOP
  • 9.20 模拟赛 T4
  • 2025.9.21 测试 (a1a2a3a4a5)
  • 原码、反码和补码
  • Русский язык
  • 基于Hex Editor Neo的二进制文件模板
  • 【F#学习】字符
  • kubebuilder创建Operator示例
  • 集训总结(八)
  • 使用try-finally结构执行状态重置
  • java03预习
  • x6831卡顿分析
  • 实测对比:权威榜单之微信排版软件Top5(含详细测评)
  • 【F#学习】布尔运算优先级
  • 粘连字符验证码的分割与识别思路
  • 深入解析:【Spark+Hive+hadoop】基于spark+hadoop基于大数据的人口普查收入数据分析与可视化系统
  • part 8
  • 【本地音乐库】的搭建管理工具推荐
  • 扭曲变形验证码的图像处理与识别思路
  • 每日收获
  • C++中std::map容器中元素删除方法汇总 - 详解
  • 物理半程与半时问题
  • 从用户态到内核态:Windows CC 技术深度解析(第一篇:DNS隧道)