1.httpd简介
apache server(httpd),作为非常流行的WEB服务器,长期以来稳居第一。
2.安装httpd
采用本地YUM源的方式进行RPM安装。
1
2
3
4
5
6
7
|
[root@localhost ~]
[mytest1]
name=myyumtest1
baseurl=
file
:
///home/yum/cdrom/Server
enabled=1
gpgcheck=0
[root@localhost ~]
|
采用yum install httpd即可安装完毕。
需要注意的是,在安装HTTPD的时候,应该关闭selinux.
1
2
3
|
[root@localhost ~]
Permissive
[root@localhost ~]
|
通过命令setenforce 0可以临时关闭selinux. 当然可以通过编辑/etc/sysconfig/selinux来关闭。
很显然,安装完毕后,我们需要知道HTTPD安装后的配置目录在哪里? 可以利用下面的命令来定位HTTPD的安装文件,库文件,帮助文件等。
1
2
3
4
5
6
7
|
[root@localhost ~]
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf
.d
/etc/httpd/conf
.d
/README
/etc/httpd/conf
.d
/proxy_ajp
.conf
/etc/httpd/conf
.d
/welcome
.conf
|
|
3. 认识HTTPD的相关目录
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@localhost ~]
[root@localhost httpd]
.
|-- conf
| |-- httpd.conf
| `-- magic
|-- conf.d
| |-- README
| |-- proxy_ajp.conf
| `-- welcome.conf
|-- logs -> ../..
/var/log/httpd
|-- modules -> ../..
/usr/lib/httpd/modules
`-- run -> ../..
/var/run
|
第一,httpd的主配置文件是/etc/httpd/conf/httpd.conf 第二,在httpd.conf文件中通过include指令将conf.d/*.conf进行包含,也就是说,以后我们可以在conf.d目录下新增自己的配置文件。 第三,对于WEB服务器而言,都有一个功能,那就是记录访问,错误日志。HTTPD的日志目录在/var/log/httpd下。 第四,HTTPD的一个特性,就是模块化设计。我们可以增加模块来添加功能。
|
4. HTTPD的几种运行模型
对于HTTPD处理用户请求有几种模型:
perfork模型: 默认模型。在HTTPD启动后,便会有多个进程启动监听指定端口,然后一个请求被一个进程处理。也就是多进程处理模型。很显然,多进程处理的话,由于进程间的独立性,所以比较稳定。但是如果请求过多,进程所需要的资源,特别是内存,会非常大,同时CPU在很多进程间切换,也将非常耗时。
worker模型: 是一种多线程处理用户请求的方式。说白了,就是一个进程创建多个线程处理用户请求。由于多个线程间可以共享资源,对内存等资源需求小,但是容易出现死锁现象。
event模型: 基于事件驱动,综合使用了perfork和worker模型。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@localhost httpd]
You have new mail
in
/var/spool/mail/root
[root@localhost httpd]
root 5589 0.0 0.6 10292 2820 ? Ss 22:58 0:00
/usr/sbin/httpd
apache 5590 0.0 0.4 10424 2060 ? S 22:58 0:00
/usr/sbin/httpd
apache 5591 0.0 0.4 10424 2060 ? S 22:58 0:00
/usr/sbin/httpd
apache 5592 0.0 0.4 10424 2060 ? S 22:58 0:00
/usr/sbin/httpd
apache 5593 0.0 0.4 10424 2060 ? S 22:58 0:00
/usr/sbin/httpd
apache 5594 0.0 0.4 10424 2060 ? S 22:58 0:00
/usr/sbin/httpd
apache 5595 0.0 0.4 10424 2060 ? S 22:58 0:00
/usr/sbin/httpd
apache 5596 0.0 0.4 10424 2060 ? S 22:58 0:00
/usr/sbin/httpd
apache 5597 0.0 0.4 10424 2060 ? S 22:58 0:00
/usr/sbin/httpd
root 5599 0.0 0.1 3896 664 pts
/0
R+ 22:59 0:00
grep
httpd
|
启动HTTPD,可以通过/usr/sbin/httpd来启动,或者service httpd start。 默认,HTTPD的工作模型是perfork。 通过上面的,可以知道,启动HTTPD后,由于HTTPD的特性【事先创建进程】,会有多个HTTPD的进程,其中会有一个HTTPD的进程的OWER:GROUP都是ROOT。【很显然,这是一个主导进程,用于创建,销毁其他HTTPD进程的 master process】。其他HTTPD进程可以成为工作进程,work process. 说白了,就是每一个用户请求,由master process负责创建work process来响应。
|
5. HTTPD的主配置文件分析
### Section 1: Global Environment 重要的配置片段: ServerRoot "/etc/httpd" 说明HTTPD的工作目录 KeepAlive Off 由于HTTP协议有1.0,1.1两个版本。1.1支持长连接。
可以配置PERFORK模型的一些参数: <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule> 【同理类似的配置WORKER模型】
Listen 80 指明监听端口,注意HTTPD可以在多个端口同时进行监听 Include conf.d/*.conf 说明配置文件包含关系
### Section 2: 'Main' server configuration DocumentRoot "/var/www/html" 指明WEBROOT根路径
指明访问WEBROOT时的一些属性 <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> 可以实现基于IP,用户等的访问限制。
### Section 3: Virtual Hosts 虚拟主机配置。
|
6. HTTPD的虚拟主机配置实战
第一步:
由于### Section 2: 'Main' server configuration和### Section 3: Virtual Hosts不可以同时生效。因此配置虚拟主机,需要首先注释掉 #DocumentRoot "/var/www/html"
第二步:
虚拟主机,实际上可以通过以下几种方式来实现: 基于IP。说白了,一台物理主机,多个网卡,多个IP地址。 基于PORT。一台物理主机,监听多个端口。 基于SERVER NAME。 由于,实际中基于SERVER NAME来实现虚拟主机较多,因此,下面我们动手来实现这种方式的虚拟主机。
第三步:配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@localhost conf.d]
1 NameVirtualHost 192.168.204.88:80
2
3 <VirtualHost 192.168.204.88:80>
4 DocumentRoot
/web/v1/
5 ServerName www.zfz1.com
6 ErrorLog logs
/www
.zfz1.com-error_log
7 CustomLog logs
/www
.zfz1.com-access_log common
8 <
/VirtualHost
>
9
10 <VirtualHost 192.168.204.88:80>
11 DocumentRoot
/web/v2/
12 ServerName www.zfz2.com
13 ErrorLog logs
/www
.zfz2.com-error_log
14 CustomLog logs
/www
.zfz2.com-access_log common
15 <
/VirtualHost
>
|
myhttpd.conf是在/etc/httpd/conf.d下新建的配置文件。 需要明确,IP:PORT,SERVERNAME,DOCUMENTROOT,LOGPATH等信息。
第四步:准备DOCUMENTROOT,并测试配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@localhost v2]
[root@localhost web]
.
|-- hello.html
|-- index.html
|-- v1
| `-- hello.html
|-- v2
| `-- hello.html
`-- world.html ->
/etc/passwd
2 directories, 5 files
[root@localhost web]
[root@localhost conf.d]
Syntax OK
|
第五步:本地指明HOSTS 192.168.204.88 www.zfz1.com 192.168.204.88 www.zfz2.com
第六步:启动HTTPD并测试访问
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@localhost conf.d]
Starting httpd: [ OK ]
[root@localhost ~]
root 3414 0.0 0.6 10420 2912 ? Ss 22:36 0:00
/usr/sbin/httpd
apache 3415 0.0 0.4 10420 2140 ? S 22:36 0:00
/usr/sbin/httpd
apache 3416 0.0 0.4 10420 2140 ? S 22:36 0:00
/usr/sbin/httpd
apache 3417 0.0 0.4 10420 2140 ? S 22:36 0:00
/usr/sbin/httpd
apache 3418 0.0 0.4 10420 2140 ? S 22:36 0:00
/usr/sbin/httpd
apache 3420 0.0 0.4 10420 2140 ? S 22:36 0:00
/usr/sbin/httpd
apache 3421 0.0 0.4 10420 2140 ? S 22:36 0:00
/usr/sbin/httpd
apache 3422 0.0 0.4 10420 2140 ? S 22:36 0:00
/usr/sbin/httpd
apache 3423 0.0 0.4 10420 2140 ? S 22:36 0:00
/usr/sbin/httpd
root 3452 0.0 0.1 3896 664 pts
/2
R+ 22:38 0:00
grep
httpd
|


|
本文转自zfz_linux_boy 51CTO博客,原文链接:http://blog.51cto.com/zhangfengzhe/1545425,如需转载请自行联系原作者