1. 系统环境
① centos版本:5.5
命令:cat /etc/redhat-release
② linux内核版本: 2.6.18-238.el5
命令:uname -a
2. 适应范围:源码编译,手工安装。
3. 安装apache版本:2.2.19
① 下载apache(http://httpd.apache.org/download.cgi#apache22)
http://labs.renren.com/apache-mirror//httpd/httpd-2.2.19.tar.gz
② 上传到指定目录(例如:/Uploadfile)
③ 切换到指定目录cd /Uploadfile
④ 解压文件 tar –zxvf httpd-2.2.19.tar.gz
⑤ 进入解压包目录 cd httpd-2.2.19
⑥配置./configure --prefix=/usr/local/webservers/apache
--enable-cgi --enable-rewrite --enable-so --enable-ssl --enable-mods-shared=most
参数说明:
--enable-mods-shared=most
动态加载模块(文章最后有说明),告诉编译器将所有标准模块都动态编译为DSO模块。
(--enable-mods-shared=all意思是动态加载所有模块,如果去掉-shared话,是静态加载所有模块。)
--prefix 指定程序安装的路径
--enable-cgi 启用CGI scripts支持
--enable-rewrite 支持地址重写功能
--enable-so 用来提供DSO支持的apache核心模块
--enable-ssl 启用SSL/TLS support (mod_ssl)支持
⑦ 编译 make
⑧ 安装 make install
⑨ 配置apache(httpd.conf)
1) 文档根目录 DocumentRoot "/usr/local/webservers/htdocs"
2) 去掉目录浏览权限
Options FollowSymLinks
3) 日志配置
#每24个小时(86400)生成一个错误日志
ErrorLog "|/usr/sbin/rotatelogs /usr/local/webservers/apache/logs/error-%Y-%m-%d.log 86400 480"
#每24个小时(86400)生成一个访问日志
CustomLog "|/usr/sbin/rotatelogs /usr/local/webservers/apache/logs/access-%Y-%m-%d.log 86400 480" common
⑩ 启动apache /usr/local/webservers/apache/bin/apachectl -k start
(这里为什么不是service httpd start,因为我们是手动安装apache,而service 是机器服务控制命令
,如果是用rpm包安装,应该需要使用service httpd start,这个本人没有求证过,大家可以试试)
【安全问题】
<Directory "/downloadfile">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
当目录里面没有index.html文件时 默认会将/downloadfile/MexFile目录列出来
修改 Options Indexes FollowSymLinks ,将 Indexes 参数去掉
【指定目录日志记录】
使用模块 SetEnvIf
vi httpd.conf
找到 LoadModule 的地方 在下面添加
LoadModule setenvif_module modules/mod_setenvif.so
然后找到日志格式设置的地方
LogFormat下面添加
SetEnvIf Request_URI "^/MexFile/.*$" ok
这句说明:只记录对MexFile目录下面的访问日志,其他路径下面的访问不会被记录日志
然后在CustomLog 最后加上 env=ok
CustomLog "logs/access_log" common env=ok
【按天生成日志】
编辑配置文件
vi httpd.conf
找到
CustomLog "logs/access_log" common env=log
添加
CustomLog "|/usr/local/apache/bin/rotatelogs /日志路径/日志名.%Y%m%d 28800 480"
重启apache即可
【说明】:
--enable-mods-shared=most
这句是表示动态加载的,模块加载分为动态和静态
静态
在使用./configure编译的时候,如果不指定某个模块为动态,即没有使用:
enable-mods-shared=module或者enable-module=shared这个2个中的一个,那么所有的默认模块为静态。那么何谓静态?其实就是编译的时候所有的模块自己编译进httpd这个文件中(我们启动可以使用这个执行文件,如:./httpd &),启动的时候这些模块就已经加载进来了,也就是可以使用了,通常为:<ifmodule> </ifmodule>来配置。所以大家看到的配置都是<ifmodule module.c> ,很显然,module.c这个东西已经存在httpd这个文件中了。
动态:
就是编译的时候,使用enable-module=shared或者enable-modules-shared=module来动态编译。那么什么是动态?静态是直接编译进httpd中,那么动态显然就不编译进去了,也就是你启动的时候根本不会加载这个模块,而是给你一个module.so文件,你一定要使用loadmodule这个语法来加载,这个模块才有效。
那么区别就出来了:静态的模块通常是<ifmodule></ifmodule>来配置,动态使用loadmoule来加载,然后再配置。
转载于:https://blog.51cto.com/5398822/936131