安装与启动 Apache

从 Apache 源码编译

编译 Apache 时加入第三方模块,有两种方式。

把模块静态链接到 Apache 中:

--with-module 

动态加载模块:

--enable-modules 

如果是动态加载的模块,应该在 httpd.conf 中添加 LoadModule 指令。

常见模块,都有简写的编译选项,如:

--with-ssl
--enable-ssl

Apache 常见编译选项:

--enable-so

开启动态库加载支持。

--enable-ssl

开启 HTTPS 支持。Apache 2.x 开始源码包中已携带 mod_ssl,不需要单独安装,只需在 configure 时添加 –enable-ssl 参数即可。注意系统需要有 OpenSSL 的开发包:

$ sudo yum install openssl-devel

如果 --enable-ssl 报错如:undefined reference to ap_thread_stacksize,可以尝试 make distclean,然后再次 configure。

--enable-rewrite

开启 Rewrite 模块

--with-mpm=worker

mpm(Multi Process Module),默认是 prefork,建议使用默认工作方式。

配置 Apache

无论是用 yum 或下载源代码安装,初次启动前,都应该修改配置文件 httpd.conf

配置的重点是:

如果网站支持 PHP,且默认访问页面为 index.php,应该修改配置:

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

如果没有 index.html 或 index.php 文件,Apache 可能把网站根目录下的所有文件和目录都列出来了,要拒绝列出文件和目录,把下面这行注释掉:

Options Indexes FollowSymLinks

如果在一个 IP 上部署了多个网站,就应该使用 VirtualHost,设置每一个网站的 DocumentRoot 位置、访问权限。

如果启用 https(默认 443 端口),要每个网站的证书和其 ServerName 是完全对应的,并确定防火墙开启了 443 端口。

如果是大版本的 Apache 升级(如从 2.2.x 升级到 2.4.x),首先要阅读升级日志,尤其注意配置选项的变化。上一次编译 Apache 的命令行参数,被保存在 config.nice 文件中,升级时可以重用,也可以在 config.log 中找到上一次的编译参数。

Apache 常用命令

启动 Apache

$ sudo apachectl start

查看 Apache 加载了哪些模块

$ apachectl -D DUMP_MODULES

重启和关闭 Apache

$ sudo apachectl restart
$ sudo apachectl stop

当 Apache 运行时修改 httpd.conf,可以使用

$ sudo apachectl reload

重新加载配置文件,而不必重启 Apache。

httpd 进程

httpd 是 Apaceh HTTP Server 的主程序。httpd 会 fork 子进程或创建线程来处理 HTTP 请求。我们通常通过 apachectl 来调用 httpd,而非直接调用它。

给 httpd 发送信号,使之启动、重启或停止运行:

-k start | restart | graceful | stop | graceful-stop

-l 输出静态编译到 httpd 中的模块,如:

$ apachectl -l
Compiled in modules:
  core.c
  mod_so.c
  http_core.c

输出已加载的静态或动态模块:-M

检查配置文件的语法是否正确:-t

查看 httpd 的版本号:-v

查看 httpd 的编译时参数(以及版本号):-V

查看 httpd 运行时加载的配置文件:

$ apachectl -V | grep SERVER_CONFIG_FILE
   -D SERVER_CONFIG_FILE="conf/httpd.conf"

Apache 模块

modules 是 Apache 的模块文件(多为 .so 共享文件)。

手工编译 Apache 模块的方法:找到 Apache 模块路径,使用 apxs(APache eXtenSion tool)编译 Apache 扩展模块。Apache 模块路径在:download/httpd-x.x.x/modules 中,有几个类别。需要安装模块时 find 一下再用 apxs 安装即可。通常使用如下命令编译 Apache 模块:

$ apxs -cia mod_deflate.c

说明:

Apache 常用功能配置

压缩页面传输

开启 Apache 压缩功能,这样能减少流量,加快页面传输速度:

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript