1、 Apache 主要目录结构
[root@localhost apache-2.4.33]# pwd /usr/local/apache-2.4.33 [root@localhost apache-2.4.33]# ll total 44 drwxr-xr-x 2 root root 302 Jul 4 12:12 bin drwxr-xr-x 2 root root 293 Jul 4 12:12 build drwxr-xr-x 2 root root 78 Jul 4 12:12 cgi-bin drwxr-xr-x 4 root root 84 Jul 4 12:14 conf drwxr-xr-x 3 root root 4096 Jul 4 12:12 error drwxr-xr-x 2 root root 24 Jul 4 12:12 htdocs drwxr-xr-x 3 root root 8192 Jul 4 12:12 icons drwxr-xr-x 2 root root 8192 Jul 4 12:12 include drwxr-xr-x 3 root root 281 Jul 4 12:12 lib drwxr-xr-x 2 root root 58 Jul 4 12:34 logs drwxr-xr-x 4 root root 30 Jul 4 12:12 man drwxr-xr-x 14 root root 8192 Jul 4 12:12 manual drwxr-xr-x 2 root root 4096 Jul 4 12:12 modules
(1) bin 目录
(1)ab: Apache Http 服务器性能测试工具,简单、易用
(2)apachectl: Apache 的启动命令,脚本。
(3)apxs:是一个为 Apache Http 服务器编译和安装扩展模块的工具,在进行 DSO 方式编译模块时会用到。
(4)htcacheclean:清理磁盘缓冲区的命令,需要在编译时指定相关参数才能用,一般很少用。
(5)htpasswd:建立和更新基本认证文件。如配置 nagios 等监控服务时会用到。
(6)httpd:为 Apache 的控制命令程序, apachectl 执行时会调用 httpd 。
(7)rotatelogs: Apache 自带的日志轮询命令。一般可用 cronolog 替代。
(2) conf 目录
(1)extra:扩展的 Apache 配置文件目录,做为 httpd.conf 的子配置文件所在的目录。
(2)httpd.conf: Apache 的主配置文件。
(3)magic
(4)mime.types :支持的媒体类型文件
(5)original
(3) htdocs 目录:是 Apache 默认站点目录 。
(4) logs 目录:是 Apache 默认日志目录,包括错误日志及访问日志 。
(1)access_log:默认访问日志文件
(2)error_log:默认错误日志文件
(3)http.pid: httpd 的 pid 文件, http 进程启动后,会把所有进程的 ID 号写到此文件
(5) modules 目录:是 Apache 的模块目录。如 php、 memcache 等模块编译后都放在该目录下
2、 主配置文件 httpd.conf 说明
1 [root@localhost apache-2.4.33]# grep -Ev "^#|^[ ]+#|^$" conf/httpd.conf 2 ServerRoot "/usr/local/apache-2.4.33" #apache服务的根目录 3 Listen 80 #监听端口,不写ip,表示默认监听本机所有配置的ip地址 4 LoadModule authn_file_module modules/mod_authn_file.so #导入模块 5 LoadModule authn_core_module modules/mod_authn_core.so 6 LoadModule authz_host_module modules/mod_authz_host.so 7 LoadModule authz_groupfile_module modules/mod_authz_groupfile.so 8 LoadModule authz_user_module modules/mod_authz_user.so 9 LoadModule authz_core_module modules/mod_authz_core.so 10 LoadModule access_compat_module modules/mod_access_compat.so 11 LoadModule auth_basic_module modules/mod_auth_basic.so 12 LoadModule reqtimeout_module modules/mod_reqtimeout.so 13 LoadModule filter_module modules/mod_filter.so 14 LoadModule mime_module modules/mod_mime.so 15 LoadModule log_config_module modules/mod_log_config.so 16 LoadModule env_module modules/mod_env.so 17 LoadModule headers_module modules/mod_headers.so 18 LoadModule setenvif_module modules/mod_setenvif.so 19 LoadModule version_module modules/mod_version.so 20 LoadModule unixd_module modules/mod_unixd.so 21 LoadModule status_module modules/mod_status.so 22 LoadModule autoindex_module modules/mod_autoindex.so 23 LoadModule dir_module modules/mod_dir.so 24 LoadModule alias_module modules/mod_alias.so 25 <IfModule unixd_module> #模块的开头 26 User daemon #默认编译和安装的用户为deamon 27 Group daemon 28 </IfModule> 29 ServerAdmin [email protected] #管理员的E-mail 30 ServerName localhost:80 #域名配置 31 <Directory /> #对网站根目录进行权限配置 32 AllowOverride none #禁止相关功能,如重载等功能 33 Require all denied 34 </Directory> 35 DocumentRoot "/usr/local/apache-2.4.33/htdocs" #默认站点目录 36 <Directory "/usr/local/apache-2.4.33/htdocs"> #对指定站点目录进行权限配置 37 Options Indexes FollowSymLinks #Indexes表示允许展示目录结构,有安全风险,要禁止,去掉或在前面加上"-":-Indexes,下载目录可以展示,但一般的服务是不允许的 38 AllowOverride None 39 Require all granted 40 </Directory> 41 <IfModule dir_module> 42 DirectoryIndex index.html #指定主页 43 </IfModule> 44 <Files ".ht*"> #对以".ht"开头的文件进行指定处理 45 Require all denied 46 </Files> 47 ErrorLog "logs/error_log" #错误日志配置 48 LogLevel warn #日志级别配置 49 <IfModule log_config_module> #访问日志的内容和格式配置 50 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 51 LogFormat "%h %l %u %t \"%r\" %>s %b" common 52 <IfModule logio_module> 53 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 54 </IfModule> 55 CustomLog "logs/access_log" common 56 </IfModule> 57 <IfModule alias_module> 58 ScriptAlias /cgi-bin/ "/usr/local/apache-2.4.33/cgi-bin/" 59 </IfModule> 60 <IfModule cgid_module> 61 </IfModule> 62 <Directory "/usr/local/apache-2.4.33/cgi-bin"> 63 AllowOverride None 64 Options None 65 Require all granted 66 </Directory> 67 <IfModule headers_module> 68 RequestHeader unset Proxy early 69 </IfModule> 70 <IfModule mime_module> 71 TypesConfig conf/mime.types 72 AddType application/x-compress .Z 73 AddType application/x-gzip .gz .tgz 74 </IfModule> 75 <IfModule proxy_html_module> 76 Include conf/extra/proxy-html.conf 77 </IfModule> 78 <IfModule ssl_module> 79 SSLRandomSeed startup builtin 80 SSLRandomSeed connect builtin 81 </IfModule>
3、扩展配置文件说明
(1)重点配置文件: httpd-vhosts.conf 和 httpd-mpm.conf
(2)需了解的配置文件: httpd-default.conf
(3) httpd-vhosts.conf 为虚拟主机配置文件,以下配置说明
[root@localhost extra]# grep -Ev "^#|^$" httpd-vhosts.conf <VirtualHost *:80> #表示虚拟主机配置,如果需要配置多个虚拟主机,就有多个该配置 ServerAdmin webmaster@dummy-host.example.com #管理员邮箱 DocumentRoot "/usr/local/apache-2.4.33/docs/dummy-host.example.com" #网站根目录 ServerName dummy-host.example.com #网站域名 ServerAlias www.dummy-host.example.com #域名的别名 ErrorLog "logs/dummy-host.example.com-error_log" #错误日志 CustomLog "logs/dummy-host.example.com-access_log" common #访问日志common </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@dummy-host2.example.com DocumentRoot "/usr/local/apache-2.4.33/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>
(4) httpd-mpm.conf 配置说明
a、 PidFile "logs/httpd.pid:指定 pid 文件 <IfModule !mpm_netware_module> PidFile "logs/httpd.pid" </IfModule>
b、 LockFile "logs/accept.lock":指定 lock 文件 <IfModule !mpm_netware_module> LockFile "logs/accept.lock" </IfModule>
c、 prefork 模式配置: <IfModule mpm_prefork_module>(默认模式) 由于安装时指定了 work 模式,所以该配置可以不配 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule>
d、 work 模式配置: <IfModule mpm_worker_module> <IfModule mpm_worker_module> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule>
(5) httpd-default.conf 配置说明
a、超时设置: Timeout 300 b、保持连接状态设置: KeepAlive On c、保持最大连接请求设置: MaxKeepAliveRequests 100 d、同一连接上等待下一个请求的时间设置: KeepAliveTimeout 5 e、设置伪静态的语法: AccessFileName .htaccess f、隐藏 Apache 版信息: ServerTokens Full ServerSignature On
4、http 协议和 www 服务实战进阶
(1)虚拟主机分类
虚拟主机是在同一 http 服务下部署多个站点,每个站点都使用不同的域名和站点目录,或不同 IP 和端口。也就是
一个 http 服务配置多个站点。
①基于域名的虚拟主机
②基于端口的虚拟主机
③基于 IP 的虚拟主机
(2)配置基于域名的虚拟主机
需求
域名 | 目录 |
www.abc.org | /var/html/www |
blog.abc.org | /var/html/blog |
bbs.abc.org | /var/html/bbs |