周二,一个忙碌的工作日,处理了许多事物之后,才有空来整理技术文档
今天继续分享apache服务里各文件的一些参数意思:
我之前已经将apache服务搭建完毕,开启web服务器,查看到web服务并没有开启!

开启apache服务:
[root@Centos-6 ~]# /application/apache/bin/apachectl start

apache目录结构详解
我之前用软链做了个apche文件操作,对这个文件下的目录结构之前只是做了大概的介绍。
先来看下bin/下面的文件内容:这里我将重要命令用绿色来标注。
[root@Centos-6 bin]# tree
.
|-- ab 指的的Apache服务器性能测试工具,泛指压力测试工具,同类软件有 jmeter、loadrunner、webbench......这些软件在WEB服务正式上线时会打压测试看下能够承受多大的并发量。
具体参考文档:http://oldboy.blog.51cto.com/2561410/775056

|-- *apachectl 指的是控制Apache启动命令,运维人员需要重点掌握,apachectl是一个脚本,实际上它调取了httpd的这条命令。
|-- apr-1-config
|-- apu-1-config
|-- apxs 指的是为Apache HTTP服务器编译和安装扩展模块的工具,在进行DSO方式编译模块时会用到。
|-- checkgid
|-- dbmmanage
|-- envvars
|-- envvars-std
|-- htcacheclean
|-- htdbm
|-- htdigest
|-- htpasswd 指的是建立和更新基本认证文件,在配置nagios等监控文件时会用到,网站用户名和密码。
|-- httpd 指的是为apache的控制命令程序,apchectl 执行时会用到。
|-- httxt2dbm
|-- logresolve
`-- rotatelogs apache自带的轮询工具,在实际工作场景中用cronolog。

conf 这个配置文件里面的内容,conf这个目录是指apache的所有的配置文件的目录,必须重点掌握!


conf结构目录树如下:

[root@Centos-6 conf]# tree
.
|-- extra 指的是额外的apache配置文件目录(由于主配置文件多而长,所以这里产生了一个从配置文件。是被包含的关系),这个目录里的文件我们会经常访问修改,
| |-- httpd-autoindex.conf
| |-- httpd-dav.conf
| |-- httpd-default.conf
| |-- httpd-info.conf
| |-- httpd-languages.conf
| |-- httpd-manual.conf
| |-- httpd-mpm.conf
| |-- httpd-multilang-errordoc.conf
| |-- httpd-ssl.conf
| |-- httpd-userdir.conf
| `-- httpd-vhosts.conf
|-- httpd.conf
|-- magic
|-- mime.types
`-- original
|-- extra
| |-- httpd-autoindex.conf
| |-- httpd-dav.conf
| |-- httpd-default.conf
| |-- httpd-info.conf
| |-- httpd-languages.conf
| |-- httpd-manual.conf
| |-- httpd-mpm.conf
| |-- httpd-multilang-errordoc.conf
| |-- httpd-ssl.conf
| |-- httpd-userdir.conf
| `-- httpd-vhosts.conf
`-- httpd.conf conf目录下的重点掌握的核心文件:是apache的主配置 文件,这个文件会经常访问修改,因此需要重点掌握。
在来看下apache 下面的htdocs这个目录:
这个htdocs目录是编译安装是apache的默认站点目录!

htdocs 目录结构树如下:

[root@Centos-6 htdocs]# tree
.
`--index.html 它是默认的首页文件,一是习惯用(不是必须的命名规则) index.html index.php index.jsp来命名做网站的首页文件,二是在配置文件中有参数可以指定某某文件是首页文件(Directorylndex index.html后续实验,我会来演示!),而在windows平台网站的首页文件命名是defalut命名。
0 directories, 1 file
logs:这个文件是apache的默认日志路径,包括错误日志和访问日志。

其中logs文件目录结构树如下图:

[root@Centos-6 apache]# cd logs/
[root@Centos-6 logs]# tree
.
|-- access_log 指的是apache的默认访问日志文件,使用tail-f access.log 可以随时观看网站用户访问情况的信息(包含请求地址,请求方式,浏览器类型等。)。
|-- cgisock.1141
|-- error_log 指的是Apache错误日志文件,如果Apache出现启动故障等问题,建议去这个文件中查看具体错误提示。
`-- httpd.pid 指的是httpd的pid文件,httpd进程启动后,会把所有的进程的ID号写到此文件中去。
0 directories, 4 files
modules目录: 指的是Apache的模块目录,比如php ,memcache等模块编译后都在这里。

★演示下在apache主配置文件中如何修改默认的网站首页文件。
进入到apche主文件目录下面,用vim编辑进入修改:

用/线搜索参数:
/DirectoryIndex

我们很快就搜索到了默认的文件名字,

接下来,添加进你想要成为首页的.html文件即可

记住的是,服务修改完毕之后,都需要进行重启生效,(在实际生产环境中,我们通常会进行平滑过渡重启!)
重启之前,一定要养成语法检查,否则重启后造成网站问题就是运维人员的责任!
[root@Centos-6 conf]# ../bin/apachectl -t

进行平滑重启:
[root@Centos-6 conf]# ../bin/apachectl graceful

在客户端我们F5刷新IP地址:

★Apache主配置文件详细说明:
它的主配置有很多。因为其文件内注释很多,所以我们要利用过滤命令来执行查看:
[root@Centos-6 conf]# grep -Ev "#|^$" httpd.conf ,其中这里过滤参数的意思就是把注释、空行排除掉!
具体涉及到的 grep参数如下:
-E或--extended-regexp
将范本样式为延伸的普通表示法来使用
^
锚定行的开始 如:'^#'匹配所有以#开头的行。
$
锚定行的结束 如:'#$'匹配所有以grep结尾的行。
-v,--revert-match
反检索,只显示不匹配的行。

过滤的目的都够使Httpd.conf 这个配置文件更加清晰:我定向到另外一个文件中去(也可以称之为备份)
[root@Centos-6 conf]# grep -Ev "#|^$" httpd.conf >httpd.conf.ori
[root@Centos-6 conf]# vim httpd.conf.ori

★httpd.conf主配置文件内容详解:
1 ServerRoot "/application/apache2.2.34" 指的是服务的安装目录。(服务的 根目录。)
2 Listen 80 指的是服务所监听的端口,这里http协议肯定是默认的80端口, 默认是本机的所有IP地址。
3 <IfModule !mpm_netware_module> 模块的开头
4 <IfModule !mpm_winnt_module> 模块的开头
5 User daemon 编译安装的软件,默认用户是daemon
6 Group daemon
7 </IfModule>
8 </IfModule>
9 ServerAdmin you@example.com 管理员的邮箱,这个邮箱是运维人员自 己修改的,当网站出现问题时,会用 email方式联系你的。
10 DocumentRoot "/application/apache2.2.34/htdocs" 默认的站点目录。
11 <Directory /> Directory/-------/Directory结尾部分是权限的参数
12 Options FollowSymLinks 可以带符号的链接。
13 AllowOverride None 禁止创建相关的功能。
14 Order deny,allow 14+15是指不让任何用户访问这个目录。
15 Deny from all
16 </Directory>
17 <Directory "/application/apache2.2.34/htdocs"> 17-22重点了 解。以后在添 加站点时是必须要增加这 6行的。
18 Options Indexes FollowSymLinks 关于优化网站架构---- 不对外展示 目录构!
19 AllowOverride None
20 Order allow,deny
21 Allow from all
22 </Directory>
23 <IfModule dir_module>
24 DirectoryIndex index.html 指定访问的首页。
25 </IfModule>
26 <FilesMatch "^\.ht"> 26-30以.ht开头做如下如下处理。
27 Order allow,deny
28 Deny from all
29 Satisfy All
30 </FilesMatch>
31 ErrorLog "logs/error_log" 错误日志的配置。
32 LogLevel warn 日志的级别和警告。
33 <IfModule log_config_module> 33-38属于访问日志的类型
34 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" com
bined
35 LogFormat "%h %l %u %t \"%r\" %>s %b" common
36 <IfModule logio_module>
37 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I
%O" combinedio
38 </IfModule>
39 CustomLog "logs/access_log" common
40 </IfModule>
41 <IfModule alias_module> 41-51 针对cgi的配置(CGI语言基本上已经淘汰了,不在用了。)。
42 ScriptAlias /cgi-bin/ "/application/apache2.2.34/cgi-bin/"
43 </IfModule>
44 <IfModule cgid_module>
45 </IfModule>
46 <Directory "/application/apache2.2.34/cgi-bin">
47 AllowOverride None
48 Options None
49 Order allow,deny
50 Allow from all
51 </Directory>
52 DefaultType text/plain 文本缺省类型
53 <IfModule headers_module>
54 RequestHeader unset Proxy early
55 </IfModule>
56 <IfModule mime_module>
57 TypesConfig conf/mime.types
58 AddType application/x-compress .Z
59 AddType application/x-gzip .gz .tgz
60 </IfModule>
61 <IfModule ssl_module>
62 SSLRandomSeed startup builtin
63 SSLRandomSeed connect builtin
64 </IfModule>
★优化网站架构之隐藏网站目录结构操作演示:
切到apache服务器里的htocs目录中去:
[root@Centos-6 apache]# cd htdocs/
查看到的默认站点文件为au.html。

用客户端访问192.168.8.188
这样的话,由于默认站点的文件不是默认文件,所以在客户端访问IP时,会回显一个目录架构,对于网站来说,没有了首页,展示出目录结构是并不是一件安全的事!!

解决方案:
进入到Web服务器的Httpd.conf文件中:
root@Centos-6 conf]# vim httpd.conf
搜索 /Index

将搜到的参数改成:
Options -Indexes FollowSymLinks
要么改成以上的样子,要么整行都删除掉!

改完配置文件后一定要养成:
”一是不要忘记检查语法!
[root@Centos-6 conf]# ../bin/apachectl -t

二是不要忘记平滑重启服务!
[root@Centos-6 conf]# ../bin/apachectl graceful

现在我们在客户端上重新去刷新网站:以目前讲解的程度来说,网页会出现403的错误!
有关引起403的错误有很多。后续文章会详细分享(比如权限不够,许可不够.....)

因此以目前讲解水平,网站还是需要有首页文件的!
★Apache 扩展重点文件详解:
[root@Centos-6 conf]# cd extra/
[root@Centos-6 extra]# ls -l

其中重点和了解文件如下:
httpd-vhosts.conf (重点)
httpd-mpm.conf
httpd-default.conf (了解)
vhosts.conf文件详解:
在生产环境下,我们通常配置网站都在其文件内配置:
NameVirtualHost *:80 基于域名的虚拟主机。
*代表所有的本机的IP地址,:后面是端口。

httpd-mpm.conf 文件详解:
[root@Centos-6 extra]# grep -Ev "#|^$" httpd-mpm.conf
其中Apache服务中最常见的两种工作模式 prefork worker ,
</IfModule>
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150 默认的并发是150
MaxRequestsPerChild 0
</IfModule>
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150 默认的并发是150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>






