ApacheLicence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似
Apache主要特点
1、开放源代码、跨平台应用
2、支持多种网页编程语言
3、模块化设计、运行稳定、良好的安全性
Apache软件版本
1.X
1、目前最高版本是1.3,运行稳定
2、向下兼容性较好,但缺乏一些较新的功能
2.X
1、目前主要包括2.0和2.2两个版本
2、具有更多的功能特性
3、与1.X相比,配置管理风格存在较大差异
Apache编译安装的优点
1、具有较大的自由度,功能可定制
2、可及时获得最新的软件版本
3、普遍适用于大多数Linux版本,便于移植使用
一:实验要求
3:学会构建AWStats日志分析系统
客户机的地址限制
5:构建虚拟WEB主机
基于域名的虚拟主机
基于IP地址、端口的虚拟主机
二:实验环境
1:需要的软件包
apr-1.5.2.tar.gz
apr-util-1.5.4.tar.gz
2:搭建服务器的环境
RHEL6.5版本
IP地址:192.168.1.63255.255.255.0
配置好yum仓库
三:实验代码
第一块:搭建apache服务器
主要目录和文件:
注释:--nodeps是强制接触依赖关系
第2步:检查手工编译需要的4中软件包是否安装
[root@xuegod63~]#rpm-qgcc
gcc-4.4.7-4.el6.x86_64
[root@xuegod63~]#rpm-qgcc-c++
gcc-c++-4.4.7-4.el6.x86_64
[root@xuegod63~]#rpm-qmake
make-3.81-20.el6.x86_64
[root@xuegod63~]#yuminstallpcre-devel-y
第3步:解压软件包
[root@xuegod63~]#tar-zxvfapr-1.5.2.tar.gz-C/opt/
[root@xuegod63~]#tar-zxvfapr-util-1.5.4.tar.gz-C/opt/
第4步:源码编译安装Apache
--prefix=/usr/local/apache\
--enable-so\
--enable-rewrite\
--enable-mods-shared=most\
--with-mpm=worker\
--disable-cgid\
--disable-cgi
0
参数解释:
--prefix=//来指定安装路径
--enable-rewrite//支持URL重写
--enable-mods-shared=most//选项:告诉编译器将所有标准模块都动态编译为DSO模块。
--with-mpm=worker//让apache以worker方式运行
--with-mpm=worker//该参数是配置apache将以何种模式编译的。Apache网站文档指出不同操作系统下的不同的默认模式.
--disable-cgid//禁止用一个外部CGI守护进程执行CGI脚本
--disable-cgi//禁止编译CGI版本的PHP
第5步:命令链接到PATH变量并且管理service
/usr/local/apache/bin/apachectl
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin
注释:Linux系统中所有的命令都是放在PATH变量中的,可以放在/usr/local//sbin或者/usr/local/bin下。
lrwxrwxrwx1rootroot313月917:32/usr/local/bin/apachectl->/usr/local/apache/bin/apachectl
注释:优化路径,将/usr/local/apache/bin/下的所有命令内容链接到PATH变量中的路径下。
只有将命令链接到PATH变量的路径中,命令才可以被使用。
#!/bin/sh
#chkconfig:23458515
#description:ApacheisaWorldWideWebserver.
注释:使程序可以使用service管理,"service管理的命令都在/etc/init.d/这个目录下的"。
如果是rpm命令安装的软件包就不需要使用service命令管理,可以直接执行service命令,
但是手工源码编译的软件包,程序就不可以直接执行service命令。
第6步:将配置文件链接到/etc下
ServerName
[root@xuegod63apache]#cathtdocs/index.html
注释:在/usr/local/apache/htdocs/下存放着apache服务自带的index。Html网页,用于验证,次服务是否启动成功,在此目录下,可以创建更多的网页文件。
[root@xuegod63htdocs]#vima.html创建一个新的网页
第二块:Httpd服务访问控制
作用:
控制对网站资源的访问
常用访问控制方式:
客户机地址限制
第1步:共享虚拟目录
Includeconf.d/*.conf#在主配置文件末尾增加。
[root@xuegod63~]#cd/usr/local/apache/#切换至服务目录
[root@xuegod63apache]#mkdirconf.d#创建子主配置文件目录
[root@xuegod63apache]#cdconf.d/
[root@xuegod63conf.d]#vimvdir.conf#创建子主配置文件
Alias/doc/"/usr/share/doc/"#定义虚拟目录doc,物理共享路径在/usr/share/doc/
#定义这个目录的权限如下内容
OptionsIndexesMultiViewsFollowSymLinks#固定模式
AllowOverrideNone#固定的不允许重写
Orderallow,deny#先允许,后拒绝
Allowfromall#允许从任何客户机访问
[root@xuegod63conf.d]#vimvdir.conf#修改子主配置文件
Alias/man/"/usr/share/man/"#共享出去的目录和共享出去的别名
OptionsIndexesMultiViewsFollowSymLinks
AllowOverrideNone
Orderallow,deny
Allowfromall
AuthName"**********welcome*********"#定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示
AuthTypeBasic#设置认证的类型,basic为基本的认证
AuthUserFile/usr/local/apache/user#设置用于保存用户账号、密码的认证文件
路径(htpasswd)
requirevalid-user#要求只有认证文件中的合法用户才能访问。valid-user表示所有合法用户
#Requireallgranted
[root@xuegod63conf.d]#htpasswd-c/usr/local/apache/usertest#创建用户认证的数据库
Newpassword:123456
Re-typenewpassword:123456
Addingpasswordforusertest
注意:htpasswd命令指的是创建用户认证的数据库中的用户名称和密码,
‘-c’指的是创建用户认证的数据库的路径。第一次创建需要加‘-c’,第二次以后就不需要了。
[root@xuegod63conf.d]#htpasswd/usr/local/apache/userjack
Newpassword:456789
Re-typenewpassword:456789
Addingpasswordforuserjack
[root@xuegod63conf.d]#cat/usr/local/apache/user
test:$apr1$KQuygE7p$H7qBAPM5Z2V0SXrWfTFlo0
jack:$apr1$spCSLlRw$WYGcMNUbYqXUQZNkoMXcm1
第三块:构建虚拟WEB主机
虚拟Web主机
在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机
1、基于域名的虚拟主机
2、基于IP地址的虚拟主机
3、基于端口的虚拟主机
第1步:基于ip的虚拟主机
需求:
1:构建2个虚拟Web站点:
,IP地址为192.168.1.36
,IP地址为192.168.1.63
2:在浏览器中访问这两个域名时,分别显示不同的内容
分析:在虚拟机中添加网卡,给定网桥模式,修改添加网卡信息,并且将mack地址修改。
[root@xuegod63conf.d]#vimvhost.conf
#定义虚拟主机,给定IP地址
ServerAdmin741215208@qq.com#定义此虚拟主机的IP地址
DocumentRoot/opt/accp/#定义虚拟主机的归属目录
ServerName#定义域名
ErrorLoglogs/accp.com-error_log#错误日志
CustomLoglogs/accp.com-access_logcommon
#定义虚拟主机的目录权限
Requireallgranted
ServerAdminadmin@benet.com
DocumentRoot/opt/benet/
ErrorLoglogs/benet.com-error_log
CustomLoglogs/benet.com-access_logcommon
[root@xuegod63conf.d]#mkdir/opt/accp#创建虚拟主机的文件夹目录
[root@xuegod63conf.d]#mkdir/opt/benet
[root@xuegod63conf.d]#echo"
[root@xuegod63conf.d]#serviceiptablesstop
第2步:基于端口地址的虚拟主机
Listen192.168.1.63:8080
ServerAdmin741215208@qq.com
DocumentRoot/opt/accp/
ErrorLoglogs/accp.com-error_log
第3步:基于域名的虚拟主机
注释:hosts文件在C:\Windows\System32\drivers\etc下,hosts文件中添加以下内容,需要将此文件拖出到桌面修改,修改完之后再拖回去。
192.168.1.63
Apache中的虚拟主机的配置(基于IP)
简单介绍一下环境
OS:REDHATAS4.0
IP:192.168.1.108
MASK:255.255.255.0
GW:192.168.1.1
DNS:192.168.1.2
1.先添加一个IP因为服务器现在是单网卡,所以要添加一个网卡,操作步骤
#cd/etc/sysconfig/network-scripts
#viifcfg-eth0:0
添加内容:
DEVICE="eth0:0"
IPADDR="192.168.1.109"
NETMASK="255.255.255.0"
ONBOOT="yes"
#reboot
2.测试网卡是否已经开始工作
说明两块网卡都开始正常工作
2.修改APACHE的配置文件
DocumentRoot/var/www/html/test1
DocumentRoot/var/www/html/test2
记得把原来的DocumentRoot注释掉
3测试结果:在浏览器里分别输入
[url][/url]
应该看到不同的页面
我的页面如下:
web服务器介绍
万维网又称web(worldwideweb,www),是在internet上以超文本为基础形成的信息网,用户可以通过浏览器可以访问web服务器上面的信息资源
web服务的历史和工作原理
web服务的历史
web的工作原理
web系统是客户端/服务端的C/S架构,所以有服务器端端和客户端程序两个部分,
常用的服务器端软件有Apache,IIS,nginx等,
常见的客户端浏览器有IE,Mozilla等,用户在浏览器地址栏中输入资源定位地址(URL)来访问web页面
web页面是以超文本标记语言(HTML)进行编写,它是文本不在是传统的书页方式文本,而是可以在浏览
器上面从一个页面跳转到另一个页面,使用HTML语言编制的web除了文本意外还可以嵌入视频,音乐,图
象等.
[root@localhost~]#curl-I
HTTP/1.1200OK
Server:bfe/1.0.8.18
Date:Thu,06Oct201607:23:46GMT
Content-Type:text/html
Content-Length:277
Last-Modified:Mon,13Jun201602:50:09GMT
Connection:Keep-Alive
ETag:"575e1f61-115"
Cache-Control:private,no-cache,no-store,proxy-revalidate,no-transform
Pragma:no-cache
Accept-Ranges:bytes
一次完整的Http请求处理过程:
(1)建立或处理连接请求;
(2)接收请求;
(3)解析请求,处理请求;
(4)加载用户请求的资源;
(5)构建响应报文;
(6)发送响应报文;
(7)记录访问于日志中;
访问错误响应码
1xx:
2xx:成功响应
3xx:重定向响应
4xx:客户端错误
5xx:服务端错误
Windows系统中默认Web服务程序是IIS(InternetInformationServices),这是一款图形化的网站管理工具,IIS程序不光能提供Web网站服务,还能够提供FTP、NMTP、SMTP等服务功能,但只能在Windows系统中使用。
nginx——最初于2004年10月4日为俄罗斯知名门户站点而开发的,作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而深受信赖,但最最最被认可的是低系统资源、占用内存少且并发能力强,目前国内如新浪、网易、腾讯等门户站均使用。
Apache——取自美国印第安人土著语Apache,寓意着拥有高超的作战策略和无穷的耐性,由于其跨平台和安全性广泛被认可且拥有快速、可靠、简单的API扩展。目前拥有很高的Web服务软件市场占用率,全球使用最多的Web服务软件,开源、跨平台(可运行于Unix,linux,windows中)。
Tomcat——属于轻量级的Web服务软件,一般用于开发和调试JSP代码,通常认为Tomcat是Apache的扩展程序。
关于Apache服务
Nginx程序作为Web服务软件届的后起之秀已经通过自身的努力与优势赢得了大批站长的信赖,不得不说真的很棒!但是Apache程序作为老牌的Web服务软件因其卓越的稳定性与安全性成为了红帽RHEL7系统中默认的网站服务软件,同样也是红帽RHCSA与RHCE考试认证中避不开的考题。
Apache简介
Apache优点
但由于Apache是开源软件,所以得到开源社区的支持,不断开发出新的功能特性,并修补了原来的缺陷,经过多年不断的完善,如今的Apache已经是最流行的web服务端软件之一Apache拥有以下众多的特性,保证了它可以高速稳定的运行
支持所有的计算机平台
简单有效的配置文件
支持虚拟主机
集成Perl脚本语言
集成代理服务器模块
支持实时监视服务器状态和定制服务器日志
支持服务器端包含指令
支持Php
支持第三方软件开发商提供的软件
Apache模块化
Apache服务器的安装使用
安装Apache
Linux基本都自带Apache软件
[root@localhost~]#yuminstall-yelinks//这是一个字符界面浏览器使用方式“elinks域名”
[root@localhost~]#netstat-antup|grep80//启动是否成功,查看端口是否开放
[root@localhost~]#ls/var/www/html///默认网站根目录
查看Apache软件版本信息
Serverversion:Apache/2.2.15(Unix)
Serverbuilt:May11201619:28:33
Server'sModuleMagicNumber:20051115:25
Serverloaded:APR1.3.9,APR-Util1.3.9
Compiledusing:APR1.3.9,APR-Util1.3.9
Architecture:64-bit
ServerMPM:Prefork
threaded:no
forked:yes(variableprocesscount)
查看已经被编译的模块
Compiledinmodules:
core.c
prefork.c
mod_so.c
ServerTokensOS#返回操作系统类型,如apache/2.0.54(unix)
ServerName192.168.1.235:80#服务器主机名
KeepAliveOff#是否允许一个永久的链接,设置为OFF的时候,不能保持连接功能,传输效率比较低,设置为ON时,可以提高服务器传输文件的效率,建议开启
MaxKeepAliveRequests100#设置KeepAlive为ON时,设置客户端每次连接允许请求相应最大文件数,默认100个
Listen80#监听端口,默认本地IP,如果指定ip写上IP:80
StartServers8#服务开始起启动8个进程
MinSpareServers5#最小空闲5个进程
MaxSpareServers20#最多空闲20个进程
ServerLimit256#服务器允许配置进程数上线
MaxClients256#最大连接数256,超过要进入等候队列
MaxRequestsPerChild4000#每个进程生存期内服务最大的请求数量,0表示用不结束
OptionsFollowSymLinks#OptionsIndexes目录浏览FollowSymLinks用连接浏览
AllowOverrideNone#设置为none,忽略.htaccess
LoadModuleauth_basic_modulemodules/mod_auth_basic.so#载入的库,模块
●●●●●●
Includeconf.d/*.conf#conf.d里面的conf文件也属有效配置文件
Userapache#apache运行以哪个身份运行
Groupapache#apache运行以哪个组的身份运行
DocumentRoot"/var/www/html"#默认的主目录,如果改动要改动两处,Directory
OptionsIndexesFollowSymLinks
Orderallow,deny#这里默认后者生效,也就是deny生效
Allowfromall#这里说允许所有
Directory>
LogLevelwarn#日志等级
DirectoryIndexindex.htmlindex.html.var#首页
AccessFileName.htaccess#access文件名
AddDefaultCharsetUTF-8#支持的语言,默认编码
#配置文件的最后是虚拟主机的字段,其中你大部分字段做个了解即可,用到的时候去查即可
检测配置文件语法
Listen55667
[root@localhost~]#apachectlconfigtest
SyntaxOK
创建一个测试首页
[root@localhost~]#cd/var/www/html/
[root@localhosthtml]#ls
[root@localhosthtml]#echo"
[root@localhosthtml]#ll
total4
-rw-r--r--1rootroot33Oct609:06index.html
符号链接和虚拟目录
的所有资料都是存在该目录下,该参数只能设置一个目录作为参数值,那么是不是在Apache中就能有一
个目录存放文档文件呢?如果文档根目录空间不足,要放到其他的文件系统中应该怎么办,
符号链接
例如:/var/www/html/doc这个目录,希望吧/usr/share/doc目录映射成/var/www/html/doc,配置就是一个软连接就行
[root@localhosthtml]#ln-s/usr/share/doc/doc
lrwxrwxrwx1rootroot15Oct609:49doc->/usr/share/doc/
虚拟目录(别名)
使用虚拟目录是另一种将根目录以外的内容加入站点中的办法,下面举一个简单的例子,把/var/log目
录映射成网站根目录下的/log下
Alias/log"/var/log"
页面重定向
如果用户经常访问某个网站的网页,他很可能会把页面的URL添加到收藏夹,在每次访问网站的时候,可
以直接点击收藏夹的记录访问,但是如果网站进行了目录架构的更改,用户再使用原来的URL访问时就会
出现404页面无法找到的错误,为了方便用户能够使用原来的URL进行访问,这时就需要页面重定向了
假设网站有一个doc目录,现在管理员要对网站的目录结构就行整理,并把/doc目录移动到/old-doc目录下,如果用户还是访问原来的URL就会出现404的错误,
Alias/old-doc"/usr/share/doc"
#指定当用户访问/doc目录遇到404错误自动重定向到
Redirect303/doc
3、使用浏览器再次访问
Apache日志文件
Apache运行会生成两个日志文件,access_log(访问日志)error_log(错误日志)
access_logerror_log
1、访问日志文件
Apache的访问日志就是记录web服务器的所有访问活动(如下图)
容可以看出,每一行都记录了一次访问记录,由7个部分组成
192.168.211.1--[06/Oct/2016:10:23:26+0800]"GET/old-doc/HTTP/1.1"200149404"-""Mozilla/5.0(WindowsNT6.3;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/53.0.2785.143Safari/537.36"
部分详细说明
客户端地址:表明访问网站的客户端IP地址
访问者的标示:该项一般为空白,用“-”代替
访问者验证的名字:该项用于记录访问者进行身份验证时提供的名字,一般情况下该项也为空白
请求类型:该项记录了服务器收到是一个什么类型的请求,一般类型包括GET、post、HEAD
请求的代码:通过该项信息可以知道请求是否成功,遇到了什么样的问题错误,正常情况下,为200
发送给客户端的字节数:表示发送给客户端的总的字节数,通过检查该数值是否和文件大小相同,可以知道传输是否被中断
2、错误日志
ErrorLoglogs/error_log
LogLevelwarn
它们分别用于配置错误日志的位置和日志的级别
日志的级别说明
严重程度等级说明
1emerg系统不可以用
2alert需要立即引起注意的情况
3crit危急情况
4error错误信息
5warn警告信息
6notiee需要引起注意的情况
7info一般信息
8debug由运行于debug模式的程序输出的信息
emerg级别的信息最为严重,debug级别最低,如果用户吧错误日志设置成warn级别,则严重程度由1-5会被记录下来
容可以看出,每一行记录了一个错误,由3个部分组成,
[ThuOct0610:22:242016][error][client192.168.211.1]DirectoryindexforbiddenbyOptionsdirective:/usr/share/doc/
第二个是错误等级:error
第三个是错误的内容:[客户192.168.211.1]目录索引选项禁止指令:/usr/share/doc/
Apache安全配置
访问控制
访问控制是提高apache服务器安全级别的最有效的手段之一,看下Diertory段,Diertory段用于设置与
每个Diretory段以开始结束。
问控制和认证
1、Allow指令
Allow指令用于设置那些客户端可以访问Apache
Allowfor[All/全域名/部分域名/ip地址/网络地址/cidr地址。。。]
all表示所有客户端
全域名:表示域名对应的客户端
部分域名:表示域内的所有客户端baidu.com
IP地址:如172.16.2.1
网络地址:如192.168.1.0/256.356.355.0
CIDR地址:172.16.20.0/24
2、Deny指令
Deny指令用户设置拒绝那些客户端访问Apache,格式和Allow一样
3、Order指令
Order指令用于指定访问规则的先后顺序,有一下两种
OrderAllow,Deny;先执行允许访问规则,在执行拒绝访问规则
OrderDeny,Allow;先执行拒绝访问规则,在执行允许访问规则
实例:
Orderdeny,allow
Denyfromall
Allowfrom192.168.211.1
用户认证
Apache的用户认证方式包括基本(Basic)认证和摘要(Digest)认证两种,摘要认证比基本认证更加安
全,但有个别浏览器不支持,基本认证很简单,当用户在浏览器输入认证模式的URL时候,会弹出一个对
话框,要求输入账户密码,当用户输入后,web服务验证他的正确性,如果正确,则返回页面,错误则返
回401页面
要使用用户认证,首先要创建好用户名和密码,在Apache中提供htpasswd命令用于创建和修改密码文件,该命令在/support目录下
Newpassword:
Re-typenewpassword:
Addingpasswordforusersam
认证密码文件创建后,如果再向users文件添加一个ken的用户不加-C
Addingpasswordforuserken
与/etc/passwd文件类似,认证密码都是一行一个
sam:fGNODsapTMn72
ken:8HenVGxWHKF8A
用户名:加密后的密码
htpasswd没有删除账户指令,直接在配置文件里面删除
案例:
现在网站管理员为了更加安全,加强控制,对log目录经过sam用户认证才能访问
AuthTypeBasic//设置认证的方式
AuthName"doc"//设置保护区域的名称
requireusersam//指定那些用户可以进行访问
2、检测语法,重载服务
[root@localhost~]#
虚拟主机
虚拟主机就是指将一台物理服务器虚拟多台web服务器,可以有效的节省硬件资源,Apache支持基于IP地址或主机名的虚拟机服务
虚拟主机的介绍
虚拟主机就是将一台物理服务器虚拟成多台web服务器,对于一些小规模的网站,通过web虚拟主机技术、可以跟其他网站共享一台服务器,有效减少系统的运行成本,
比如说,一家从事web托管的公司,他为企业提供web服务,那么他肯定不会为每个企业准备一台物理服务器,
Apache提供3中虚拟主机方案:基于IP的虚拟主机服务,基于主机名的虚拟主机和基于端口的虚拟主机
基于IP的虚拟主机
基于IP的虚拟主机,服务上面必须设置多个IP地址,服务器根据请求目的的IP地址来判断请求的是哪个虚拟主机
假设一台服务器上面有两个IP地址,分别为192.168.211.128和192.168.211.130,对应和,现在要根据这两个IP地址来实现虚拟主机
当客户端访问192.168.211.128访问/var/www/html/server1
当客户端访问192.168.211.130访问/var/www/html/server2
问题:
如果服务器只有一个网卡,可以通过单网卡配置多IP来模拟
1、在/var/www/html/server1和server2下,分别生成index.html文件
[root@localhosthtml]#mkdirserver{1,2}
index.htmllogloganalyzeold-docserver1server2
[root@localhostserver1]#catindex.html
基于IP的虚拟主机测试
基于IP的虚拟主机测试:
ServerAdminadmin@zabbix.com
DocumentRoot/var/www/html/server1
AllowOverridenone
OrderAllow,deny
DocumentRoot/var/www/html/server2
重载Apache服务访问
基于主机名的虚拟主机(域名)
大多数物理机IP有限,基于IP这种方式太浪费IP资源了,更多的都是使用基于域名的虚拟主机服务
时,客户端想要访问的主机名也通过请求头中的Host语句传递给web服务器,web服务器接受到这个请求
后,通过检查Host语言来判断客户端请求的是哪个虚拟主机
与基于IP地址虚拟主机的配置方法不同,用户必须在conf配置文件使用NameVirtualHost参数
NameVirtualHostIP地址/主机名[:端口]
NameVirtualHost192.168.211.128
NameVirtualHost192.168.211.130
基于端口的虚拟主机
在同一IP,同一主机名下,使用监听不同端口,访问时需要加访问的端口。使用不多,一般用来做内网测试使用