第1章 Httpd安装与配置
(黎明你好原创作品,转载请注明)
1.1 简介
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性[1]被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
功能包括目录索引、目录别名、内容协商、可配置的HTTP错误报告、CGI程序的SetUID执行、子进程资源管理、服务器端图像映射、重写URL、URL拼写检查以及联机手册等。
Apache HTTP服务器本身没有提供Servlet/JSP容器。因此,在实际应用中,把Tomcat与Apache集成,可以建立具有实用价值的商业化的Web平台。
1.2 安装
1.2.1 Windows安装
下载文件,window版本,http://httpd.apache.org,下载文件为httpd-2.2.22-win32-x86-openssl-0.9.8t.msi。
1.2.2 Linux安装
下载TAR包
需要使用到的tar包有:
httpd-2.2.22.tar.gz,apr-1.4.6.tar.gz,apr-util-1.5.2.tar.gz,pcre-8.32.tar.gz
安装TAR包
将每个tar包解压以后(tar –vxf),开始安装。 安装顺序为apr、apr-util、pcre、httpd。
如果在执行make是说找不到gcc编译环境,那么需要安装gcc编译环境:
yum install gcc gcc-c++ autoconf automake
i. 安装apr
./configure --prefix=/usr/local/apr
make
make test
make install
ii. 安装apr-util
./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/bin/apr-1-config
make
make test
make install
iii. 安装pcre
./configure --prefix=/usr/local/pcre --with-apr=/usr/local/apr/bin/apr-1-config
make
make install
iv. 安装httpd
./configure --prefix=/opt/apache/httpd --with-apr=/opt/apache/apr/bin/apr-1-config --with-apr-util=/opt/apache/apr-util/bin/apu-1-config --with-pcre=/opt/apache/pcre/bin/pcre-config
make
make install
v. 启动httpd
1. 启动 apachectl -k start
2. 停止 apachectl -k stop
3. 状态 apachectl –k graceful
4. 重启 apachectl –k restart
1.2.3 修改运行用户
必须修改<IfModule unixd_module>中的所属用户和组。后面添加虚拟路径的文件夹必须拥有这个用户和组的读写权限,否则会报权限的错。
1.2.4 httpd添加虚拟路径
打开conf文件夹,在httpd.conf配置文件中添加一段:
Alias /share "/home/vcs/service/data/version"
<Directory "/home/vcs/service/data/version">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
通过ls –l查看此文件夹的权限,看apache运行的用户是否拥有权限。
可以通过chown user file –R修改文件夹的拥有者、chgrp group file –R修改文件夹的拥有组。
1.2.5 httpd加入系统服务
系统服务里面没有apache或者httpd服务,每次启动都要/usr/local/apache2/bin/apachectl start。比较麻烦,下面的操作可以将httpd装入到服务中,同理也可以用到其他的服务操作。
1.将apachectl文件拷贝到/etc/rc.d/init.d 中,然后在/etc/rc.d/rc5.d/下加入链接即可。命令如下:
cp bin/apachectl /etc/init.d/httpd //如果有其他的版本的Apache存在,也可以直接覆盖掉
ln -s /etc/init.d/httpd /etc/rc.d/rc5.d/S85httpd //建立链接(85的意义后面介绍)
此时Apache就可以自动启动了。
2.运行chkconfig --list,发现没有linux服务列表中httpd,通过chkconfig –add httpd来添加,但是提示:httpd服务不支持 chkconfig。
需要编辑/etc/rc.d/init.d/httpd,添加以下注释信息:
# chkconfig: 345 85 15
# description: Activates/Deactivates Apache Web Server
第一行3个数字参数意义分别为:哪些Linux级别需要启动httpd(3,4,5);启动序号(85);关闭序号(15)。
保存后执行:chkconfig --add httpd,成功添加。
在rc3.d、rc4.d、rc5.d路径中会出现S85httpd的链接文件,其他运行级别路径中会出现K61httpd的链接文件。
3、运行chkconfig --list httpd 这时已经可以看到httpd服务了。此时就可以使用service httpd命令了。
service httpd start
service httpd restart
service httpd stop
service httpd status
1.3 常用配置项
全局变量Global Environment
字段名 | 默认值 | 说明 |
ServerRoot> | ServerRoot指令设置了服务器所在的 目录。一般来说它将包含conf/和logs/子目录。使用DEB包安装的系统, 此项的默认值为 "/etc/apache2" 也就是说仅仅包括apache2的配置文件.必须注意, 该目录是受保护的, 不允许非root用户对其进行修改. | |
PidFile | /var/run/apache.pid | 指定记录httpd配置文件守护进程的进程号的文件。由于httpd配置文件能自动复制其自身,因此系统中有多个httpd进程,但只有一个进程为最初启动的进程,它为其他进程的父进程。对这个进程发送 信号将影响所有的httpd进程。PidFile定义的文件中就记录httpd 父进程的进程号。 |
DocumentRoot | /var/www/html | 该参数指定Apache服务器存放网页的路径,默认所有要求提供HTTP服务的连接,都以这个目录为主目录。在每个Apache服务器存取的目录中,可以针对每个目录及子目录来设置允许及禁止客户端访问的服务。以下为Apache的默认值。 |
MaxClients | 150; | 该参数限制Apache所能提供服务的最高数值,即同一时间连接的数目不能超过这个数值。一旦连接数目达到这个限制,Apache服务器则不再为别的连接提供服务,以免系统性能大幅度下降。 |
Port | 80 | 该参数用来指定Apache服务器的监听端口。一般来说,标准的HTTP服务默认端口号是80,一般不要更改这个数值。 |
KeepAlive | on | 目前多数的浏览器都请求服务器保持持续连接,这种功能就称为“KeepAlive”,它是HTTP1.1中的标准规格,一般是用来强化服务器的性能。在使用保持连接功能时,设置客户一次请求连接能影响文件的最大上限,建议把默认值设为ON,以便提高访问 性能。 |
MaxKeepAliveRequests | 100 | 当使用保持连接(persistent connection)功能时,可以使用本参数决定每次连接所能发出的要求数目的上限。如果此数值为0,则表示没有限制。建议尽可能使用较高的数值,以充分发挥Apache的高性能。 |
MaxRequestsPerChild | 10 | 该参数限制每个子进程(child process)在结束前所能处理的请求数目,一旦达到该数目,这个子进程就会被中止,以避免长时间占据Apache(或者Apache服务器所采用的函数库),防止造成内存或者其他系统资源的超负荷。 |
MaxSpareServers/MinSpareServers | 20/5 | 提供Web服务的HTTP守护进程,其数目会随连接的数目而变动。Apache服务器采用动态调整的方法,维持足够的HTTP守护进程数目,以处理目前的负载,也就是同时保持一定的空闲HTTP守护进程来等候新的连接请求。 |
DirectoryIndex | inde.html | 在此命令后添加其他的默认主页文件名,例如可以添加index.htm等。当然这只是Apache的一些基本设置项,大家可以根据自己的实际情况加以灵活的修改,以充分发挥Apache的潜能。如果修改配置文件之后让其立即生效,可以重启Apache服务。 |
1.4 虚拟主机VirtualHost
虚拟主机指的是在单一机器上运行多个网站 (例如 www.company1.com 和 www.company2.com) 。 虚拟主机可以“基于 IP”,即每个IP一个站点; 或者“基于名称”, 即每个IP多个站点。这些站点运行在同一物理服务器上的事实不会明显的透漏给最终用户。
可以让apache监听多个端口访问不同的路径。或者多个域名映射到同一个apache时做不同的访问分配。
下面实例为监听8001端口,映射到一个本地的物理地址。
Listen 8001
NameVirtualHost *:8001
<VirtualHost *:8001>
ServerAdmin [email protected]
DocumentRoot "E:/_org.js/extjs-4.1.0/"
ServerName extjs.localhost
ErrorLog "logs/dummy-host2.localhost-error.log"
CustomLog "logs/dummy-host2.localhost-access.log" common
</VirtualHost>
<Directory "E:/_org.js/extjs-4.1.0/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>