一.指定配置文件位置
1、编译安装时可以指定其配置文件安装路径./configure --sysconfdir=/etc/httpd
2、若仅是想在启动时指定特定的文件,可以使用apachectl -f /etc/httpd/httpd.conf
二.httpd.conf文件配置
http://www.phpv.net/html/1396.html
装好LAMP环境后,还要做下整合Apache与PHP相关配置,在apache配置文件里找到: AddType application/x-gzip .gz .tgz 在该行下面添加 AddType application/x-httpd-php .php 添加默认的php首页,找到: DirectoryIndex index.html 将该行改为: DirectoryIndex index.html index.htm index.php
三.动态和静态编译
动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。
静态编译就是 编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。所以其优缺点与 动态编译的可执行文件正好互补
安装apachen分为动态、静态两种方式。
动态编译,只需要在以后的使用中在配置文件中调整配置文件就可以调整加载模块;静态则相反,在编译中就决定了相应的模块。
./configure
--prefix=/usr/local/apache2
--enable-so
--enable-mods-shared=most
--enable-rewrite
--enable-speling
--enable-forward
--enable-ssl
--with-ssl=/usr/local/openssl
会导致,ssl启动apache的时候报告:
apachectl startssl
Syntax error on line 246 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/modules/mod_ssl.so into server: /usr/local/apache2/modules/mod_ssl.so: undefined symbol: X509_free
解释:
问题出在–enable-so,–enable-so表示让apache核心装载DSO,但是不实际编译任何动态模块;
–enable-ModuleName表示,编译并包含模块ModuleName;
–enable-ModuleName=shared表示,将这个模块编译成动态的。
正确方式:
搞清除上面所述的内容,就ok了:
应该去掉–enable-so这行;
如何希望动态编译模块:比如:–enable-rewrite应该替换为: –enable-rewrite=shared
最后,我将要编译的应该为:
./configure
--prefix=/usr/local/apache2
--enable-mods-shared=most
--enable-rewrite
--enable-speling
--enable-forward
--enable-ssl
--with-ssl=/usr/local/openssl
解释:
–enable-mods-shared=most表示,动态的编译进来大多数的模块。那么,–enable-mods-shared=all是指动态的编译所有的模块。如果把-shared去掉,就是静态的编译了。
./configure --prefix=/usr/local/apache --enable-mods-shared=all --enable-so |
解释
--prefix=/usr/local/apache apache的安装目录 --enable-mods-shared=all 动态加载所有的模块 --enable-so 核心装载dso |
但是,在实际配置的httpd.conf中,发现,按照以前在本地测试环境中配置的加载模块语句:
LoadModule rewrite_module libexec/mod_rewrite.so AddModule mod_rewrite.c |
这样的形式会报错误。
但是,修改之后:
LoadModule rewrite_module modules/mod_rewrite.so |
就没有错误了。
分析一下,这里肯定是静态加载,也就是只有地址,在用的时候再获取。那么就不能加上AddModule。为什么呢?
四.配置apache详解
./configure --prefix=/usr/local/apache-2.2.15 --enable-so --enable-mods-shared=most --with-mpm=worker
# --prefix=<Install_Path> 指明编译后的二进制文件安装到<Install_Path>目录,用实际安装路径替换<Install_Path>,如--prefix=/usr/local/apache-2.2.15 ,如果省略此配置参数,默认安装到/usr/local/apache2目录。