欧洲世界杯_06年世界杯梅西 - hello186.com

Linux 安装Apache

2025-08-13 04:17:33 世界杯经典比赛 4589

通过包管理工具安装Apache

redhat系列:

在Red Hat及其衍生版本中,Apache HTTP Server的包名被称为httpd,这是“HTTP daemon”的缩写。

sudo yum install httpd -y

debian系列:

在Debian及其衍生版本中,Apache HTTP Server的包名是apache2。这个命名反映了Apache HTTP Server的主要版本号

sudo apt install apache2 -y

源码编译安装Apache

1、安装编译工具

sudo apt install make gcc -y

说明:Apache是采用autoconf来构建Makefile文件,通过该工具创建的配置脚本configure,该脚本会根据目标系统的特点和用户指定的选项生成适当的 Makefile。

2、下载源码

下载apr和apr-util源码包地址:https://apr.apache.org/

下载Apache源码包地址:https://httpd.apache.org/download.cgi

说明:

APR:Apache Portable Runtime 的缩写,提供了一套API,使Apache HTTP Server能够平稳地运行在不同的操作系统上。通过使用apr,Apache HTTP Server的开发者可以编写一次代码,在多种平台上编译和运行,而无需担心平台间的差异。

APR-util:是apr的伴生库,提供了一些额外的实用功能,如XML解析、数据库连接等。这些额外的功能对于Apache HTTP Server的某些模块非常重要

3、将apr、apr-util源码和Apache源码合并

APR 解压到 /httpd_source_tree_root/srclib/apr 目录

APR-Util 解压到 /httpd_source_tree_root/srclib/apr-util 目录

说明: 将 apr 和 apr-util 的源码与 Apache 源码合并,然后在编译 Apache 源码的时候一起编译和安装这些组件。这种方法通常被用于确保 Apache 使用特定版本的 apr 和 apr-util,或者在系统上没有预先安装这些库的情况下使用。

4、安装依赖:

# debian 系列

sudo apt install libpcre3-dev libexpat1-dev -y

# redhat 系列

sudo yum install pcre-devel expat-devel -y

具体还需要哪些依赖文件,可以参考官方文档:https://httpd.apache.org/docs/2.4/install.html

5、生成Makefile文件

# 基本参数选项

sudo ./configure --prefix=/usr/local/apache --with-included-apr=/home/ehigh/apache_source/httpd-2.4.58/srclib --enable-modules=most --enable-mpms-shared=all --with-mpm=event

6、编译和安装

make && sudo make install

7、修改PATH变量

# 注意单引号要加上

# echo 'PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh

$ source /etc/profile.d/httpd.sh

8、创建专有用户

useradd -s /sbin/nologin -r apache

9、mam手册配置

# vim /etc/man_db.conf

MANDATORY_MANPATH /usr/local/apache/man

# mandb

说明:

如果编译安装了多个程序,并且这些程序各自带有自己的手册页(man pages)存储在不同的目录中,可以在 /etc/man_db.conf 文件中使用多个 MANDATORY_MANPATH 指令来指定这些不同的路径。

这样通过指定一个额外的路径,系统在查找手册页(即 man pages)时会搜索这些路径下的文件。

10、service文件准备

ehigh@ubuntu:~$ systemctl cat apache2.service

# /lib/systemd/system/apache2.service

[Unit]

Description=The Apache HTTP Server

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/apache/bin/apachectl start

ExecReload=/usr/local/apache/bin/apachectl restart

ExecStop=/usr/local/apache/bin/apachectl stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

Apache的 configure脚本配置选项:

基础选项:

--prefix:指定Apache服务的安装位置,默认是/usr/local/apache

apr组件选项:

--with-included-apr:指定apr和apt-util组件的源码所在路径,应该放在Apache源码目录下的srclib下,并命名为apr和apr-util

--with-apr:如果apr已经安装好了,指定apr的安装目录

--with-apr-util:如果apr-util已经安装好,指定apr-util的安装目录

模块选项:

--enable-modules:指定哪些模块在编译的时候会被安装,可以是具体的模块名称,也可以是预设值。

all:启用所有可用的模块。

most:大多数常用的模块。这包括了核心模块以及其他被广泛使用的模块

few:只启用一些基本和最常用的模块

none:不启用任何模块

reallyall:启用所有可用的模块,包括那些通常不包括在 "all" 选项中的模块

--enable-mpms-shared:指定那个MPM模块是OSD模式,也可以使用系统的预设值。

all:表示将所有的MPM模块指定为动态共享对象(DSO)模块,这样后期可以在不重新编译Apache的情况下切换工作模式。

--with-mpm:指定默认的多处理模块(MPM),即运行apache的默认工作模式。

event

worker

prefork

innt

systemd的支持:

--enable-systemd:在编译时启用对systemd的支持。

Apache 使用apr中间件的原因:

Apache的跨平台和兼容性:Apache设计之初,考虑的就是要在多种不同的操作系统和环境中运行。所以通过APR 作为一个抽象层,由它统一的 API 来处理操作系统级的任务,如文件系统操作、网络通信、内存管理等。

简化开发和维护:Apache 开发者可以编写一次代码,不需要花费时间去处理各种操作系统特有的细节。

Apache 源码目录介绍:

build:包含与构建过程相关的脚本和工具。

changes-entries:包含关于Apache版本之间变更的信息

docs:包含Apache文档文件。

include:包含Apache的头文件。

modules:包含Apache的模块源代码。

os:包含特定于操作系统的源代码

server:包含Apache服务器的核心功能源代码

srclib:包含Apache使用的一些第三方库,如APR(Apache Portable Runtime)和APR-Util

support:包含一些辅助脚本和程序,这些工具用于服务器的管理和维护

Apache 安装目录介绍:

bin:存放apache的二进制可执行文件和相关工具

build:编译 Apache 时生成的一些构建文件和脚本。这些文件在安装和配置 Apache 过程中被使用。

cgi-bin:存放 CGI 脚本的默认目录

conf:包含 Apache 的相关配置文件

error:服务器错误响应时显示的 HTML 文件和其他相关文档

htdocs:Apache 的默认文档根目录

icons:存放网页和目录列表中使用的一些标准图标

include:Apache 开发时可能需要的头文件

lib:存放 Apache 使用的库文件。

logs:存放apache的日志文件

man:存放apache的man帮助文件

manual:存放 Apache 的在线手册

modules:存放apache的模块文件

Apache 相关工具:

官方手册:https://httpd.apache.org/docs/2.4/programs/

apachectl

apachectl其实是一个shell脚本,用于启动、停止、重启 Apache 服务器以及执行一些其他管理任务。

apachectl的两种工作模式:

前端控制器模式: 在这种模式下,apachectl充当httpd命令的简单前端。它设置必要的环境变量,然后调用httpd,同时传递任何命令行参数。

SysV init 脚本模式: 在这种模式下,apachectl接受简单的一词参数(如start、restart、stop),并将它们转换为发送给httpd的适当信号。

apachectl 命令行选项

start:启用apache服务

stop:停止apache服务

restart:重启apache服务

graceful:平滑重启apache服务。即不中断当前连接的情况下重新加载配置文件并启动新的子进程

configtest:检查配置文件语法是否正确

status:显示Apache HTTP Server的简略运行状态。

前端控制器模式和脚本模式的区别:

两种模式效果上是等价的,取决于使用习惯。

前端控制器模式: 可以理解为apachectl等价于 httpd,命令行参数直接传递给 httpd 服务

脚本模式: 接受简单的命令(通常是单词),用于控制 Apache 服务。这些命令会被转换为向 httpd 发送适当的信号,从而执行相应的操作。

例如:前端控制器模式

apachectl -t 等价于 httpd -t

apachectl -k graceful 等价于 httpd -k graceful

例如:init模式

apachectl restart

ab工具:

ab全程是Apache Bench。是一个用于基准测试的工具,主要用于测试 Apache HTTP 服务器的性能。

ab 使用场景:

可以对任何支持HTTP的Web服务器进行性能测试,不仅限于Apache服务器。主要用于测试HTTP服务器的性能,更适合于测试Web应用的吞吐量和响应时间

apxs 工具

全称为APache eXtenSion tool,是Apache提供的一个用于构建和安装扩展模块的工具。主要是通过模块的源码创建动态共享对象(DSO)

apxs 使用格式

sudo apxs -i -a -c 模块源码文件

-c 选项:编译指定的源代码文件,源文件通常是 .c 扩展名。它会生成一个动态共享对象(.so 文件),这就是实际的 Apache 模块。

-i 选项:apxs 会将编译好的模块安装到 Apache 的模块目录中。这相当于 make install 的过程

-a 选项:apxs 会自动修改 Apache 的配置文件(通常是 httpd.conf 或 apache2.conf),添加一个 LoadModule 指令来加载新安装的模块。

例如:当前Apache环境已经安装好了,需要echo这个模块,就可以通过编译模块源码实现

sudo apxs -i -a -c mod_echo.c

Apache 模块管理

背景:

存在这么一种情况,如果当前Apache已经安装好了,但是缺少某个模块,不想重新编译安装Apache,这个时候就可以通过apxs工具来编译模块源码实现模块的安装。

apxs 会自动查找 Apache 安装的位置。这包括 Apache 的模块目录(用于存放编译后的模块 .so 文件)和 Apache 的配置文件目录(通常是 httpd.conf 或类似文件所在的目录)。

模块源码存放目录:

在Apache 源码目录下的 modules 目录中,就存放了相关模块的源码文件。

例如:编译安装mod_echo模块

sudo apxs -i -a -c mod_echo.c

说明:

不管Apache是编译安装还是包管理工具安装,都可以使用apxs来安装模块。

安装过程中的依赖问题需要自行解决。

Apache 模块的两种模式

静态模式: 模块在编译时被直接集成到 Apache 的 httpd 二进制文件中。

特点:

apache 服务器在启动时自动加载这些模块,无需额外的配置。

要添加或移除模块,需要重新编译 Apache 服务器

DSO模式: 是动态共享对象(Dynamic Shared Object)的缩写,模块作为独立的共享对象文件(例如 .so 文件)存在,可以在 Apache 启动时或运行时动态加载。

特点:

灵活性好,在不重新编译 Apache 的情况下添加、删除或更新模块。

有轻微的性能开销,因为模块在运行时被动态加载。