Apache – Httpd 理论 一

apache 在 centos 和 redhat 叫 httpd

Apache 支持的虚拟主机:

1. 基于 IP 的虚拟主机

2. 基于端口的虚拟主机

3. 基于域名的虚拟主机

4. 基于路径的虚拟主机

5. 基于 HTTPS 的虚拟主机 443 加密协议

6. 基于 socket 的虚拟主机

等等

Apache 特性:

1. 进程控制

root apache : 由 root 启动的 一个 apache 进程

apache apache :由 apache (或普通用户)启动的若干个(一般是8个) apache 进程

2. 事先创建的进程有数目限制,按需进行。

3. 模块化,内核小

4. 支持虚拟主机

5. 支持 https (加密)

6. 支持用户认证

7. 基于 IP 或主机名的 ACL 控制(可以禁用某个 IP 访问 order deny.allow)

8. 支持每目录的访问控制

9. 支持 URL 重写 (rewrite 规则)

Apache 安装

1. yum 2. rpm 3. 编译安装

Apache 主配置文件

[root@1-6 conf]# cat httpd.conf.bak 
...
ServerRoot "/etc/httpd" # apache 软件安装目录、配置文件目录
...
#Listen 12.34.56.78:80 # 基于 IP 的虚拟主机
Listen 80 # 基于端口的虚拟主机
...
Include conf.modules.d/*.conf # 配置文件从这里导入,包括模块配置
...
DirectoryIndex index.html # 定义访问的主页面
...
User apache  # 使用 apache 账户启动
Group apache
...
ServerAdmin root@localhost # 如果服务器出现错误,通知的邮件地址,不要暴露出来
...
#ServerName www.example.com:80 # 用作反向解析
...
DocumentRoot "/var/www/html" # apache 发布目录
...
ErrorLog "logs/error_log" # apache 错误日志文件
...
LogLevel warn # apache 日志级别 生产环境使用debug info 级别的日志等级,日志文件会很多占用空间

<IfModule log_config_module>  # 加载日志模块
...
<IfModule alias_module> # 配置别名的模块
    ...
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" # 将 /var/www/cgi-bin/ 映射为 /cgi-bin/
...
<Directory "/var/www/cgi-bin"> # 针对 /var/www/cgi-bin 文件的权限
...
<IfModule mime_magic_module> # 流媒体格式的一些文件
...
# Some examples: # 设置报错信息
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
IncludeOptional conf.d/*.conf # 主配置文件只需修改 ip port ,其他的配置在这里的配置文件中修改:1. 保证主配置文件的完整性;2. 保证网站的抗攻击性;

Apache 工作模式 – 启用的的工作模块(模型)

prefork、worker、event
[root@1-6 conf.modules.d]# vim /etc/httpd/conf.modules.d/00-mpm.conf
# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines:

# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
#
#LoadModule mpm_worker_module modules/mod_mpm_worker.so

# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#
#LoadModule mpm_event_module modules/mod_mpm_event.so

# MPM各个工作模块的区别-以下为 2.2 版本中的内容 centos6 yum 安装为 2.2 centos7 yum 安装为 2.4 配置文件讲解,使用的是 centos6
# MPM=multi path modules
# 定义 Apache 在多进程/一个进程响应请求的工作模式
prefork

StartServers         8           启动多少个进程
MinSpareServers      5           最小空闲服务
MaxSpareServers      20          最大空闲服务
ServerLimit          256         系统最大值
MaxClients           256         最大客户端数
MaxRequestsPerChild  4000        一个进程最多响应多少次后被杀死

worker

StartServers         4           启动多少个进程(请求)
MaxClients           300         最大客户端数
MinSpareThreads      25          最小空闲线程
MaxSpareThreads      75          最大空闲线程
ThreadsPerChild      25          一个进程生成多少线程
MaxRequestsPerChild  0           一个进程最多响应多少次(无限制)

event
**** 没有找到该配置

Apache 虚拟主机

# 配置文件
[root@1-101 ~]# vim /etc/httpd/conf/httpd.conf
...
<VirtualHost *:80> # 基于端口
    ServerAdmin webmaster@dummy-host.example.com # 站点管理员信息,服务器异常通知地址(可以写邮件地址)
    DocumentRoot /www/docs/dummy-host.example.com # 网站发布目录
    ServerName dummy-host.example.com # 域名
    ErrorLog logs/dummy-host.example.com-error_log # 错误日志目录
    CustomLog logs/dummy-host.example.com-access_log common # 访问日志目录
</VirtualHost>
....

发表评论

zh_CNChinese
zh_CNChinese