Apache 是使用最普遍的 Web 服务器软件。Apache 服务器几乎可以在所有的计算机平台上运行,由于它广泛的跨平台性和安全性,因此 Apache 是最流行的 Web 服务器端软件之一。
Apache(Apache HTTP Server)网站服务器,可以在大多数计算机操作系统中运行,它采用了模块化设计,从而拥有简单而强有力的基于文件的配置过程。
Apache 的模块分为静态模块和动态模块两种。Apache 最基本的模块是静态模块,静态模块不能够随意的添加或卸载;而动态模块则可以进行添加和删除操作,因此使 Apache 具有很大的灵活性。
Apache 的特点有以下几个方面:
Apache 采用源码安装,因此在安装 Apache HTTP Server 之前需要下载一些依赖软件包,有些可以使用 yum 进行直接安装,但还有些需要在 Apache 官方网站下载源码软件:
下载完成之后把安装包复制到虚拟机的文件夹下。
注意,Linux 中源码的安装一般分为 3 个步骤:配置(configure)、编译(make)、安装(make install)。其中,“configure --prefix=安装目录,--with-name=依赖库源码解压目录”,--prefix 指的是安装目录,--with 指的是安装本文件所依赖的库文件。
在安装 httpd 时,进行指定安装,用到 ./configure –prefix。“.”表示当前目录;“/”是目录分隔符;总的来说就是当前目录下。
./configure 是源代码安装的第一步,它的作用是检测系统配置,生成 makefile 文件,从而可以使用 make 和 make install 来编译和安装程序。因此可以先输入命令 ls,查看是否有 configure 或者 makefile 文件。
1) 安装包 gcc 或 gcc-c++。先查看是否已经有安装包 gcc 或 gcc-c++,如图 1 所示。
从查询结果中可以看出 gcc 包已经安装,还需要安装 gcc-c++ 包,安装命令如下:
[root@bogon abcd]#yum install gcc-c++
2) 安装包 apr 和 apr-util。查看安装包 apr 和 apr-util,然后进行解压。命令如下:
[root@bogon abcd]# ls apr*
apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz
[root@bogon abcd]# tar -zxvf apr-1.7.0.tar.gz
[root@bogon abcd]# cd apr-1.7.0
[root@bogon apr-1.7.0]# ls
输入命令 ls,查看是否有 configure 或者 makefile 文件,执行结果如图 2 所示。
然后新建安装目录 /usr/local/apr,同时检测系统配置,最后再进行安装操作。命令如下:
[root@bogon apr-1.7.0]# mkdir /usr/local/apr
[root@bogon apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@bogon apr-1.7.0]# make
[root@bogon apr-1.7.0]# make install
安装完成后,需要进行验证。验证的部分结果如图 3 所示。
对 apr-util-1.6.1 软件包的解压、配置及安装操作,命令如下:
[root@bogon abcd]# tar -zxvf apr-util-1.6.1.tar.gz
[root@bogon abcd]# cd apr-util-1.6.1
[root@bogon apr-util-1.6.1]# mkdir /usr/local/apr-util
[root@bogon apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config
[root@bogon apr-util-1.6.1]# make
[root@bogon apr-util-1.6.1]# make install
3) 安装包 PCRE。需要对 pcre2-10.33.zip 软件包进行解压、配置及安装操作,命令如下:
[root@bogon abcd]# unzip pcre2-10.33.zip
[root@bogon abcd]# cd pcre2-10.33
[root@bogon pcre2-10.33]# mkdir /usr/local/pcre2
[root@bogon pcre2-10.33]# ./configure --prefix=/usr/local/pcre2 --with-apr=/usr/local/apr/bin/apr-1-config
[root@bogon pcre2-10.33]# make
[root@bogon pcre2-10.33]# make install
4) 安装 Apache。需要对 httpd-2.4.41.tar.gz 软件包进行解压、配置,最后再进行安装操作,命令如下:
[root@bogon abcd]# tar -zxvf httpd-2.4.41.tar.gz
[root@bogon abcd]# cd httpd-2.4.41
[root@bogon httpd-2.4.41]# ./configure --prefix=/usr/local/apache --with-pcre2=/usr/local/pcre2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
[root@bogon httpd-2.4.41]# make
[root@bogon httpd-2.4.41]# make install
configure 脚本主要用来检查系统环境、查找依赖文件、设置安装路径等,常用选项及描述如表 4 所示,另外还可以通过 ./configure -help 查看该脚本支持的所有选项。
选 项 | 描 述 |
---|---|
--prefix | 指定 Apache httpd 程序的安装主目录 |
--enable-so | 开启模块化功能,支持动态共享对象(DSO) |
--enable-ssl | 支持 SSL 地址加密 |
--enable-rewrite | 支持地址重写 |
--with-mpm | 设置 Apache httpd 工作模式 |
--with-suexec-bin | 支持 SUID、AGID |
--with-apr | 指定 apr 程序的绝对路径 |
5) 启动 Apache 服务。输入命令如下:
[root@bogon httpd-2.4.41]# /usr/local/apache/bin/apachectl start
安装完成后,Apache 会提供 apachectl 的启动脚本,apachectl 脚本在 /usr/local/apache/bin 目录下,该脚本用来进行 Apache httpd 的启动、关闭以及测试功能,apachectl 脚本的参数及描述如表 5 所示。
参 数 | 描 述 |
---|---|
start | 启动httpdf王序,如果已经启动过该f王j予,则会报错 |
stop | 关闭httpd程序 |
restart | 重启httpd程序 |
graceful | 启动httpd,不中断现有的http连接请求 |
graceful-stop | 关闭httpd,不中断现有的http连接请求 |
status | 查看httpd程序当前状态 |
configtest | 查看httpd主配置文件语法 |
没有修改配置文件的情况下,使用 start 启动 httpd 程序,可能会出现错误提示:“Could not reliably determine the server’s fully qualified domain name”,这说明 httpd 无法确定服务器域名称,这时可以通过修改主配置文件的 ServerName 项来解决。该提示也可以忽略,通过 netstat 命令查看 httpd 是否已经启动成功。
在客户端使用浏览器访问该 Web 服务器,当看到“It works!”时,说明服务器可以正常访问了。
Apache 配置文件默认存在 /usr/local/apache/conf 目录下,其中最主要的配置文件是 httpd.conf 文件。Apache httpd.conf 配置文件的主要内容及作用如表 6 所示。
主要内容 | 作 用 |
---|---|
ServerRoot | 主要用于指定 Apache 的安装路径,此参数值在安装 Apache 时系统会自动把 Apache 的路径写 入。如果是源代码安装,则默认路径为 /usr/local/apache |
Listen | 设置服务器监听的 IP 以及端口,默认监听服务器本机所有的 IP 地址的 80 端口 XistentIP 地址:] 端口 [协议],IP地址与协议为可选项,默认监听所有的 IP,使用 TCP 协议。一个配置文件中 可以多次使用Listen指令开启多个端口 |
LoadModule | 加载模块。语法格式:LoadModule模块模块文件名称 |
LoadFile | 类似于LoadModule,LoadFile可以通过绝对路径加载modules目录下的模块文件 |
ServerAdmin | 当网站出现故障时,ServerAdmin为客户提供一个可以帮助解决问题的邮件地址 |
ServerName | 设置服务器本机的主机名称及端口 |
DocumentRoot | 设置客户端访问网站的根路径,默认为/usr/local/apache/htdocs |
ErrorLog | 定位服务器错误日志的位置,默认使用相对路径 |
ErrorLogFormat | 设置错误日志的格式 |
CustomLog | 设置客户端的访问日志文件名及日志格式。语法格式:CustomLog 文件名格式 |
LogFormat | 描述用户日志文件格式。先为 LogFormat 指令设置的日志格式创建别名,再通过 CustomLog 调用该日志格式的别名 |
Include | 允许 Apache 在主配置文件中加载其他的配置文件 |
Options | 为特定目录设置选项 None:不启用任何额外功能; All:开启除 MultiViews 之外的所有选项; ExecCGI:允许执行 Options 指定目录下的所有 CGI 脚本; FollowSymlinks:允许 Options 指定目录下的文件连接到目录外的文件或目录 |
Order | 控制默认访问状态以及 Allow 与 Deny 的次序 使用Order deny,allow,先检查拒绝,再检查允许,当拒绝与允许有冲突时,允许优先,默认 规则为允许; 使用Order allow,deny,先检查允许,再检查拒绝,当允许与拒绝有冲突时,拒绝优先。默认 规则为拒绝 |
IfDeflne 容器 | IfDeflne 容器封装的指令仅在启动 Apache 时,测试条件为真才会被处理,测试条件需要在启动 Apache 时通过 httpd-D 定义 |
IfModule 容器 | 封装仅在满足条件时才会处理的指令,根据指定的模块是否加载,决定条件是否满足 |
Directory 容器 | 该容器内的指令仅应用于特定的文件系统目录、子目录以及目录下的内容。路径可以使用 ~ 匹 配正则表达式 |
Files 容器 | 类似于 Directory 容器,但 Files 容器内的指令仅应用于特定的文件,也可以使用 ~ 匹配正则表达式 |
FilesMatch 容器 | 仅使用需要匹配正则表达式的文件,容器内的指令仅应用于匹配成功的特定文件 |
Location 容器 | Location 容器内定义的指令仅对特定的 URL 有效,如果需要使用正则表达式匹配 URL,可以 使用 ~ 符号 |
1) 在对 pcre2-10.33.zip 软件包进行解压、检测配置时可能会出错,错误内容如下:
[root@bogon abcd]# unzip pcre2-10.33.zip
[root@bogon abcd]# cd pcre2-10.33
[root@bogon pcre2-10.33]# mkdir /usr/local/pcre2
[root@bogon pcre2-10.33]# ./configure --prefix=/usr/local/pcre2 --with-apr=/usr/local/apr/bin/apr-1-config
Configure:error:you need a C++ compiler for C++ support.
出现这个错误是因为缺少安装包 gcc-c++ 导致的,输入如下命令进行安装即可。
[root@bogon abcd]# yum install gcc-c++
2) 在对 httpd-2.4.41 进行配置时报错:
[root@bogon httpd-2.4.41]# ./configure --prefix=/usr/local/apache --with-pcre2=/usr/local/pcre2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
configure:checking for APR-util... configure: error: the --with-apr-util parameter is incorrect. It must specify an install prefix, a build directory, or an apu-config file.
上述问题主要是由于 apr-util 没有安装成功导致的,可以通过验证该目录是否为空来判断,因为有时候执行了 make 命令,但却忘记执行 make isntall 命令,所以导致发生这个错误。建议重新安装 apr-util。
3) 安装 apr-util 时出错,错误内容如图 7 所示。
该问题主要是因为缺少 expat.h 文件,需要使用命令安装 expat 库,命令如下:
[root@bogon abcd]# yum install expat-devel
4) 启动 Apache HTTP Server 时报错:
[root@bogon httpd-2.4.41]# /usr/local/apache/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using bogon.gfg1.esquel.com. Set the 'ServerName' directive globally to suppress this message
出现该问题时,需要编辑 httpd.conf 配置文件,添加 SeraverName 的具体 IP 地址。命令如下:
[root@ bogon conf]# cd /usr/local/apache/conf/
[root@ bogon conf]# ls
extra httpd.conf magic mime.types original
[root@ bogon conf]# vi httpd.conf
ServerName 192.168.9.132:80 //读者需根据自己的IP地址进行添加
[root@ bogon conf]# /usr/local/apache/bin/apachectl restart