第9章 Apache(WEB服务)

一、Web服务的概念
1.1、Web服务通常来说都是C/S架构,分为服务端和客户端,通常我们接触最多的就是客户端了。
我们常浏览的网站都是以WEB服务的方式为我们呈现.
WEB服务分为服务端和客户端
常见的服务端有(apache nginx tomcat jetty lighttp IIS等),WEB容器,
常见的客户端有(IE浏览器,火狐浏览器、谷歌浏览器、360浏览器等等)


1.2、通信协议
那么既然有服务端和客户端之分。那么就会有服务端和客户端之间的通信。
WEB服务端和客户端之间的通信主要是依赖于(http协议 Hypertext Transfer Protocol)协议传输数据.
俗称(超文本传输协议)
当前使用最多的HTTP版本是http/1.1。
http://www.baidu.com

WEB浏览器-------------------------------> Web Server
打开一个port:>1024的端口
WEB浏览器<-------------------------------Web Server
Port:80 Http默认使用80端口.
1.3、Http方法
Http定义了很多种方式,客户端通过不同的方式与Web服务器进行交互,常见的方法有:
-GET 从服务器上获取一个资源(一般是网页)
-POST 向服务器提交数据(可能会创建一个新的资源)
-PUT 向服务器提交数据
-DELETE 删除制定的资源
-HEAD 只请求网页的头部信息.

1.4、Http返回状态
-200 正常,请求成功
-301 永久移动,一般用于域名重定向
-304 未修改,一般用于缓存
-401 禁止访问,未授权
-403 禁止访问,通常代表以认证通过,但是没有访问权限。
-404 未找到资源
-500 服务器内部错误.




1.5、Web静态程序
HTML语言(Hyper Text Makup Language)是绝对大多数网页使用的语言,几乎所有的网页都是以HTML作为源代码,通过浏览器就解释之后在呈现出来。
HTML拥有的语法是固定的,主要是用来存储网页数据,定义不同的元素,比如:文字,标题,段落,图片等等,现在代网页通过CSS语言来存储网页的表现样式,
目前主流网页设计框架:
内存存储:HTML
网页架构:Div
网页样式:CSS
我们可以通过打开浏览器,右击选择源码来查看网页的HTML源码。
HTML形式的页面我们称为:静态网页.

1.6、Web动态程序
HTML格式的网页文件只能提供静态的内容,但是我们根据不同的业务,以及不同的用户提供不同的内容,也就是说,希望同一个页面针对不同的用户、不同的时间、或者不同的区域反馈和展现不同的内容,这样我们就需要一个动态的网页语言。
目前主流的网站使用动态语言技术有:
常见的动态语言:JSP、asp.net(微软) JSP(JAVA)、PHP等
新出来的敏捷行比较高的语言:python或者ruby on rails等.
动态语言和静态最大的区别。就是数据库,动态语言存储数据都放在数据库里面,而静态的语言可能就放在某一个文件目录下。所有的文件都不变的。






二、Apache概念
2.1、基本概述
在企业实际的生产环境当中,有很多多WEB服务器的种类,我们上面有提到过的(IIS,Apache,Nginx,lighttp等)
Apache是最为老牌的WEB服务器,基础支持所有的操作系统。
那么几乎所有的Linux发型版都支持Apache,Apache具有一下特点:
动态的、预创进程
(apache 可以动态去预建一些服务进程,可以更好的利用服务器资源,可以基于网站的压力。动态创建一些进程)

动态模块加载
(比如:给apache增加一些功能,可以支持的动态的模块加载。什么意思?比如我这个apache服务正在运行,我需要加一个新的功能模块,正常来说都需要停止服务,对于真是环境种,不能去停止WEB服务,但是apache可以不用停止服务,就可以动态加载模块,把功能加入进去)

虚拟主机
(可以通过虚拟主机,跑多个网站程序)
用户来访问的时候

SSL主机
(支持SSL协议加密)


2.2、工作模式<重点>
Apache有两种工作模式:
Prefork模式(进程模式):
使用多个子进程,但是每一个子进程只有一个线程,每个进程在某个确定的时间只能维持一个链接,
大多数的平台上Prefork MPM 在效率上要比Worker MPM要高,但是内存使用要大的多,
对于那些使用线程困难的平台,可以选择Prefork MPM模式

Worker模式(线程模式):
worker MPM使用多个子进程,但是每个一个进程可以有多个线程,每个一个线程在某个确定的时间只能维持一个链接,
通常来说,那些个高流量的HTTP服务器上,Worker MPM是一个比较好的选择.
因为worker MPM的内存要比Prefork MPM 要低的多.

MPM(Mutil-Processing-Modules)的缩写,就是多处理模块的意思.







三、Apache基础安装
默认使用80端口(HTTP) 安全协议端口为443(HTTPS)

3.1、Apache配置文件
主配置文件
# /etc/httpd/httpd.conf

模块配置文件
# /etc/httpd/conf.d/

默认网站日志
# /var/log/httpd

默认WEB目录为
# /var/www/html



3.2、安装Apache服务
# yum -y install httpd

# /etc/init.d/httpd start //apache默认不需配置就可以启动.

# echo "this is test" >/var/www/html/index.html

# vim /etc/httpd/httpd.conf
KeepAlive Off #是否允许保持链接(每个链接有多个请求)OFF无效。
MaxKeepAliveRequests 100 #每个链接最大的请求数量 0表示无限制,根据企业实际来做调整.
KeepAliveTimeout 15 #在同一链接同一客户端连个请求之间的等待时间.
Listen 80 #允许将Aapche绑定到指定的端口,
LoadModule auth_basic_module modules/mod_auth_basic.so #增加模块的区域
User apache #使用帐号
Group apache #使用组
ServerName localhost:80
ServerAdmin root@localhost #设置管理员邮箱
DocumentRoot "/var/www/html" #设置默认的WEB程序目录
<Directory "/var/www/html"> #设置默认的WEB程序目录
<Directory/>
DirectoryIndex index.html index.html.var #设置网站首页的网页文件名称.



四、Apache配置简单用户认证
我们可以通过配置Apache位特定文件夹进行简单的HTTP用户认证,达到简单的访问控制功能。
可以使用那些用户可以访问,那些用户不可访问.

4.1、创建Apache密码文件
#useradd alvin
# htpasswd -cm /etc/httpd/.htpasswd alvin #创建一个密码文件,同时设置密码
# htpasswd -m /etc/httpd/.htpasswd alvin #更改现有的用户密码

4.2、更改配置文件
# vim /etc/httpd/httpd.conf
ServerName localhost:80
<Directory /var/www/> #要配置用户认证的WEB目录
AuthName "Linux alvin"
Authtype basic #基本认证
AuthUserFile /etc/httpd/.htpasswd #指定密码文件
Require valid-user #打开用户认证
</Directory>






五、Apache配置虚拟主机
5.1、默认的apache的配置,只提供了一个网站服务,但是我们可以配置一台apahce服务器为多个网站提供服务,
我们称为:虚拟主机
虚拟主机分为两种:
基于IP的虚拟主机: apache服务通过不同IP访问不同的虚拟主机
基于域名的虚拟主机:apache服务通过访问不同域名,访问不同的虚拟主机
一般情况都是域名的虚拟主机,如果需要搭建SSL的虚拟主机,则必须使用基于IP的虚拟主机
一般的网站往往不需一个独立的服务器的硬件资源,使用虚拟主机技术在一个服务器上运行多个网站可以大大的节省成本,提高服务器资源使用的效率.









5.2、基于域名的虚拟主机


# mkdir /opt/web1/
# mkdir /opt/web2/
# mkdir /opt/web3/
# echo "this is web1" > /opt/web1/index.html
# echo "this is web2" > /opt/web2/index.html
# echo "this is web3" > /opt/web2/index.html
# chown apache:apache /opt/web1/ -R
# chown apache:apache /opt/web2/ -R
# chown apache:apache /opt/web3/ -R

(1)相同的端口号,区分不同主机名,
www1.zytest.com-->10.0.0.201 端口号:80
www2.zytest.com-->10.0.0.201 端口号:80
# vim /etc/httpd/conf/httpd.conf
#打开它。
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www1.zytest.com
ServerAdmin alvintest@163.com
DocumentRoot /opt/web/www1.zytest.com/
ErrorLog logs/zytest.com-error_log
CustomLog logs/zytest.com-access_log common
</VirtualHost>

<VirtualHost *:80>
ServerName www2.zytest.com
ServerAdmin alvintest@163.com
DocumentRoot /opt/web/www2.zytest.com/
ErrorLog logs/zytest.com-error_log
CustomLog logs/zytest.com-access_log common
</VirtualHost>

# /etc/init.d/httpd restart






(2)相同的端口号。区分不同的域名
www1.zytest.com-->10.0.0.201 端口号:80
www2.cctest.com-->10.0.0.201 端口号:80

# vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
ServerName www1.zytest.com
ServerAdmin alvintest@163.com
DocumentRoot /opt/web1/
ErrorLog logs/zytest.com-error_log
CustomLog logs/zytest.com-access_log common
</VirtualHost>

<VirtualHost *:80>
ServerName www2.cctest.com
ServerAdmin alvintest@163.com
DocumentRoot /opt/web2/
ErrorLog logs/zytest.com-error_log
CustomLog logs/zytest.com-access_log common
</VirtualHost>

# /etc/init.d/httpd restart


(3)、不同的端口号,不同域名
www1.zytest.com-->10.0.0.201 端口号:80
www2.cctest.com-->10.0.0.201 端口号:8080
www.zyalvin.com-->10.0.0.201 端口号:81

# vim /etc/httpd/conf/httpd.conf

#修改 重点
Listen 80
Listen 8080
Listen 81

#修改 重点
NameVirtualHost *:80
NameVirtualHost *:8080
NameVirtualHost *:81
<VirtualHost *:80>
ServerName www1.zytest.com
ServerAdmin alvintest@163.com
DocumentRoot /opt/web1/
ErrorLog logs/zytest.com-error_log
CustomLog logs/zytest.com-access_log common
</VirtualHost>

<VirtualHost *:8080>
ServerName www2.cctest.com
ServerAdmin alvintest@163.com
DocumentRoot /opt/web2/
ErrorLog logs/zytest.com-error_log
CustomLog logs/zytest.com-access_log common
</VirtualHost>

<VirtualHost *:81>
ServerName www.zyalvin.com
ServerAdmin alvintest@163.com
DocumentRoot /opt/web3/
ErrorLog logs/www.zyalvin.com-error_log
CustomLog logs/www.zyalvin.com-access_log common
</VirtualHost>

# /etc/init.d/httpd restart



本章作业题目:
(1)要求搭建一个简单的默认HTTPD服务器,访问内容为:this is shuangxikeji

(2)要求搭建一个简单的用户认证服务器,用户为:gonda,密码自由定义。

(3)要求搭建基于虚拟主机WEB服务器
.1 要求基于相同的端口号,区分不同的主机名
.2 要求基于相同的端口号,分区不同的域名访问
.3 要求基于不同的端口号,分区不同的域名访问.

























posted @ 2015-02-01 17:07  大都比2号  阅读(113)  评论(0编辑  收藏  举报