Apache配置说明

Lamp之-Apache服务生产实战应用指南(02.apache配置说明)
1.apache的目录结构
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules
[root@c601 apache]# tree /application/apache/bin/   
/application/apache/bin/ #<--apache的命令目录
├── ab #Apache HTTP服务器性能测试工具,简单易用。同类软件还有jmeter、loadrunner、webbench等。
├── apachectl #这是apache的启动命令,需重点掌握,apachectl是一个脚本,详细说明见附录。
├── apr-1-config 
├── apu-1-config
├── apxs  #apxs是一个为apache HTTP服务器编译和安装扩展模块的工具,在进行DOS方式编译时会用到,后文
在编译php软件时就用到了此命令,如:--with-apx2=/application/apache/bin/apxs。
├── checkgid
├── dbmmanage
├── envvars
├── envvars-std
├── htcacheclean #这是清理磁盘缓冲区的命令,需要在编译时指定相关参数才可以使用。一般用的很少。
├── htdbm
├── htdigest
├── htpasswd #建立和更新基本认证文件,如:配置nagios等监控服务时会用到。
├── httpd #http为apache的控制命令程序,apachectl执行时会调用httpd。
├── httxt2dbm
├── logresolve
└── rotatelogs #为apache自带的日志轮询命令,也还可以使用,但在工作场景习惯由cronlog替代之。


[root@c601 apache]# tree -L 1 /application/apache/conf/  <--apache配置文件目录
/application/apache/conf/ #这是apache所有配置文件的目录,极其重要。
├── extra #这是额外的apache配置文件目录,这个目录里的文件我们会经常访问修改,如:http-vhosts.con默认就在此目录
├── httpd.conf #apache的主配置文件,这个文件我们会经常访问修改,其每一行的参数作用都应该弄清楚明白。
├── magic
├── mime.types
└── original


[root@c601 apache]# tree -L 1 htdocs/
htdocs/       #这个是编译安装的默认的站点目录。
├── index.html #默认的首页文件。在实际环境中,大家习惯用index.html、index.php、index.jsp作为网站的首页文件。
                  首页文件是在httpd.conf中事先定义好的。具体的参数为:Directoryindex index.html


[root@c601 apache]# tree -L 1 logs/
logs/        #这是apache的日志目录
├── access_log #这个是apache的默认的访问日志。使用tail -f access_log查看日志。
├── cgisock.27173 
├── error_log #这个是apache的错误日志。
└── httpd.pid #用来存放apache的主进程号。
[root@c601 apache]# ps -ef|grep httpd|grep -v grep|grep root
root     27173     1  0 19:08 ?        00:00:00 /application/apache2.2.34/bin/httpd -k start


[root@c601 apache]# tree -L 1 modules/
modules/       #用来存放apache的模块目录
└── httpd.exp


2.1apache主配置文件httpd.conf说明 39:30
[root@c601 conf]# egrep -v "^.*#|^$" httpd.conf 
ServerRoot "/application/apache2.2.34" #apache的根目录,应只能root访问,一般不需要更高此配置。
Listen 80   #apache监听的端口,默认为80端口,如果同时监听91端口可以增加一行如:Listen 91
<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
User daemon             #apache的用户。默认为daemon,建议修改,如:baizuo。
Group daemon            #apache的用户组。默认为daemon,建议修改,如:baizuo。
</IfModule>
</IfModule>
ServerAdmin you@example.com      #系统管理员邮箱。非常重要选项。当网站出现问题时,页面会显示此邮箱地址。
DocumentRoot "/application/apache2.2.34/htdocs"  #apache的默认web站点目录路径,结尾不要添加斜线。
<Directory />           #这将禁止访问的文件系统所在目录,并添加你希望允许访问的目录块。
    Options FollowSymLinks #FollowSymLinks表示允许使用符号链接,没添加的选项表示禁用。
    AllowOverride None #表示禁止用户对目录配置重载,普通站点目录此项建议不开。
    Order deny,allow #以deny方式优先处理,没有明确拒绝的话都将通过,即允许未被明确拒绝的访问。
    Deny from all #明确所指,拒绝所有访问。
</Directory>
62-68行为默认apache站点的限制配置,如果读者私自配置了站点而没配置这里就会出现403错误。
<Directory "/application/apache2.2.34/htdocs"> #设置了/application/apache2.2.34/htdocs目录块权限
    Options Indexes FollowSymLinks #FollowSymLinks表示禁止使用符号链接, Indexes表示允许目录浏览。
这很危险应改为    Options -Indexes FollowSymLinks或者    Options FollowSymLinks取消目录浏览功能。
    AllowOverride None #表示禁止用户对目录配置文件(.htaccess进行修改)重载,不建议开启,有时开发在这里会有需求,
一般禁止,由SA来控制这里。
    Order allow,deny #以allow优先处理,没有明确说明允许的话都将拒绝访问,即拒绝未被明确允许的访问。
    Allow from all #允许所有访问,因为是提供给所有人web访问服务器,所以权限要放开。
</Directory>
<IfModule dir_module>
    DirectoryIndex index.html #默认的apache首页文件。如果虚拟主机没有此配置,默认应用在这里配置。
首页的配置文件可以有多个,每个文件使用空格分开。
</IfModule>
<FilesMatch "^\.ht"> #防止.htaccess和.htpasswd等重要隐藏文件被web用户看到。
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>
ErrorLog "logs/error_log" #错误日志路径为logs为apache安装目录的相对路径,遇到apache错误记得要查看此文件。
LogLevel warn 
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined #访问日志格式
    LogFormat "%h %l %u %t \"%r\" %>s %b" common #普通访问日志格式
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" common #默认站点访问日志配置
</IfModule>
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/application/apache2.2.34/cgi-bin/" #配置cgi别名,ScriptAlias方法可学习。
</IfModule>
<IfModule cgid_module>
</IfModule>
<Directory "/application/apache2.2.34/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
DefaultType text/plain  #DefaultType定义当不能确定MIME类型时服务器提供的默认MIME类型。
<IfModule headers_module>
    RequestHeader unset Proxy early
</IfModule>
<IfModule mime_module>
    TypesConfig conf/mime.types
    AddType application/x-compress .Z #AddEncoding允许你在信息传送中使用(Mosaic/X 2.1+)解压缩信息。
注意:不是所有浏览器都支持这个选项。
    AddType application/x-gzip .gz .tgz
</IfModule>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>


2.2 apache扩展配置说明
apache的扩展配置文件是通过httpd.conf主配置文件中的Include命令实现的,不过在默认情况是注释状态。
摘录了httpd.conf主配置文件中部分include行,如下所示。
# Virtual hosts
#Include conf/extra/httpd-vhosts.con #取消注释即可使用扩展虚拟主机配置
2.2.1 通过tree命令查看extra目录下扩展配置文件
[root@c601 conf]# tree -L 1 extra/
extra/
├── httpd-autoindex.conf
├── httpd-dav.conf   #dab支持配置
├── httpd-default.conf #配置的是apache的相关服务参数:超时时间,保持连接时间等。
├── httpd-info.conf
├── httpd-languages.conf #语言支持配置
├── httpd-manual.conf
├── httpd-mpm.conf #服务器池管理,即优化apache的配置文件,选择apache的模式及配置连接数。worker/prefork模式。
├── httpd-multilang-errordoc.conf
├── httpd-ssl.conf  #提供apache SSL支持配置文件
├── httpd-userdir.conf
└── httpd-vhosts.conf #虚拟机配置文件
2.2.2 apache虚拟主机的配置
通过执行命令,去掉httpd-vhosts.conf的虚拟主机配置文件中的注释及空行后的配置如下:
[root@c601 conf]# egrep -v "^#|^$" extra/httpd-vhosts.conf 
NameVirtualHost *:80 
#这里表示使用基于名称的虚拟机主机配置,这是产品环境下最常用的配置。*:80中的*表示监听本机所有IP地址,
80表示在80端口上提供http服务。如果*改为具体IP,就是表示监听本机指定的IP地址的服务请求。
<VirtualHost *:80>
#定义一个虚拟主机,监听本机所有的IP地址,80端口上提供http服务请求。
    ServerAdmin webmaster@dummy-host.example.com
#这里可以配置管理员的信箱。如123444@163.com。
    DocumentRoot "/application/apache2.2.34/docs/dummy-host.example.com"
#提供服务的程序目录,也称为站点目录。
    ServerName dummy-host.example.com
#这里配置提供服务的域名,如www.baidu.com,如果是生产环境需要把www.baidu.com解析到服务器上配置的外网VIP或IP上,
如果是测试,也可在本机上做hosts解析。
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
#这里可以配置错误apache日志路径,错误日志是调试apache的一个非常重要的日志。有什么错误信息一般这里都会老老实实的告诉你。
    CustomLog "logs/dummy-host.example.com-access_log" common
#访问日志配置,生产环境用,一般用combined格式替代common格式,以获取更多的日志格式输出。
</VirtualHost>
#这是虚拟主机的结尾,如果还要配置新的虚拟主机,则可以再增加<VirtualHost></VirtualHost>。
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/application/apache2.2.34/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值