一、概述
二、编译安装
三、httpd服务基础
四、httpd.conf配置文件
五、httpd服务访问控制
六、虚拟Web主机
一、概述
主要特点
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
开放源代码、跨平台应用
支持多种网页编程语言
模块化设计 、运行稳定、良好的安全性
二、编译安装
编译安装的优点
具有较大的自由度,功能可定制
可及时获得最新的软件版本
普遍适用于大多数Linux版本,便于移植使用
获得Apache服务器的源码包
参考地址:http://httpd.apache.org/download.cgi
安装httpd服务器
1.准备工作
卸载httpd及相关依赖包
[root@www ~]# rpm -e httpd httpd-manual webalizer subversion mod_python mod_ssl mod_perl system-config-httpd php php-cli php-ldap php-common mysql dovecot --nodeps //忽略软件包依赖性
2.源码编译及安装
[root@www ~]# tar zxf httpd-2.2.17.tar.gz -C /usr/src/ //解包
[root@www ~]# cd /usr/src/httpd-2.2.17/
[root@www httpd-2.2.17]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi //配置
[root@www httpd-2.2.17]# make
[root@www httpd-2.2.17]# make install //编译及安装
3.确认安装结果
[root@www ~]# ls /usr/local/httpd/
bin cgi-bin error icons lib man modules
build conf htdocs include logs manual
4.优化执行路径
[root@www ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
[root@www ~]# ls -l /usr/local/bin/httpd /usr/local/bin/apachectl
lrwxrwxrwx 1 root root 30 04-06 13:08 /usr/local/bin/apachectl -> /usr/local/httpd/bin/apachectl
lrwxrwxrwx 1 root root 26 04-06 13:08 /usr/local/bin/httpd -> /usr/local/httpd/bin/httpd
5.添加httpd系统服务
以便通过chkconfig进行管理
[root@www ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@www ~]# vi /etc/init.d/httpd
#!/bin/bash
# chkconfig: 35 85 15
# description: Startup script for the Apache HTTP Server
……
[root@www ~]# chkconfig --add httpd
[root@www ~]# chkconfig --list httpd
httpd 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
三、httpd服务基础
1、主要目录和文件:
服务目录:/usr/local/httpd/
主配置文件:/usr/local/httpd/conf/httpd.conf
网页目录:/usr/local/httpd/htdocs/
服务脚本:/usr/local/httpd/bin/apachectl
执行程序:/usr/local/httpd/bin/httpd
访问日志: /usr/local/httpd/log/access_log
错误日志: /usr/local/httpd/log/error_log
Httpd的安装目录是由前面的—prefix指定的路径,默认安装在/usr/local/apache2目录下
2、Web站点部署过程
1.确定网站名称、IP地址
ifconfig、hostname
2.配置并启动httpd服务
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf
……
ServerName www.benet.com
……
[root@www ~]# /usr/local/httpd/bin/apachectl -t
Syntax OK
[root@www ~]# /etc/init.d/httpd start
3.部署网页文档
[root@www ~]# cat /usr/local/httpd/htdocs/index.html
It works!
4.在客户机中访问Web站点
5.查看Web站点的访问情况
[root@www ~]# tail /usr/local/httpd/logs/access_log
192.168.4.110 - - [06/Apr/2011:14:24:06 +0800] "GET / HTTP/1.1" 200 44
192.168.4.110 - - [06/Apr/2011:14:24:06 +0800] "GET /favicon.ico HTTP/1.1" 404 209
四、httpd.conf配置文件
常用的全局配置参数
ServerRoot:服务目录
ServerAdmin:管理员邮箱
User:运行服务的用户身份
Group:运行服务的组身份
ServerName:网站服务器的域名
DocumentRoot:网页文档的根目录
Listen:监听的IP地址、端口号
PidFile:保存httpd进程PID号的文件
DirectoryIndex:默认的索引页文件
CustomLog:访问日志文件的位置
LogLevel:记录日志的级别,默认为warn
Timeout:网络连接超时,默认为300秒
KeepAlive:是否保持连接,可选On或Off
MaxKeepAliveRequests:每次连接最多请求文件数
KeepAliveTimeout:保持连接状态时的超时时间
Include:需要包含进来的其他配置文件
区域配置项
<Directory />
OptionsFollowSymLinks //控制选项,允许使用符号链接
AllowOverrideNone //不允许隐含控制文件中的覆盖配置
Orderdeny,allow //访问控制策略的应用顺序
Deny from all //禁止任何人访问此区域
</Directory>
五、httpd服务访问控制
httpd服务的访问控制
作用:
控制对网站资源的访问
为特定的网站目录添加访问授权
常用访问控制方式:
客户机地址限制
用户授权限制
Order配置项,定义控制顺序
先允许后拒绝,默认拒绝所有:Order allow,deny
先拒绝后允许,默认允许所有:Order deny,allow
Allow、Deny配置项,设置允许或拒绝的地址
Deny from address1 address2 …
Allow from address1 address2 …
<Directory "/usr/local/awstats/wwwroot">
……
Order deny,allow
deny from 192.168.0.0/24 192.168.1.0/24
</Directory>
用户授权限制
1.创建用户认证数据库
[root@www ~]# cd /usr/local/httpd/
[root@www httpd]# bin/htpasswd -c/usr/local/httpd/conf/.awspwd webadmin //新建密码文件
New password:
Re-type new password:
Adding password for user webadmin
[root@www httpd]# cat /usr/local/httpd/conf/.awspwd //确认用户数据库文件
webadmin:2tmD3LVFynBAE
2.添加用户授权配置
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf…………
……
<Directory "/usr/local/awstats/wwwroot">
……
AuthName "AWStats Directory" //受保护的领域名称
AuthType Basic //设置认证的类型
AuthUserFile /usr/local/httpd/conf/.awspwd //用户认证账号文件
require valid-user
</Directory> //要求通过认证才能访问
[root@www ~]# /usr/local/httpd/bin/apachectl restart
3.验证用户访问授权
六、虚拟Web主机
在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机
httpd支持的虚拟主机类型
基于域名的虚拟主机
基于IP地址的虚拟主机
基于端口的虚拟主机
构建虚拟主机——基于域名
应用示例:
构建2个虚拟Web站点:
www.benet.com,IP地址为 173.17.17.11
www.accp.com,IP地址为 173.17.17.11
在浏览器中访问这两个域名时,分别显示不同的内容
1.为虚拟主机提供域名解析
[root@dnssvr ~]# vi /var/named/chroot/var/named/benet.com.zone
……
@ IN NS dnssvr.benet.com.
dnssvr IN A 173.17.17.2
www IN A 173.17.17.11
[root@dnssvr ~]# vi /var/named/chroot/var/named/accp.com.zone
……
@ IN NS dnssvr.benet.com.
www IN A 173.17.17.11
2.为虚拟主机准备网页文档
[root@www ~]# mkdir /var/www/html/benetcom[root@www ~]# mkdir /var/www/html/accpcom[root@www ~]# echo "
www.benet.com
" > /var/www/html/benetcom/index.html[root@www ~]# echo "
www.accp.com
" > /var/www/html/accpcom/index.html
3.添加虚拟主机配置
root@www ~]# vi /usr/local/httpd/conf/extra/httpd-vhosts.conf //创建独立的配置文件
<Directory "/var/www/html“> //设置目录访问权限
Order allow,deny
Allow from all
</Directory>
NameVirtualHost 173.17.17.11
<VirtualHost 173.17.17.11> //设置benet虚拟站点
DocumentRoot/var/www/html/benetcom
ServerName www.benet.com
ErrorLog logs/www.benet.com.error_log
CustomLog logs/www.benet.com.access_log common
</VirtualHost>
<VirtualHost 173.17.17.11> //设置accp虚拟站点
DocumentRoot /var/www/html/accpcom
ServerName www.accp.com
ErrorLog logs/www.accp.com.error_log
CustomLog logs/www.accp.com.access_log common
</VirtualHost>
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf //加载独立的配置文件
……
Include conf/extra/httpd-vhosts.conf
[root@www ~]# /usr/local/httpd/bin/apachectl restart
4.构建虚拟主机——基于IP
应用示例:
构建2个虚拟Web站点:
www.bdqn.cn,IP地址为 220.181.120.61
www.jbit.cn,IP地址为 122.115.32.133
在浏览器中访问这两个IP时,分别显示不同的内容
<VirtualHost 220.181.120.61>
DocumentRoot /var/www/html/bdqncn
ServerName www.bdqn.cn
……
</VirtualHost>
<VirtualHost 122.115.32.133>
DocumentRoot /var/www/html/jbitcn
ServerName www.jbit.cn
……
</VirtualHost>
5、构建虚拟主机——基于端口
应用示例:
构建2个虚拟Web站点:
www.benet.com,IP地址、端口为 173.17.17.11:80
www.accp.com,IP地址、端口为 173.17.17.11:8353
在浏览器中访问这两个端口时,分别显示不同的内容
<VirtualHost 173.17.17.11:80>
DocumentRoot /var/www/html/accpcom
ServerName www.accp.com
……
</VirtualHost>
[root@www ~]# vi /usr/local/httpd/conf/httpd.conf
……
Include conf/extra/httpd-vhosts.conf
Listen 173.17.17.11:80
Listen 173.17.17.11:8353