Apache 2.2

MPM:
prefork:多进程模型,一个进程响应一个请求;
worker:多线程模型(多进程生成,一个进程生成多个线程),一个线程响应一个请求;
event:事件驱动模型,一个线程响应多个请求;

并发服务器响应请求:
	单进程I/O模型;
	多进程I/O模型;
	复用的I/O模型;
		多线程模型
		事件驱动
	利用的多进程I/O模型;

	程序环境
		配置文件:
			/etc/httpd/conf/httpd.conf
			/etc/httpd/conf.d/*.conf
		服务脚本:
			/etc/rc.d/init.d/httpd
			配置文件:/etc/sysconfig/httpd
		主程序文件:
			/usr/sbin/httpd
			/usr/sbin/httpd.event
			/usr/sbin/httpd.worker
		日志文件目录:
			/var/log/httpd
				access_log: 访问日志
				error_log:错误日志
		站点文档目录:
			/var/www/html
		模块文件路径:
			/usr/lib64/httpd/modules

		配置文件的组成:
			 ~]# grep "Section" /etc/httpd/conf/httpd.conf 
			### Section 1: Global Environment
			### Section 2: 'Main' server configuration
			### Section 3: Virtual Hosts

			配置格式:directive value
				directive: 不区分字符大小写;
				value: 为路径时,取决于文件系统;

	常用配置:
		1、修改监听的IP和Port
			Listen [IP:]PORT

			省略ip表示监听本机所有IP; Listen可重复出现多次;
		
		2、持久连接
			Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成;
				如何断开?
					数量限制:100
					时间限制:可配置
				副作用:对并发访问量较大的服务器,持久连接功能会使用有些请求得不到响应;
				折衷:使用较短的持久连接时间;
					httpd-2.4 支持毫秒级持久时间;
			非持久连接

			KeepAlive On|Off
			MaxKeepAliveRequests #
			KeepAliveTimeout #

			测试:
				telnet HOST PORT
				GET /URL HTTP/1.1
				Host: HOSTNAME or IP

		3、MPM
			Multipath Process Module:多道处理模块
				prefork, worker, event

			httpd-2.2不支持同时编译多个模块,所以只能编译时选定一个;rpm安装的包提供三个二进制程序文件,分别用于实现对不同MPM机制的支持;确认方法:
				# ps aux  | grep httpd

			默认为/usr/sbin/httpd, 其使用prefork
				查看模块列表:
					查看静态编译的模块
						# httpd -l
						Compiled in modules:
						  core.c
						  prefork.c
						  http_core.c
						  mod_so.c
					查看静态编译及动态装载的模块
						# httpd -M

			更换使用的httpd程序:
				/etc/sysconfig/httpd
					HTTPD=

				重启服务生效;

			prefork的配置:
				<IfModule prefork.c>
				StartServers       8
				MinSpareServers    5
				MaxSpareServers   20
				ServerLimit      256
				MaxClients       256
				MaxRequestsPerChild  4000
				</IfModule>				

			worker的配置:
				<IfModule worker.c>
				StartServers         4
				MaxClients         300
				MinSpareThreads     25
				MaxSpareThreads     75
				ThreadsPerChild     25
				MaxRequestsPerChild  0
				</IfModule>

			PV, UV
				PV: Page View
				UV: User View
					独立IP量;

				300*86400=40W+

		4、DSO
			配置指令实现模块加载
				LoadModule <mod_name> <mod_path>

				模块路径可使用相对地址
					相对于ServerRoot(/etc/httpd)指向的路径而言;
						/etc/httpd/modules/

		5、定义'Main' server的文档页面路径
			DocumentRoot

			文档路径映射:
				DocumentRoot指向的路径为URL路径的起始位置;
					DocumentRoot "/var/www/html"
						test/index.html --> http://HOST:PORT/test/index.html

		6、站点访问控制
			可基于两种类型的路径指明对哪些资源进行访问控制
				文件系统路径:
					<Directory ""> </Direcotry>
					<File ""> </File>
					<FileMatch ""> </FileMatch>
				URL路径:
					<Location ""> </Location>
					...

			访问控制机制:
				基于来源地址;
				基于账号;

		7、Directory中“基于来源地址”实现访问控制

			(1) Options
				所有可用特性:Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
							  None, All
					Indexes: 索引;
					FollowSymlinks:允许跟踪符号链接文件;

			(2) 基于来源地址的访问控制机制
				Order:检查次序
					Order allow,deny
					Order deny,allow
				Allow from
				Deny from

				来源地址:
					IP
					NetAddr:
						172.16
						172.16.0.0
						172.16.0.0/16
						172.16.0.0/255.255.0.0

		8、定义默认主页面
			DirecotryIndex index.html index.html.var

		9、日志设定

			错误日志:
				ErrorLog logs/error_log
				LogLevel warn

					debug, info, notice, warn, error, crit, alert, emerg

			访问日志:
				CustomLog logs/access_log combined
				LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

					%h:客户端IP地址;
					%l: Remote logname (from identd, if supplied). -表示为空;
					%u: Remote user,  (from auth; may be bogus if return status (%s) is 401);
					%t:Time the request was received (standard english format),服务器收到请求的时间;
					%r:First line of request,请求报文的道行信息(method url version);
					%>s: 响应状态码;
					%b: 响应报文的大小,单位是字节,不包括响应报文首部;
					%{Referer}i:请求报文当中"referer"首部的值;当前资源的访问入口,即从哪个页面中的超链接跳转而来;
					%{User-Agent}i:请求报文当中"User-Agent"首部的值;即发出请求用到的应用程序;

				详情:http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats

		10、路径别名

			DocumentRoot "/www/htocs"
				http://www.magedu.com/download/bash-4.4.2-3.el6.x86_64.rpm
					--> /www/htdocs/download/bash-4.4.2-3.el6.x86_64.rpm

			Alias /URL/ "/PATH/TO/SOMEDIR/"	
			
				Alias /bbs/ "/forum/htdocs/"
					http://www.magedu.com/bbs/index.html 	
						--> /forum/htdocs/bbs/

		11、设定默认字符集
			AddDefaultCharset UTF-8

			GBK, GB2312, GB18030

		12、基于用户的访问控制

			认证质询:
				WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户提供账号和密码;

			认证:
				Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过,则服务器发送响应的资源;

				认证类型:
					basic:明文
					digest:消息摘要

			安全域:需要用户认证后方能访问的路径;
				应该通过名称对其进行标识,并用于告知用户认证的原因;

			用户的账号和密码存储于何处?
				虚拟账号:仅用于访问某服务时用到的认证标识;

				存储:
					文本文件
					SQL数据库
					ldap
					nis

			basic认证:
				(1) 定义安全域
					<Directory "">
						Options None
						AllowOverride None
						AuthType Basic
						AuthName "STRING"
						AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"
						Require user username1 username2 ...
					</Directory>

						允许账号文件中的所有用户登录访问:
							Require valid-user

				(2) 提供账号和密码存储(文本文件)
					使用htpasswd命令进行管理
						htpasswd [options] passwordfile username
							-c: 自动创建passwordfile,因此,仅应该在添加第一个用户时使用;
							-m: md5加密用户密码;
							-s: sha1加密用户密码;
							-D: 删除指定用户

				(3) 实现基于组进行认证
					<Directory "">					
						Options None
						AllowOverride None
						AuthType Basic
						AuthName "STRING"
						AuthUserFile "/PATH/TO/HTTPD_USER_PASSWD_FILE"
						AuthGroupFile "/PATH/TO/HTTPD_GROUP_FILE"
						Require group GROUP1 GROUP2 ...
					</Directory>	

					要提供:用户账号文件和组文件;

						组文件:每一行定义一个组
							GRP_NAME:user1 user2 user3 ...


					示例:
						<Directory "/www/htdocs/admin">
						    Options None
						    AllowOverride None
						    AuthType Basic
						    AuthName "Administator private"
						    AuthUserFile "/etc/httpd/conf.d/.htpasswd"
						    AuthGroupFile "/etc/httpd/conf.d/.htgroup"
						    Require group webadmin
						</Directory>

		13、虚拟主机

			有三种实现方案:
				基于ip:
					为每个虚拟主机准备至少一个ip地址;
				基于port:
					为每个虚拟主机准备至少一个专用port;实践中很少使用;
				基于hostname:
					为每个虚拟主机准备至少一个专用hostname;

				可混合使用上述三种方式中任意方式;

			注意:一般虚拟主机莫与中心主机混用,所以,要使用虚拟主机,先禁用中心主机;
				禁用中心主机:注释DocumentRoot

			每个虚拟主机都有专用配置:
				<VirtualHost "IP:PORT">
					SeverName
					DocumentRoot ""
				</VirtualHost>

					ServerAlias: 虚拟主机的别名;
					ErrorLog
					CustomLog
					<Directory "">
					</Directory>
			
			打开此设置 NameVirtualHost *:80;
			
			示例1:基于ip
				<VirtualHost 172.16.100.6:80>
				    ServerName web1.magedu.com
				    DocumentRoot "/vhosts/web1/htdocs"
				</VirtualHost>

				<VirtualHost 172.16.100.7:80>
				    ServerName web2.magedu.com
				    DocumentRoot "/vhosts/web2/htdocs"
				</VirtualHost>

			示例2:基于port
				<VirtualHost 172.16.100.7:80>
				    ServerName web2.magedu.com
				    DocumentRoot "/vhosts/web2/htdocs"
				</VirtualHost>

				<VirtualHost 172.16.100.7:8080>
				    ServerName web3.magedu.com
				    DocumentRoot "/vhosts/web3/htdocs"
				</VirtualHost>

			示例3:基于hostname
				<VirtualHost 172.16.100.6:80>
				    ServerName web1.magedu.com
				    DocumentRoot "/vhosts/web1/htdocs"
				</VirtualHost>

				<VirtualHost 172.16.100.6:80>
				    ServerName web2.magedu.com
				    DocumentRoot "/vhosts/web2/htdocs"
				</VirtualHost>

				<VirtualHost 172.16.100.6:80>
				    ServerName web3.magedu.com
				    DocumentRoot "/vhosts/web3/htdocs"
				</VirtualHost>

		14、内置的status页面
			<Location /server-status>
			    SetHandler server-status
			    Order deny,allow
			    Deny from all
			    Allow from 172.16
			</Location>	
			
			实现:基于账号实现访问控制
		15、文本压缩 mod_deflate
		

		LoadModule deflate_module modules/mod_deflate.so

		<IfModule deflate_module>
    		SetOutputFilter DEFLATE

			AddOutputFilterByType DEFLATE text/plain
			AddOutputFilterByType DEFLATE text/html
			AddOutputFilterByType DEFLATE application/xhtml+xml
			AddOutputFilterByType DEFLATE text/xml
			AddOutputFilterByType DEFLATE application/xml
			AddOutputFilterByType DEFLATE application/x-javascript
			AddOutputFilterByType DEFLATE application/javascript
			AddOutputFilterByType DEFLATE text/css

			DeflateCompressionLevel 9
			BrowserMatch ^Mozilla/4 gzip-only-text/html
			BrowserMatch ^Mozilla/4\.0[678] no-gzip
			BrowserMatch ^\bMSI[E] !no-gzip !gzip-only-text/html

		</IfModule>


https

		http over ssl = https 443/tcp
			ssl: v3
			tls: v1

			https://

		SSL会话的简化过程
			(1) 客户端发送可供选择的加密方式,并向服务器请求证书;
			(2) 服务器端发送证书以及选定的加密方式给客户端;
			(3) 客户端取得证书并进行证书验正:
				如果信任给其发证书的CA:
					(a) 验正证书来源的合法性;用CA的公钥解密证书上数字签名;
					(b) 验正证书的内容的合法性:完整性验正
					(c) 检查证书的有效期限;
					(d) 检查证书是否被吊销;
					(e) 证书中拥有者的名字,与访问的目标主机要一致;
			(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换;
			(5) 服务用此密钥加密用户请求的资源,响应给客户端;

			注意:SSL会话是基于IP地址创建;所以单IP的主机上,仅可以使用一个https虚拟主机;

		回顾几个术语:PKI,CA,CRL,X.509 (v1, v2, v3)

		配置httpd支持https:
			(1) 为服务器申请数字证书;
				测试:通过私建CA发证书
					(a) 创建私有CA
					(b) 在服务器创建证书签署请求
					(c) CA签证
			(2) 配置httpd支持使用ssl,及使用的证书;
				# yum -y install mod_ssl

				配置文件:/etc/httpd/conf.d/ssl.conf
					DocumentRoot
					ServerName
					SSLCertificateFile /path/to/xxx
					SSLCertificateKeyFile /path/to/xxx
					 SSLEngine on
			(3) 测试基于https访问相应的主机;
				# openssl s_client [-connect host:port] [-cert filename] [-CApath directory] [-CAfile filename]
	16、
		htpasswd: httpd 基于basic认证所使用的工具
		
		apachectl: httpd 启动停止控制脚本
		
		totatelogs: 日志滚动工具
		access.log -> 
		access.log, access1.log
		access.log, access1.log, access2.log 

		ab 压测工具
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、安装Apache,配置成功一个普通网站服务器 运行下载好的“apache_2.0.55-win32-x86-no_ssl.msi”,出现如下界面: 出现Apache HTTP Server 2.0.55的安装向导界面,点“Next”继续 确认同意软件安装使用许可条例,选择“I accept the terms in the license agreement”,点“Next”继续 将Apache安装到Windows上的使用须知,请阅读完毕后,按“Next”继续 设置系统信息,在Network Domain下填入您的域名(比如:goodwaiter.com),在Server Name下填入您的服务器名称(比如:www.goodwaiter.com,也就是主机名加上域名),在Administrator's Email Address下填入系统管理员的联系电子邮件地址(比如:[email protected]),上述三条信息仅供参考,其中联系电子邮件地址会在当系统故障时提供给访问者,三条信息均可任意填写,无效的也行。下面有两个选择,图片上选择的是为系统所有用户安装,使用默认的80端口,并作为系统服务自动启动;另外一个是仅为当前用户安装,使用端口8080,手动启动。一般选择如图所示。按“Next”继续。] 选择安装类型,Typical为默认安装,Custom为用户自定义安装,我们这里选择Custom,有更多可选项。按“Next”继续 出现选择安装选项界面,如图所示,左键点选“Apache HTTP Server 2.0.55”,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。点选“Change...”,手动指定安装目录。 我这里选择安装在“D:\”,各位自行选取了,一般建议不要安装在操作系统所在盘,免得操作系统坏了之后,还原操作把Apache配置文件也清除了。选“OK”继续。 返回刚才的界面,选“Next”继续。 确认安装选项无误,如果您认为要再检查一遍,可以点“Back”一步步返回检查。点“Install”开始按前面设定的安装选项安装。 正在安装界面,请耐心等待,直到出现下面的画面。 安装向导成功完成,这时右下角状态栏应该出现了下面的这个绿色图标,表示Apache服务已经开始运行,按“Finish”结束Apache的软件安装 我们来熟悉一下这个图标,很方便的,在图标上左键单击,出现如下界面,有“Start(启动)”、“Stop(停止)”、“Restart(重启动)”三个选项,可以很方便的对安装的Apache服务器进行上述操作。 好了现在我们来测试一下按默认配置运行的网站界面,在IE地址栏打“http://127.0.0.1”,点“转到”,就可以看到如下页面,表示Apache服务器已安装成功。 现在开始配置Apache服务器,使它更好的替我们服务,事实上,如果不配置,你的安装目录下的Apache2\htdocs文件夹就是网站的默认根目录,在里面放入文件就可以了。这里我们还是要配置一下,有什么问题或修改,配置始终是要会的,如图所示,“开始”、“所有程序”、“Apache HTTP Server 2.0.55”、“Configure Apache Server”、“Edit the Apache httpd conf Configuration file”,点击打开。 XP的记事本有了些小变化,很实用的一个功能就是可以看到文件内容的行、列位置,按下图所示,点“查看”,勾选“状态栏”,界面右下角就多了个标记,“Ln 78, Col 10”就表示“行 78,列 10”,这样可以迅速的在文件中定位,方便解说。当然,你也可以通过“编辑”,“查找”输入关键字来快速定位。每次配置文件的改变,保存后,必须在 Apache服务器重启动后生效,可以用前面讲的小图标方便的控制服务器随时“重启动”。 现在正式开始配置Apache服务器,“Ln 228”,或者查找关键字“DocumentRoot”(也就是网站根目录),找到如下图所示地方,然后将""内的地址改成你的网站根目录,地址格式请照图上的写,主要是一般文件地址的“\”在Apache里要改成“/”。 “Ln 253”,同样,你也可以通过查找“ “Ln321”,DirectoryIndex(目录索引,也就是在仅指定目录的情况下,默认显示的文件名),可以添加很多,系统会根据从左至右的顺序来优先显示,以单个半角空格隔开,比如有些网站的首页是index.htm,就在光标那里加上“index.htm ”文件名是任意的,不一定非得“index.html”,比如“test.php”等,都可以。 这里有一个选择配置选项,以前可能要配置,现在好像修正过来了,不用配置了,就是强制所有输出文件的语言编码,html文件里有语言标记(,这个就是设定文档语言为gb2312)的也会强制转换。如果打开的网页出现乱码,请先检查网页内有没有上述 html语言标记,如果没有,添加上去就能正常显示了。把“# DefaultLanguage nl”前面的“# ”去掉,把“nl”改成你要强制输出的语言,中文是“zh-cn”,保存,关闭。 好了,简单的Apache配置就到此结束了,现在利用先前的小图标重启动,所有的配置就生效了,你的网站就成了一个网站服务器,如果你加载了防火墙,请打开80或8080端口,或者允许Apache程序访问网络,否则别人不能访问。如果你有公网IP(一般ADSL或电话拨号上网的都是),就可以邀请所有能上网的朋友访问使用http://你的IP地址(IP地址查询可访问http://www.goodwaiter.com,查询内容内即是)你的网站了;如果你没有公网IP,也可以把内网IP地址告诉局域网内的其它用户,让他们通过http://你的内网IP地址,访问你的网站。
### 回答1: Apache是一种广泛使用的开源Web服务器软件,版本2.2Apache的一部分,它是由Apache软件基金会开发和维护的。Apache 2.2官方安装包是指Apache 2.2的安装程序,用户可以从Apache官方网站下载和安装该软件。 使用Apache 2.2官方安装包进行安装非常简单。用户可以在Apache官方网站上找到适用于他们操作系统的安装包,并从中下载。安装包通常是一个压缩文件,用户需要解压缩该文件以获取安装程序。 一旦解压缩,用户可以运行安装程序来安装Apache 2.2。安装过程中会要求用户选择一些配置选项,例如安装目录和网络设置。用户可以根据自己的需要进行选择,并按照安装程序的提示完成安装过程。 安装完成后,用户可以启动Apache 2.2服务器。默认情况下,Apache会监听80端口,并开始接受来自客户端的HTTP请求。用户可以通过使用浏览器访问服务器的IP地址或域名来测试是否成功安装了Apache 2.2。 一旦安装成功,用户可以通过编辑配置文件来进一步定制和优化Apache 2.2的设置。配置文件通常位于安装目录下的"conf"文件夹中,用户可以使用文本编辑器打开并修改该文件。然后,用户需要重新启动Apache服务器,以使其加载新的配置。 总而言之,Apache 2.2官方安装包是一种方便用户获取和安装最新版本Apache 2.2的方式。通过遵循简单的安装步骤,用户可以在自己的机器上快速地搭建和配置一个稳定的Web服务器。 ### 回答2: Apache 2.2是一个免费、开源的Web服务器软件,它是Apache软件基金会的产品之一。它支持多种操作系统,包括Windows、Linux、Unix等,并且提供了丰富的功能和工具,以帮助用户搭建和管理Web服务器。 官方安装包是Apache官方网站提供的用于安装Apache 2.2的软件包。用户可以从官方网站下载该安装包,并按照官方提供的安装指南进行安装。 使用官方安装包进行安装有以下几个步骤: 1. 下载:用户需要访问Apache官方网站,找到适合自己操作系统版本的Apache 2.2安装包,并下载到本地计算机的指定位置。 2. 解压:用户需要使用解压软件将下载的安装包解压到指定的目录中。解压后,用户会得到一个包含了Apache 2.2的文件夹。 3. 配置:用户需要根据自己的需求进行配置。可以修改配置文件中的参数,如端口号、日志文件路径等,以满足自己的需求。 4. 启动:用户需要执行启动脚本或命令,来启动Apache 2.2服务器。启动后,用户就可以通过浏览器访问自己的网站。 需要注意的是,安装Apache 2.2官方安装包之前,用户需要确保自己的操作系统满足安装要求,并且已经安装了必要的运行环境。 总之,使用Apache 2.2官方安装包可以方便快捷地安装Apache 2.2,并且通过官方的文档和指南,用户可以更好地了解和配置Apache 2.2,以满足自己的需求。 ### 回答3: Apache HTTP Server(也称为Apache)是一款开源的Web服务器软件。Apache 2.2Apache HTTP Server的一个版本,它是在2005年发布的并延续了很长的时间。Apache 2.2官方安装包是为了方便用户在不同操作系统上安装Apache 2.2而提供的。 Apache 2.2官方安装包提供了完整的Apache 2.2二进制文件,以及安装和配置Apache的文档。用户可以根据自己的操作系统类型,下载适用于自己系统的安装包。例如,对于Windows用户,可以下载一个可执行文件(.exe)安装器,只需双击即可开始安装。对于Linux用户,可以下载适用于各个发行版的源代码或预编译包。 安装Apache 2.2官方安装包后,用户可以通过修改配置文件来自定义Apache的行为。配置文件通常位于安装目录下的conf文件夹中,用户可以使用文本编辑器打开并修改其中的配置项。例如,用户可以指定Apache监听的端口号、设置虚拟主机、启用或禁用模块等。 一旦配置完成,用户可以启动Apache服务器,并通过浏览器访问本地主机或配置的虚拟主机来查看网页。用户还可以使用Apache提供的命令行工具来管理服务器,如重启、停止或重新加载配置。 总之,Apache 2.2官方安装包提供了一种便捷的方式来安装和配置Apache 2.2,使用户能够快速搭建和管理自己的Web服务器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值