Skip to content

Linux 概念

  • 家目录 :存储用户配置信息的目录

  • 根目录: 用 / 表示,Linxu一切从根开始

  • 绝对路径 :从根开始的目标路径

  • 相对路径 :以当前路径为起始,到达目标路径


常见的操作系统

系统分类

分类代表发行版包管理更新策略国产化程度典型应用场景核心技术特色
国际Debian系Ubuntuapt/snapLTS/6个月-桌面/云计算Snap容器化
国际RedHat系RHELrpm/dnf10年周期-企业服务器SELinux安全模块
国产桌面系统信UOSdpkg/apt3-5年★★★★★政务办公等保四级认证
银河麒麟rpm/dnf5年★★★★☆国防/金融军用加密模块
国产服务器系华为欧拉rpm/dnf4年LTS★★★★☆云计算/电信多样性计算支持
阿里龙蜥rpm/dnf10年★★★☆☆互联网企业热补丁升级
国产混合架构鸿蒙OShpm滚动更新★★★★★物联网/智能终端微内核分布式

主流操作系统核心功能差异对比

差异维度Ubuntu 22.04 LTSopenEuler 22.03统信UOS 20RHEL 9CentOS 7银河麒麟V10 SP1中标麒麟7.6
用户管理adduser交互式创建useradd需手动设密码政务ID绑定审计SELinux用户标签集成useradd传统方式三权分立账户体系等保三级账户策略
包管理APT+Snap双体系DNF+YUM兼容星火商店+APT安全加固DNF+RPM严格签名验证YUM+RPM传统管理麒麟软件仓库中标定制YUM源
防火墙ufw简易管理firewalld区域隔离iptables等保规则预置firewalld+SELinux深度集成iptables传统规则麒麟安全防护墙等保三级防火墙规则
网络配置Netplan YAML配置nmcli命令行工具图形化政务专用工具NetworkManager+nmclinetwork-scripts传统配置麒麟网络管理套件中标网络配置工具
umask默认022(文件644)027(文件640)022(文件644)022(文件644)022(文件644)027(文件640)022(文件644)
安全特性AppArmor默认启用华为安全补丁+完整性保护国密算法+等保四级加固SELinux强制访问控制SELinux基础配置军用加密模块等保三级基线
更新策略5年LTS支持4年LTS+扩展支持政企定制更新周期10年生命周期支持已停止维护(2024年到期)5年安全更新3年扩展支持
硬件支持主流x86/ARM鲲鹏/昇腾优先支持龙芯/飞腾深度适配企业级硬件认证列表传统x86服务器国产CPU全系支持国产x86/ARM
云原生基础K8s支持KubeOS+边缘计算优化政务云定制方案OpenShift企业级容器平台需手动配置麒麟云原生套件中标容器解决方案
典型用途开发者桌面/中小型云电信/云基础设施党政机关办公企业级关键业务系统传统服务器环境国防/金融核心系统政府/能源行业
合规认证FIPS/CC通用认证等保2.0三级等保四级+军规FIPS 140-2/STIG强化基础安全认证军B级认证等保三级认证
技术支持社区支持+商业订阅华为企业支持统信全国服务网点Red Hat全球技术支持社区支持(已停止)麒麟全国服务体系中标本地化服务
典型预装软件LibreOfficeopenGauss数科OFDPodman达梦数据库

关键差异说明

CentOS 7特殊注意事项

bash
# 已停止维护的替代方案
$ migrate2rocky    # 迁移到Rocky Linux
$ convert2alma     # 迁移到AlmaLinux

麒麟操作系统分支差异

mermaid
graph TB
    麒麟OS --> 银河麒麟[军用/金融]
    麒麟OS --> 中标麒麟[政务/能源]
    银河麒麟 --> FreeBSD版[高安全场景]
    银河麒麟 --> Linux版[通用场景]

国产系统特有功能

银河麒麟

bash
# 军用加密模块启用
$ kylin-crypto --enable kmod-军用密码

中标麒麟

bash
# 等保三级加固脚本
$ neokylin-hardening --level=3

生命周期对比图

mermaid
timeline
    title 操作系统支持周期
    2023 : Ubuntu 22.04 LTS
    2024 : CentOS 7 EOL
    2026 : openEuler 22.03 EOL
    2027 : 银河麒麟V10 EOL
    2032 : RHEL 9 EOL

NOTE

迁移建议

  • 原CentOS 7用户建议迁移至:
    • 国产化环境 → 银河麒麟/统信UOS
    • 国际兼容环境 → Rocky Linux 9
  • 关键差异点测试清单:
    1. 硬件驱动兼容性(特别是国产CPU)
    2. 业务软件依赖库验证
    3. 安全策略符合性检查(等保/军规)

Linux命令基础

linux是一个内核:红帽 (商业版),centos(红帽的社区版),debian(kali,ubuntu),统信,麒麟,openEuler,鸿蒙,安卓(谷歌)

Linux和ios同源,起源于unix linux的解析器叫shell,又叫bash

bash
uname -r    		# 查内核版本
cat /etc/osrelease  # 系统类型

Linux 命令的分类

  1. 内部命令 :属于 Shell 解释器的一部分
  2. 外部命令 :独立于 Shell 解释器之外的程序
  3. type 命令 :查看命令是外部命令还是内部命令
bash
[root@localhost ~]# type cd
cd shell 内建
[root@localhost ~]# type ll
ll "ls -l --color=auto" 的别名
[root@localhost ~]# type ifconfig
ifconfig /usr/sbin/ifconfig
[root@localhost ~]#

Linux 命令格式

Linux 命令的通用格式:命令 [选项] [参数]

  • 选项:用于调节命令的具体功能
    • ​ “-” 引导短格式选项,例如“ls -a”
    • ​ “--”引导长格式选项,例如“ls --help”
  • 参数:命令的对象,如文件、目录名等

NOTE

注意:多个短格式选项可以合并,例如“ls -alh” 但是多个长格式选项,不能合并。

bash
[root@localhost ~]# ls -alh /etc  ls——命令字;-alh——选项;/etc——参数

帮助命令

help

help 内部命令帮助,查看 bash 内部命令的帮助

语法格式

bash
help 内部命令字 

# 即命令的“--help”选项,适用于大多数外部命令
命令字 --help

man

man 用来提供在线帮助,使用权限是所有用户。在 Linux 系统中存储着一部联机使用的 手册,以 供用户在终端上查找。使用 man 命令可以调阅其中的帮助信息,非常方便实用

语法格式

bash
man 命令字

man [-acdfhkKtwW] [-m system] [-p string] [-C config_file] [-Mpath] [-P pager] [-S  section_list [section] name ...

选项

bash
-C config_file:指定设定文件 man.conf,缺省值是/etc/man.conf
# [root@www ~]# man 7 man

代号

  • 1 使用者在 shell 中可以操作的指令或可执行档
  • 2 系統核心可呼叫的函数与工具等
  • 3 一些常用的函数(function)与函数库(library),大部分是 C 的函数库(libc)
  • 4 装置档案的说明,通常在/dev 下的档案
  • 5 设定档或者是某些档案的格式
  • 6 游戏(games)
  • 7 惯例与协定等,例如 Linux 档案系统、网络协定、ASCII code 等等的說明
  • 8 系統管理員可用的管理指令
  • 9 跟 kernel 有关的文件

命令快捷键

  • tab 键:自动补齐文件名,命令等;按两次 tab 键,系统将输出可用的所有名称列表。
  • 反斜杠“\”:转义符,转义符的含义是退去符号本身的意思
  • ctrl+U:快速删除光标之前所有字符(可视为剪切)
  • ctrl+K:快速删除光标之后所有字符(可视为剪切)
  • ctrl+Y:黏贴刚才所删除(剪切)的字符
  • ctrl+L:清屏
  • ctrl+C:取消当前命令行编辑;结束当前执行的命令
  • ctrl+D:从 shell 提示中注销关闭,类似输入 exit
  • ctrl+A:把光标移动到行首,类似于 Home 键
  • ctrl+E:把光标移动到行尾,类似于 End 键
  • ctrl+Z:转入后台运行 。(可用fg命令调出后台运行进程如fg ping
  • ctrl+R:在历史命令中查找(history代替)

转义符

转义符效果
\n换行
\t制表符(Tab)
\\输出反斜杠 \
\"输出双引号 "
\e转义字符(用于ANSI控制码,如颜色)
\a响铃(终端发出提示音)
\b退格(删除前一个字符)
\r回车(光标回到行首).

目录和文件管理

树形目录结构

bash
/
├── bin -> usr/bin          			# 二进制可执行文件(软链接到/usr/bin)
├── boot                    			# 内核文件与启动引导文件
├── dev                     			# 设备文件(如磁盘、终端等)
├── etc                     			# 系统全局配置文件
|   ├── hosts							# 主机名映射文件
   ├── sysconfig/network-scripts/		# 系统网卡配置文件所在路径
   └── systemd/system/					# 系统systemd服务文件存储.service
├── home                    			# 普通用户家目录的宿主目录(每个用户独立子目录))
├── lib -> usr/lib          			# 基础共享库(软链接到/usr/lib)
├── media                   			# 可移动设备挂载点(如U盘、光盘)
├── mnt                     			# 临时手动挂载目录
├── opt                     			# 第三方软件安装目录
├── proc                    			# 内核与进程的虚拟文件系统(临时存放内存的目录)
├── root                    			# root用户的家目录
├── run                     			# 运行时数据(如PID文件)
├── sbin -> usr/sbin        			# 管理员用户的二进制命令,系统管理命令(软链接到/usr/sbin)
├── srv                     			# 服务相关数据(如Web、FTP数据)
├── sys                     			# 系统硬件信息的虚拟文件系统
├── tmp                     			# 临时文件(所有用户可写)
├── usr                     			# 用户程序与资源(二级层级结构)
   ├── bin                				# 用户命令
   ├── lib                				# 库文件
   ├── local              				# 本地安装的软件
|   |   ├── bin/                 		# 用户可执行文件(如 nginx、python3)
|   |   ├── lib/                 		# 库文件
|   |   ├── include/             		# 头文件(C/C++开发)
|   |   ├── share/               		# 文档、数据等
|   |   └── src/                 		# 可选:存放源码
   ├── sbin               				# 系统管理命令
   └── share              				# 架构无关数据(如文档、字体)
└── var                     			# 可变文件和临时文件(日志;缓存;临时存储)
    ├── log                				# 系统日志
    ├── cache              				# 应用程序缓存
    └── lib                				# 程序状态数据

/opt和/usr/local/关键区别

特性/opt/usr/local
用途第三方独立软件包本地编译/手动安装的软件
结构每个软件独占子目录仿照 /usr 的层级结构
管理方式由软件供应商提供通常由管理员手动编译安装
典型内容商业软件、预编译二进制开源软件、自定义程序
卸载便利性直接删除对应目录即可需手动清理分散的文件

如何选择

  • 使用 /opt
    • 软件是独立的、预编译的,且希望所有文件集中存放(如 /opt/myapp/bin)。
    • 软件由供应商提供安装脚本(如 ./install.sh)。
  • 使用 /usr/local
    • 从源码编译安装,且需要集成到系统路径(如 /usr/local/bin 已在 $PATH 中)。
    • 软件需要标准的 Unix 文件布局(如 binlib 分离)。

注意事项

PATH 环境变量

/usr/local/bin 通常默认在 $PATH 中,而 /opt/<package>/bin 可能需要手动添加。

bash
export PATH="/opt/myapp/bin:$PATH"

权限管理

/opt/usr/local 通常需要 root 权限写入,但软件运行时可用普通用户权限。

冲突避免

避免将同一个软件同时安装在 /opt/usr/local 中。

Linux 特殊文件

设备文件(位于 /dev/ 目录)

  • /dev/null
    • 写入的数据会被丢弃,读取时返回 EOF(文件结束)。常用于屏蔽命令输出。
    • 示例:command > /dev/null 2>&1
  • /dev/zero
    • 提供无限的空字符(\0),常用于初始化文件或内存。
    • 示例:dd if=/dev/zero of=testfile bs=1M count=100
  • /dev/random/dev/urandom
    • 生成随机数据:/dev/random 阻塞直到收集足够熵,/dev/urandom 非阻塞但安全性稍低。
    • 示例:生成随机密码:head -c 16 /dev/urandom | base64
  • /dev/stdin/dev/stdout/dev/stderr
    • 分别对应标准输入、输出、错误流,常用于重定向。
  • /dev/tty
    • 表示当前终端设备,可用于强制输出到终端(如脚本中交互提示)。
  • /dev/loopX
    • 虚拟设备,用于挂载镜像文件(如 ISO)到文件系统。
  • /dev/sdX/dev/nvmeXnY
    • 物理磁盘设备(如 /dev/sda 为第一块 SATA 硬盘)。

系统关键配置文件(位于 /etc/ 目录)

  • /etc/passwd
    • 用户账户信息(不含密码,密码在 /etc/shadow 中)。
  • /etc/shadow
    • 存储用户加密密码,仅 root 可读。
  • /etc/group
    • 用户组定义信息。
  • /etc/fstab
    • 定义开机自动挂载的分区和设备。
  • /etc/hosts
    • 本地主机名与 IP 映射,可绕过 DNS 解析。
  • /etc/resolv.conf
    • DNS 服务器配置。
  • /etc/ssh/sshd_config
    • SSH 服务端配置(如端口、密钥登录等)。
  • /etc/crontab/etc/cron.d/
    • 系统级定时任务配置。
  • /etc/sudoers
    • 定义用户 sudo 权限(需用 visudo 编辑)。
  • /etc/os-release
    • 系统发行版信息(如版本号、名称)。
  • /etc/null
    • 黑洞文件
  • /etc/zero
    • 零时文件

3. 日志文件(位于 /var/log/ 目录)

  • /var/log/syslog/var/log/messages
    • 系统全局日志(取决于发行版)。
  • /var/log/auth.log
    • 认证相关日志(如 SSH 登录记录)。
  • /var/log/kern.log
    • 内核日志(硬件、驱动问题排查)。
  • /var/log/apt//var/log/dnf.log
    • 包管理器日志(安装/更新记录)。

4. 运行时和内核文件

  • /proc/ 目录
    • 虚拟文件系统,实时反映内核和进程状态:
      • /proc/cpuinfo:CPU 信息。
      • /proc/meminfo:内存使用情况。
      • /proc/net/:网络状态(如 /proc/net/tcp)。
  • /sys/ 目录
    • 另一个虚拟文件系统,管理设备、驱动和内核参数。

关闭防火墙

RHEL

bash
# 关闭防火墙
systemctl stop firewalld
# 永久关闭
systemctl disable firewalld

Ubuntu

bash
# 查看
sudo ufw status
# 停止 ufw 服务:
sudo systemctl stop ufw

# 禁用 ufw 服务的自动启动:
sudo systemctl disable ufw

安装及管理程序

在主机安装了Linux操作系统以后,就具备了提供软件服务、网络服务等功能的基础。然而随着操作系统一起安装的软件包毕竟只有少数,实现的功能也比较有限,当需要为主机提供更多的功能时,安装新的应用程序就成为必然要面对的工作。

在Linux下的程序安装方式分为:

  1. rpm包安装:rpm手动安装、yum自动安装
  2. 源码安装,离线安装

Linux常见的软件包封装类型

文件类型保存目录
RPM软件包扩展名为“.rpm”
DEB软件包扩展名为“.deb“
源代码软件包一般为“。tar.gz”、“.tar.bz2”等格式的压缩包包含程序的原始代码
绿色免安装的软件软件包的扩展名不一、以TarBall格式的居多 在压缩包内提供已经编译好的

主流发行版命令格式对比

发行版家族包管理工具安装卸载更新查询其他特性
RHEL系 (RHEL/CentOS)rpmrpm -ivh pkg.rpmrpm -e pkgrpm -Uvh pkg.rpmrpm -q[ail] pkg需手动处理依赖
yumyum install pkgyum remove pkgyum update pkgyum list/info pkg自动解决依赖
dnfdnf install pkgdnf remove pkgdnf upgrade pkgdnf list pkgyum的下一代替代品
Debian系 (Ubuntu/Debian)dpkgdpkg -i pkg.debdpkg -r pkg-`dpkg -lgrep pkg`
aptapt install pkgapt remove pkgapt upgrade pkgapt list pkg最常用的高级工具
Arch系pacmanpacman -S pkgpacman -R pkgpacman -Syupacman -Qs pkg滚动更新设计
通用工具snapsnap install pkgsnap remove pkgsnap refresh pkgsnap list跨发行版容器化包
flatpakflatpak install pkgflatpak uninstall pkgflatpak updateflatpak list沙盒化应用

RPM 包

RPM 软件包 一般命名格式

mermaid
graph TD
    A[bash-4.1.2-15.el6_4.x86_64.rpm] --> A1[软件名称]
    A1 -->|bash| A
    A --> A2[版本号]
    A2 -->|4.1.2| A
    A --> A3[发布次数]
    A3 -->|15.el6_4| A
    A --> A4[硬件平台]
    A4 -->|x86_64| A
    A --> A5[扩展名]
    A5 -->|.rpm| A

rpm包网站

https://rpmfind.net/

openEuler(国产欧拉):https://easysoftware.openeuler.org/zh/rpm

典型应用程序目录结构

文件类型保存目录
普通执行程序文件/usr/bin
服务器执行程序文件和管理程序文件/usr/sbin
应用程序配置文件/etc
日志文件/var/log
应用程序文档文件/usr/share/doc
应用程序手册页文件/usr/share/man

yum仓库

CentOS 8+/RHEL 8+ 中,yumdnf 的符号链接,用法基本一致。

.repo文件中各字段的含义

  • [repositoryID]:这是仓库的唯一标识符,在整个/etc/yum.repos.d/目录中应该是唯一的。
  • name=Some name for this repository:源的名称,通常用于yum的输出。
  • baseurl=url://path/to/repository/:这是YUM用来查找软件包的基础URL。可以有多个baseurl,以支持多个服务器。
  • enabled=1:这个选项告诉YUM是否启用或禁用此仓库。如果设置为1,则启用该仓库。如果设置为0,则禁用该仓库。
  • gpgcheck=1:这个选项告诉YUM是否检查包来自正确的来源。如果设置为1,则启用GPG签名检查。如果设置为0,则禁用GPG签名检查。
  • gpgkey=URL:这是GPG密钥文件的位置,通常是.pub后缀的文件。

构建本地yum仓库

1、创建挂载路径

bash
mkdir /media/cdrom

2、挂载光盘

bash
mount /dev/sr0 /media/cdrom

3、备份旧的yum源文件

bash
cd /etc/yum.repos.d && mkdir bak
mv *.repo bak

4、创建本地yum 源文件

bash
[local]
	name=media
	baseurl=file:///media/cdrom
    gpgcheck=0
    enabled=1

5、清理旧的缓存

bash
dnf -y clean all

6、创建新的缓存

bash
dnf makecache

7、验证

bash
dnf repolist

yum 安装、卸载、升级 RPM 包软件

命令不加关键字加入关键词、软件包、软件包组
yum list显示所有可用包单个的可安装包
yum info显示所有可用包的信息单个具体的信息
yum search\模糊查找所有的相关信息
yum provides\精确查找
yum install\安装具体软件包
yum history查看当前yum操作历史\
yum history undo加入序号卸载序号里安装的软件\
yum history redo加入序号重新执行序号里的操作\
yum update所有软件升级具体软件升级

deb文件安装

deb包是Debian,Ubuntu等Linux发行版的软件安装包,扩展名为.deb,是类似于rpm的软件包,Debian,Ubuntu系统不推荐使用deb软件包,因为要解决软件包依赖问题,安装也比较麻烦。

在Ubuntu中安装 .deb 文件,你可以使用 dpkg 命令或者apt命令。

软件包网站

https://pkgs.org/

dpkg命令常见参数

bash
dpkg -i --install xxx.deb 安装deb软件包
dpkg -r --remove xxx.deb 删除软件包
dpkg -r -P --purge xxx.deb 连同配置文件一起删除
dpkg -I -info xxx.deb 查看软件包信息
dpkg -L xxx.deb 查看文件拷贝详情
dpkg -l 查看系统中已安装软件包信息
dpkg-reconfigure xxx 重新配置软件包

apt源

apt 是Ubuntu系统下的一个命令行工具,用于处理包。这个命令可以自动下载和安装软件包及其依赖项。它是Advanced Packaging Tool (APT)的一部分,APT是处理包的高级工具,可以处理复杂的包关系,如依赖关系等。

apt命令的常见参数

bash
install:安装软件包
remove:删除软件包
upgrade:升级所有已安装的软件包
update:更新源列表
dist-upgrade:升级系统
autoremove:自动删除不再需要的包
purge:删除软件包及其配置文件
clean:清理下载的包文件
autoclean:清理旧版本的下载包文件
apt命令替代命令功能描述
apt updateapt-get update更新存储库索引
apt upgradeapt-get upgrade升级所有可升级的软件包
apt installapt-get install安装软件包
apt removeapt-get remove移除软件包但保留配置文件
apt purgeapt-get purge移除软件包也删除配置文件
apt autoremoveapt-get autoremove自动删除没用的依赖包
apt full-upgradeapt-get dist-upgrade在升级软件包时自动处理依赖关系
apt searchapt-cache search搜索**搜索应用程序
apt showapt-cache show显示指定安装包基本信息
apt listN/A列出包含条件的包(已安装,可升级等)
apt edit-sourcesN/A编辑源列表

仓库源文件

  • 档案类型 (Archive type) 条目的第一个词 deb 或是 deb-src 表明了所获取的软件包档案类型。

    • deb:**档案类型为二进制预编译软件包,一般我们所用的档案类型。 **
    • deb-src:档案类型为用于编译二进制软件包的源代码。
  • 仓库地址 (Repository URL):条目的第二个词则是软件包所在仓库的地址。我们可以更换仓库地址为其他地理位置更靠近自己的镜像来提高下载速度。

软件包分类

Debian
  • main:包含符合 DFSG 指导原则的自由软件包,而且这些软件包不依赖不符合该指导原则的软件包。这些软件包被视为 Debian 发型版的一部分。
  • contrib:包含符合 DFSG 指导原则的自由软件包,不过这些软件包依赖不在 main 分类中的软件包。
  • non-free:包含不符合 DFSG 指导原则的非自由软件包。
Ubuntu
  • main: 官方支持的 自由软件。
  • restricted:官方支持的非完全自由的软件。
  • universe:社区维护的自由软件。
  • multiverse:非自由软件

在Ubuntu中更换APT源可以通过编辑 /etc/apt/sources.list 文件来实现。

apt 国内源

  1. 清华大学开源软件镜像站
  2. 阿里云镜像站
  3. 中国科学技术大学 Mirror
  4. 网易开源镜像站
  5. 华为云开源镜像站
  6. 腾讯软件源

更换国内源

bash
# 备份原配置文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑源文件
vi /etc/apt/sources.list
# 替换为新的镜像源(以阿里云为例)
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
# 更新软件包 缓存
sudo apt update

选择镜像源的建议

  • 南方用户:优先选择 腾讯云华为云
  • 北方用户:优先选择 清华大学中科大
  • 教育网用户清华大学中科大 有专线优化,速度更快。

源代码安装

"源代码编译安装"是指从一个软件的源代码(原始的、可读的程序代码)开始,通过编译(将源代码转换成计算机可执行的二进制代码)和安装(将编译好的程序放置到合适的位置,设置好环境变量等)的过程,最终在计算机上安装并运行该软件

使用源代码的优点

  • 获得最新的软件版本,及时修复 bug

  • 根据用户需要,灵活制定软件功能

应用场合举例

  • 安装较新版本的应用程序时
  • 当前安装的程序无法满足需要时
  • 需要为应用程序添加新的功能时

完整性校验

计算 MD5 校验和,并与官方提供的值相比较,判断是否一致。若不一致,可能 源码包破损或被人植入程序,需谨慎。

bash
md5sum file.txt > checksum.md5		# 生成校验文件
md5sum -c checksum.md5				# 验证文件 输出:file.txt: OK
mermaid
graph TD
    A[下载源代码安装包文件] --> B[步骤1:tar解包]
    B -->|用途:解压并释放源代码包到指定的目录| C[步骤2:./configure 配置]
    C -->|用途:设置安装目录、安装模块等选项| D[步骤3:make 编译]
    D -->|用途:生成可执行的二进制文件| E[步骤4:make install 安装]
    E -->|用途:复制二进制文件到系统,配置应用环境| F[测试及应用、维护软件]

案例编译安装httpd

openEuler编译安装httpd

bash
# 安装依赖
dnf install -y gcc gcc-c++ make zlib-devel pcre-devel expat-devel libtool openssl-devel
# 获取源码包
wget https://archive.apache.org/dist/httpd/httpd-2.4.54.tar.gz
wget https://dlcdn.apache.org//apr/apr-1.7.5.tar.gz
wget https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz
# 解压源码到指定路径
tar xf httpd-2.4.54.tar.gz -C /usr/src/
tar xf apr-1.7.4.tar.gz -C /usr/src/httpd-2.4.54/srclib/
tar xf apr-util-1.6.3.tar.gz -C /usr/src/httpd-2.4.54/srclib/

mv /usr/src/httpd-2.4.54/srclib/apr-1.7.4/ /usr/src/httpd-2.4.54/srclib/apr
mv /usr/src/httpd-2.4.54/srclib/apr-util-1.6.3/ /usr/src/httpd-2.4.54/srclib/apr/util

#预配置
./configure --prefix=/usr/local/apache
# 编译
make
# 安装
make install
# 编译安装后,修改配置文件
1>备份后,修改配置文件
cd /usr/local/apache/conf/
cp httpd.conf httpd-$(date +%F).conf
2>修改文件
vi /usr/local/apache/conf/httpd.conf
……
#ServerName www.example.com:80
ServerName www.example.com:80
# 启动 Apache
/usr/local/apache/bin/apachectl start

# 进程检测
ps aux | grep "httpd"

# 注:关闭防火墙:systemctl stop firewalld
#   永久关闭: systemctl disable firewalld
# 注: ./configure –help”可查看帮助 ,典型的配置选项: --prefix=软件安装目录

ubuntu下安装httpd

bash
下载httpd-2.4.54,下载地址:https://archive.apache.org/dist/httpd/httpd-
2.4.54.tar.gz
下载apr-1.7.4,下载地址:https://dlcdn.apache.org//apr/apr-1.7.4.tar.gz
下载apr-util-1.6.3,下载地址:https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz
# 下载安装包
wget https://archive.apache.org/dist/httpd/httpd-2.4.54.tar.gz
wget https://dlcdn.apache.org//apr/apr-1.7.4.tar.gz
wget https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz

# 解压指定目录
tar xf httpd-2.4.54.tar.gz -C /usr/src/
apr-1.7.4.tar.gz和apr-util-1.6.3.tar.gz,分别上传至/usr/src/httpd-2.4.54/srclib/目录,依次执行以下命令
tar xf apr-1.7.4.tar.gz -C /usr/src/httpd-2.4.54/srclib/
tar xf apr-util-1.6.3.tar.gz -C /usr/src/httpd-2.4.54/srclib/
mv /usr/src/httpd-2.4.54/srclib/apr-1.7.4/ /usr/src/httpd-2.4.54/srclib/apr
mv /usr/src/httpd-2.4.54/srclib/apr-util-1.6.3/ /usr/src/httpd-2.4.54/srclib/aprutil

# 安装依赖
apt update -y
apt install build-essential libpcre3 libpcre3-dev libssl-dev -y
apt install libexpat1-dev -y
apt install libapr1-dev libaprutil1-dev -y


# 预配置
cd /usr/src/httpd-2.4.54
./configure --prefix=/usr/local/apache

# 编译
make

# 安装
make install

# 编译安装后,修改配置文件
1>备份后,修改配置文件
cd /usr/local/apache/conf/
cp httpd.conf httpd-$(date +%F).conf
2>修改文件
vi /usr/local/apache/conf/httpd.conf
……
#ServerName www.example.com:80
ServerName www.example.com:80
# 启动 Apache
/usr/local/apache/bin/apachectl start

# 进程检测
ps aux | grep "httpd"

# 注:关闭防火墙:systemctl stop firewalld
#    永久关闭: systemctl disable firewalld
# 注: ./configure –help”可查看帮助 ,典型的配置选项: --prefix=软件安装目录

Linux 平均负载

Linux 系统的平均负载(Load Average)是一个重要的性能指标,它反映了系统在一段时间内的负载情况。理解和管理负载均衡对于系统性能优化至关重要。

平均负载是指单位时间内,系统处于可运行状态(R)和不可中断状态(D)的平均进程数。它通常显示为三个数值,分别代表过去1分钟、5分钟和15分钟的平均负载。

平均负载均衡解读

  • 单核CPU:负载值1.00表示CPU完全利用
  • 四核CPU:负载值4.00表示所有核心完全利用
  • 负载高于CPU核心数可能表示系统过载
  • 理想情况下,负载应略低于CPU核心数

平均负载均衡指标

  • 理想状态:负载值 ≤ CPU 核心数(每个核心处理一个进程)
  • 警戒线:负载值 > CPU 核心数的 70% 时需关注,> 100% 表示过载