暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

linux系统之Apache服务文件参数详解

爱婷如命一生一世 2017-08-29
647

周二,一个忙碌的工作日,处理了许多事物之后,才有空来整理技术文档

今天继续分享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>



文章转载自爱婷如命一生一世,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论