apache http server,俗称apache,程序名httpd,默认配置文件/etc/httpd/conf/httpd.conf;该文件通过其中的Include conf.d/*.conf指示包含/etc/httpd/conf.d目录下的所有.conf文件。

逐项解析就没必要了,httpd.conf中对各项配置的作用说明已经是比较清楚的了,或者直接看逼逼怪鸟哥的解释,只说自己以前感到不解的几个问题。

1.httpd.conf添加配置时一定要找到指定的位置添加才能生效吗?

答:修改某项配置原已有配置现要修改,那要找到其位置;但如是是添加新配置那不需要到特定位置,只要不在其他标签内部(<Directory></Directory>)皆可。

按httpd.conf自己的划分其配置分全局环境变量(Global Environment)、主服务器配置('Main' server configuration)、虚拟主机(Virtual Hosts)三大节区

但就实际配置来看,配置是作用于全局还是主服务器还是虚拟机,并不取决于其位置,而只是取决于属性名。

比如ServerTokens这一全局属性,不管你把他移到httpd.conf中的主服务节区,或者虚拟机节区,甚至是conf.d目录下的任意.conf文件,其都是作用于全局(当然不能将其置于其他标签内部,那样是非法配置了)。

所以最常见的配置php支持时,总说“找到LoadModule xxx处在其后边添加LoadModule php5_module modules/libphp5.so”,事实是你随便找个位置加上去一样生效的(比如文件尾,当然还一样不能在其他标签内部)。

2.httpd.conf中的目录为什么总没头没脑的,比如“Include conf.d/*.conf”这项,目录全路径是什么?

答:想明白httpd.conf中的目录,要搞清ServerRoot、DocumentRoot、Alias三项。

ServerRoot--httpd进程默认所处的目录,明白些就是其他Include等目录配置项的前辍。“Include conf.d/*.conf”全路径就是$ServerRoot/conf.d/*.conf(默认/etc/httpd/conf.d/*.conf)。

DocumentRoot--网站根目录,浏览器仅以http://ip:port访问时访问的目录。

Alias--别名功能,可将任意物理路径映射为DocumentRoot下的目录。比如Alias /error/ "/var/www/error/",就是物理路径/var/www/error/被映射为了$DocumentRoot/error,当访问http://ip:port/error时就是访问/var/www/error/目录。

3.apache如何修改网站根目录?

答:如2中所述网站根目录由DocumentRoot指定。

但是由于apache需要对目录权限进行配置,所以在修改根目录后要增加对新根目录的权限限制,一般的做法是直接将<Directory "/var/www/html"><Directory />标签中的默认路径"/var/www/html"改为新的根目录。

各<Directory><Directory />标签就是用来配置各相关目录的访问权限的。

4.apache如何使用php?

答:apache以模块方式将php引入,做为apache的一部份。

php与http服务器的结合,一般有cgi、fastcgi和模块三种形式;fastcgi是cgi的进程重用改进版。nginx使用php一般用fastcgi模式,apache使用php一般使用模块模式(当然其实fastcgi模式也是支持的)。

模块方式就类似动态链接库模式,动态链接库有一个dll文件,LoadModule php5_module modules/libphp5.so”就是加载$ServerRoot/modules/libphp5.so文件。

升级apache的php要使用--with-apxs2编译出新的libphp5.so文件然后复制到$ServerRoot/modules/目录将旧的替换。

5.<IfModule prefork.c></IfModule>等标签的作用是什么?

答:LoadModule加载的是动态加载库,prefork.c等是静态编译到httpd的功能模块。<IfModule>就是如果httpd中有静态编入了该模块,则对该模块使用以下限制。

可以使用httpd -l查看httpd静态编入了哪些模块。另外可以使用ldd /usr/sbin/httpd查看httpd运行依赖哪些动态库(注意不是LoadModule那些,httpd运行不用LoadModule那些也可以运行的,那些只是为了扩展httpd的功能才加进来的)。

最新文章

  1. Spatial Transformer Networks(空间变换神经网络)
  2. IELTS - Word List 28
  3. AC日记——codevs 1688 求逆序对
  4. 为 UIButton 添加长按事件
  5. 连接无线设备——与Wi-Fi直接连接
  6. codevs1297 硬币
  7. C#集合基础与运用
  8. C语言中指针变量如何向函数中传递
  9. log4j的基本使用和参数设定
  10. python 使用paramiko模块上传本地文件到ssh
  11. MySQL 如何使用索引 较为详细的分析和例子
  12. SSIS中xml的输入输出
  13. 【LeetCode】134.Gas Station
  14. ExtJS中xtype一览
  15. [OpenCV-Python] OpenCV 中的图像处理 部分 IV (五)
  16. tar 打包当前目录下文件但不包括该录
  17. 新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目
  18. 37.使用PreResultListener实现回调
  19. JavaScript 操作对象属性(设置属性, setter/getter, 序列化)
  20. PL/SQL Developer中输入SQL语句时如何自动提示字段

热门文章

  1. 主键非自增列 EF 插入数据库引起的 ID 列不能为 NULL 的错误
  2. 【BZOJ】3209: 花神的数论题
  3. 使用ajax无法跨源问题总结
  4. 设计模式(三)Singleton Pattern单例设计模式
  5. Servlet模板,一个供新手参考的模板
  6. HttpClient的POST请求返回302解决
  7. 在未排序的数组中找到第 k 个最大的元素
  8. Visual Studio 2015+InstallShield 2015
  9. eclipse中怎么调出左边项目列表,解决方法:主界面的最上面一栏的Window--ShowView--Project Explorer
  10. 【转】 多线程之linux线程调度策略