httpd -> A Patchy Server -> apache

http://httpd.apache.org


ASF: Apache Software Foundation

FSF: GNU, GPL

主要版本: 2.0, 2.2, 2.4

httpd特性:

事先创建进程

按需维持适当的进程

模块设计:核心比较小,各种功能通过模块添加(包括PHP)

支持运行配置,支持单独编译模块

支持多种方式的虚拟主机

socket: IP+端口

虚拟主机:

基于IP的虚拟主机

基于端口的虚拟主机

基于域名的虚拟主机 

支持https协议(mod_ssl)

支持用户认证

支持基于IP或主机名的ACL

支持每目录的访问控制

支持URL重写 /p_w_picpath/a.jpg -> /bbs/p_w_picpaths/abc.jpg


Redhat 安装httpd

rpm包

源码编译

httpd: SELinux(事先让其处于permissive,disabled)

getenforce  

setenforce 0  (vim /etc/sysconfig/selinux)

httpd: 涉及文件

1, /usr/sbin/httpd (MPM: prefork) 事先创建多个进程

httpd: root, root (master process)

其他httpd: apache,apache (worker process)

2, Port:(80/tcp, SSL:443/tcp)

3, /etc/rc.d/init.d/httpd  脚本,对应的配置文件在/etc/sysconfig/httpd

4, /etc/httpd:  工作根目录,相当于程序安装目录

/etc/httpd/conf: 配置文件目录

主配置文件:httpd.conf

/etc/httpd/conf.d/*.conf

/etc/httpd/modules: 模块目录

/etc/httpd/logs --> /var/log/httpd: 日志目录

访问日志 access_log

错误日志 err_log

5, /var/www

html

cgi-bin 


CGI: Common Gateway Interface

Client --> httpd(index.cgi) --> Spawn Process(index.cgi) --> httpd --> Client

fast CGI:  预先启动了CGI进程( 可以分离httpd)

三层: 静态内容层(apache),应用程序层(php),数据库层(MySQL)

-----------------------------------------

1.rpm安装

yum install httpd

rpm -ql httpd | less


2, 启动

service httpd start

netstat -tnlp | grep 80

ps aux | grep httpd

 多个进程,其中1个是root,其他事apache

 

3,分析conf

grep "Section" httpd.conf 

-----------------------------------------------------------------------------------

分3个部分: 2和3部分,同时只有1个生效

### Section 1: Global Environment

### Section 2: 'Main' server configuration

### Section 3: Virtual Hosts


★ httpd -t  可以测试配置文件语法是否有问题


格式: directive value

       指令不区分字符大小写,值区分

具体指令参考  httpd.apache.org/docs/2.2

 

MPM 多道处理模块 Multi Path Module

mpm_winnt windows专用

prefork(1个请求用1个进程响应)

worker (1个请求用1个线程响应,启动多个进程,每个进程生成多个线程)

event  (1个进程处理多个请求) 

httpd -l 

httpd.worker -l

httpd.event -l

/usr/sbin/httpd | httpd.worker | httpd.event 

通过修改/etc/sysconfig/httpd 来修改MPM模式

<Directory>

option 

None: 不支持任何选项

Indexes 允许列出目录

FollowSymLinks 允许访问软连接

Includes: 允许执行服务器端包含(SSI)

ExecCGI:  允许执行CGI脚本

AllowOverride 

None 后面的Order生效

Order: 用于定义基于主机的访问功能的,IP,网络地址或主机定义访问控制机制

eg: 仅允许192.168.0.0/24访问

Order allow, deny 

Allow from 192.168.0.0/24

通过配置

AllowOverride AuthConfig

AuthType Basic

AuthName "Restricted Site..."

AuthUserFile "/etc/httpd/conf/htpasswd"

Require valid-user 

htpasswd:

第一次 htpasswd -c -m /etc/httpd/conf/htpasswd hadoop

以后: htpasswd -m /etc/httpd/conf/htpasswd Tom

httpd -l 当前支持的模块

httpd -M 所有支持的模块

AccessFileName 一般禁用

server-status

apache虚拟主机:

需要先取消中心主机:注释中心主机的DocumentRoot即可

定义

<VirtualHost Host>

</VirtualHost> 

基于IP的虚拟主机

IP1:80

IP2:80

基于端口:

IP:80

IP:8080

基于域名:

*:80

ServerName需要不同

e.g. /etc/httpd/conf.d/vrtual.conf

NameVirtualHost *:80

<VirtualHost 192.168.0.100>

ServerName book1.com

DocumentRoot "/www/book1"

CustomLog "/var/www/log/book1/access_log combined"

</VirtualHost> 

<VirtualHost 192.168.0.100>

ServerName book2.com

DocumentRoot "/www/book2"

CustomLog "/var/www/log/book2/access_log combined"

</VirtualHost>