Advanced
安装
安装 Apache 最简单的方式就是在线安装:
安装内核
# Installing on Fedora/CentOS/Red Hat Enterprise Linux
sudo yum install httpd
sudo systemctl enable httpd
sudo systemctl start httpd
# Installing on Ubuntu/Debian
sudo apt install apache2
sudo service apache2 start
安装Apache的时候默认会安装核心特性与多处理模块(MPM),其他的扩展模块可以后续自行安装。
安装模块
安装 Apache HTTP Server 内核的同时,会默认安装一些模块,通过 apachectl -M 命令即可查看。
$ apachectl -M
Loaded Modules:
core_module (static)
so_module (static)
...
安装模块有yum/apt在线安装和源码编译安装两种方式,其中在线安装非常简单:
在线安装
例如:准备在CentOS上安装 mod_ssl 模块:
-
搜索 mod_ssl 是否存在
sudo yum search mod_ssl============================= N/S matched: mod_ssl =============================mod_ssl.x86_64 : SSL/TLS module for the Apache HTTP Server -
搜索结果提示有一个 mod_ssl.x86_64 可用,接下来运行安装命令
sudo yum install mod_ssl -
等待自动安装,直至安装完成
源码安装
如果在线搜索找不到所需的 Module, 就需要通过源码编译安装的方式安装新的模块。主要步骤如下:
- 安装 apxs 这个Apache模块管理工具以及配套工具
yum install httpd-develyum groupinstall 'Development tools'
- 下载 Apache 源码到 /opt 目录,并解压之
cd /optwget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.41.tar.gztar xvf httpd-2.4.41.tar.gz
- 以安装 mod_auth_form 模块为例,我们找到其 所在的目录,然后运行编译命令
cd /opt/httpd-2.4.41/modules/aaamod_auth_form.c
- 编译成功,会增加一个模块配置文件:/usr/lib64/httpd/modules/mod_auth_form.so
以上的源码编译安装方案来源于此处
启停模块
需要注意的是,安装过的所有模块并不会全部被启用,即安装模块与启用是有区别的,只有安装之后才能被启用,被启用的模块也可以让它停止运行。接下来,我们讲解如何启停模块。
下面先介绍通过修改模块配置文件实现模块启用的方案:
以CentOS为例,我们打开Apache模块配置文件:/etc/httpd/conf.modules.d/00-base.conf
...
LoadModule version_module modules/mod_version.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule buffer_module modules/mod_buffer.so
#LoadModule watchdog_module modules/mod_watchdog.so
...
其中带“#”号的模块是没有启用的,如果需要启用,去掉“#”号,然后重启 Apache HTTP 服务即可。
修改Apache配置文件显得繁琐,可以安装通过a2enmod这个模块来管理Apache扩展模块的启停
更新
Apache HTTP Server在安全性方面有良好记录,并且开发人员社区高度关注安全性问题。但是,不可避免的是,某些问题(无论大小)都会在发布后在软件中发现。因此,保持对软件更新的了解至关重要。如果您直接从Apache获得HTTP Server的版本,我们强烈建议您订阅Apache HTTP Server公告列表,在其中可以随时了解新版本和安全更新。
原理
配置
Apache HTTP Sever 提供了灵活的配置项,以帮助用户适用各种业务场景。
配置文件
- 主配置文件:/etc/httpd/conf/httpd.conf
- 扩展配置文件:/etc/httpd/conf.d/.conf*
当Apache启动时,会加载/etc/httpd/conf.d/目录中的所有以.conf结尾的文件,做为配置文件来使用,所以管理员可以将配置推荐写在.conf中,如果将配置项写入主配置文件,系统升级时,配置项还要重新修改一遍,如果写在扩展配置项,则不存在此问题,同时也可以从繁杂的主配置文件中脱离出来。
配置项
| 配置项 | 说明 |
|---|---|
| ServerTokens OS | 系统信息,在访问出错时出现;把OS改为Minor,就不显示系统信息 |
| ServerSignature On | 把On改为Off就连普通的系统都给隐藏起来;改为Email就会显示管理员的邮箱(邮箱需要另外配置 ServerAdmin ) |
| ServerAdmin root@localhost | 管理员邮箱 |
| ServerName localhost | 服务器的主机名,一般是用虚拟机来设置,通常这个值是自动指定的,推荐显式的指定它以防止启动时出错 |
| UseCanonicalName Off | 设置为"On",Apache会使用ServerName指令的值 设置为 "Off"时,Apache会使用用户端提供的主机名和端口号。 如果有虚拟主机,必须设置为Off |
| ServerRoot "/etc/httpd" |