企业办公自动化管理系统需求性和可行性的设计方案
关于OA办公系统需求分析
关于OA办公系统需求分析 1
第一章 绪论 1
12 本文所做工作 1
第二章 系统开发技术 2
22 Spring技术 3
第三章 系统分析 6
32 系统分析 7
323我的办公桌模块 8
324系统管理模块 9
第四章 数据库设计 10
41 表格图 10
第五章 系统实现过程 13
第六章 系统的测试与运行 14
第一章 绪论
11 选题背景
在正常办公中,企业通常会遇到许多资源和数据,比如员工资料、邮件、申请记录、打印机、计算机等,这些资源和数据管理不善情况下通常凌乱不堪,在需要时不知道存放在何处,从而影响工作效率。因此,我们设计了能满足这种需求的系统--企业Web OA系统。
通过"企业Web OA系统"对企业日常办公进行管理,满足了企业日常办公管理各方面的需求,实现了企业员工之间短消息的发送与接收功能,大大的方便了企业内部人员沟通。
12 本文所做工作
为了开发出该系统并且是系统能够真正达到"适用、够用、好用"的标准一配合用户单位的使用,查阅相关的书籍及电子文档,也向先辈们请教。在开发设计过程中,采用现在流行的SSH框架整合和Jquery、Ajax技术,通过Hibernate连接数据库,借助一些工具优化系统。另外,为了增加系统的实用性,使之能尽量与实际的应用系统和用户需求相吻合,我对许多同类系统的内容、功能进行了分析与对比,吸取了它们的可取之处,借鉴了一些经验。
13 本文的安排
整个设计共分为6章,各章的主要内容安排如下:
1 绪论。介绍论文的选题背景、所做工作以及论文的结构安排。
2 系统开发技术。主要介绍本系统用到的主要技术。
3 系统分析。主要介绍系统开发前的前期工作,包括可行性分析及系统设计思想与需求规定。从用户需求的角度从系统的角度应该达到的功能、性能、效率等指标。
4 数据库设计。为了使软件开发者对该软件的功能划分、数据结构及业务流程有一个大概的理解,使之成为整个开发工作的开始。
5 系统实现。主要是详细说明项目是如何执行的及界面展示。
6 系统测试与运行。阐述测试的方法,测试的步骤、测试达到的效果。
第二章 系统开发技术
21 Jquery与JavaScript技术
jQuery是继prototype之后又一个优秀的Javascrīpt框架。其宗旨是--WRITE LESS,DO MORE,写更少的代码,做更多的事情。jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。在Jquery技术中使用万能的$几乎可以做到一切Ajax所拥有的技术,
Jquery使用简单方面,它是一个轻量级的JS库,在使用的时候只需要将其编译好的JS文件引入即可使用,另一方面其UI插件做的视图效果非常理想,同样也是方便应用。 jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。
22 Spring技术
Spring的核心是个用于构造Java应用程序的轻量级框架,实现了Ioc模式的容器。其中的core包是框架的最基础部分,并提供依赖注入特性来使你可管理Bean容器功能;context包提供了一种框架式的Bean访问方式(ApplicationContextxml),还添加了文本消息的发送;DAO包则提供了JDBC的抽象层。也提供了一种方法实现编程性和声明性事务管理,不仅仅式针对实现特定接口。在Spring中重要的式MVC模式:View出于客户端层,通常用jsp,即页面显示部分;Controller也处于服务端层,通常用Servlet来实现,即页面显示的逻辑部分实现;Model处于中间层,通常用服务器端的javabean,即业务逻辑部分的实现。对于一些公用的方法,则可以放在一个类中。
23 JPA技术
JPA通过JDK 50注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。可以按照Java的基础语义进行持久化开发。
24 Fire Workflow插件
Fire Workflow 是一款国内的开源插件,用于工作流的设计部署,相对于国际上比较有名的几个工作流引擎,此框架的优势是结构比较简洁,扩展性比较好!此插件和spring,JPA一样是几个普通的jar包,嵌入到的系统中以解决工作流领域的问题。
Fire Workflow 是面向开发人员的,由模型,引擎,设计器,流程管理四部分组成,其流程设计器与主流IDE紧密集成,在Eclipse的插件可以让开发人员调试流程就像调试基本的java类一样简单。Fire Workflow自带7张表,由于本系统本身就拥有大量的数据表,所以Fire Workflow相对于目前比较流行的JPBM的30张表显的异常简洁。另外,选择此插件的另一个原因就是此插件的开发是基于Spring文件开发的,正好与本系统很好的整合在一起
25 Apache James邮件服务器
Apache James 简称 James, 是 Java Apache Mail Enterprise Server的缩写。James 是100%基于Java的电子邮件服务器。它是一种独立的邮件服务器,并提供了一个完整的电子邮件解决方案,用来收、发电子邮件。James服务器的核心是一个名为configxml的配置文件,在第一次启动服务器后该系统会自动生成一个configxml文件,服务器所要执行的动作都是基于此配置文件,可以再与外网失去连接的情况下在局域网内收发邮件。配置文件里面的DNS就可以与外网进行邮件收发,不过很大程度上会给别的服务器当做垃圾邮件处理,最好还是用在自己的局域网内做内部邮件使用。
26 Struts技术
Struts是一个基于J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的,是开发Web应用程序的开放源码框架。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大地节省了时间。
本系统选用Struts作为MVC的控制器,因为它足够成熟,用户群广泛。虽然它也有缺点,但完全利用别的软件弥补,比如利用Sitemesh代替Titles等。WebWork很优秀,但起步晚,用户群太小;JSF和Tapestry是重量级的MVC架构。通过这个两个方面的对比即可得出Struts的两大优点,即用户群大且轻量级。
27 JSP页面技术
JSP产生于Servlet之后,主要是为了解决Servlet中输出HTML代码效率低的问题而产生的。JSP技术比较简单,类似于ASP、PHP这些脚本语言。JSP的技术主要是由以下两个部分组成:
JSP的基本语法:两个注释、3个脚本元素、8个动作指令。
JSP的九大内置对象:request请求对象、response响应对象、pageContext页面上下文对象、session会话对象、application应用程序对象、out输出对象、config配置对象、page页面对象和exception例外对象。
第三章 系统分析
31 需求分析
311 引言
软件需求分析的编制是为了使用户和软件开发者双方对该软件的初始化规定有一个共同的理解,使之成为整个开发工作的基础。
312 任务概述
Web版或局域网系统,应用范围为政府机关大中小企业单位。相关人员对计算机操作和业务了解应有一定的基础。
313 需求规定
A.对性能的规定:软件支持的终端数根据数据库支持的用户数来确定;软件支持的并行操作的用户应在100以上。
B.对性能的规定:速度要快,对于小数据量的数据记录要在短时间内实现各种操作和转换传送;当业务需求发生变化时,该软件应能对这些变化具有良好的适应能力,保持代码与表数据的一致性。而且一定的环境或软件或操作方式不发生变化。
C.输入输出要求:对输入输出的数据必须给与相应的格式类型、数值范围及精度说明。
D.其他专门要求:用户为企事业涉及到公司机密以及财务,对数据的保密性、安全性尤其重视,同时对软件使用方便要求,对可维护性、可补充性、易读性、可靠性、运行环境可转换性等都有比较高的要求。
32 系统分析
321 编制流程
后台功能图如下所示:
前台功能图如下所示:
322用户身份验证模块
本系统功能的开发与设计,是完全针对公司内部进行办公管理以及为各部门员工提供便捷的电子化交互平台搭建的。用户身份验证模块是公司办公自动化管理系统重要组成部分之一,它主要功能是在系统用户进入系统时的身份验证以及在不同页面浏览时的身份验证,以防止公司重要资料的泄露。
323我的办公桌模块
此模块包含了部门管理、电子邮件、个人资料管理3个子模块,主要是用于日常的办公需要,所有的用户都拥有此模块
部门管理:主要对门门的增删查改
电子邮件:此部分主要用于内部邮件的收发,用户可以在与外网无法连接的情况下进行收发带附件的邮件,目前对于附件没有什么要求(对邮件进行增删查)
个人资料管理:用于修改自己的个人资料(对用户进行增删查改)
324系统管理模块
在本系统中,管理员的权限是最大的,这也是考虑到了本系统的安全性而设计的,防止公司机密外泄,本模块包含了登陆身份验证,系统管理员的管理。
管理员:管理本系统的管理员
33 数据结构分析
331 逻辑结构
本系统所使用的每个数据结构的名称、标识符以及它们之间每个数据项、记录、文卷和系的标识、定义、长度及它们之间的层次或表格的相互关系要详尽体现。
332 物理结构
本系统内所使用的每个数据结构中的每个数据项的存储要求、访问方法、存取单位、存取物理关系(索引,设备,存储区域)、设计考虑和保密条件。
333 出错补救措施
故障出现后可采取变通措施,包括:
(1)后备技术,当原始系统数据万一丢失时,可以使用系统备份数据进行恢复;
(2) 降效技术,当丢失的数据不是很多时,可采用手工操作重新录入数据;
(3) 当数据库由于不正常关机或停电等不可预知的原因产生错误时,求助于Oracle公司工程师,公司不是Oracle数据库产品的提供商,不提供类似的相应服务;
(4) 由Oracle公司或者相关的工程师优化数据库;
(5) 优化网络配置。
第四章 数据库设计
数据库设计是项目开发和系统设计中非常重要的一个环节,在这里要特别强调数据库设计的重要性,是因为数据库设计就像建设高楼大厦的根基一样,如果设计不好,在后来的系统维护、变更和功能扩充时,甚至在系统开发过程中都会引起比较大的问题。
41 表格图
411 我的办公桌
(1)管理员表(tb_admin)
字段 类型 主键 外键 是否可为空 描述
id int 是 不可 自增
name varchar 不可 账号
pwd varchar 可 密码
useFlag bit 可
(2)部门表(tb_department)
字段 类型 主键 外键 是否可为空 描述
id int 是 不可 自增
memo varchar 可 备忘录
name varchar 不可 部门名称
useFlag bit 可
(3)传阅表(tb_handround)
字段 类型 主键 外键 是否可为空 描述
id int 是 不可 自增
content longtext 可 内容
creatorIP varchar 可
sendTime datetime 可 时间
title longtext 不可 标题
useFlag bit 可
user_id int 不可 用户Id
(4)传阅附件表(tb_handround_attachment)
字段 类型 主键 外键 是否可为空 描述
id int 是 不可 自增
attachmentName longtext 可 附件名
attachmentRealName longtext 可 真附件名
attachmentYear varchar 可
handround_id Int 可 传阅ID
(5)传阅状态表(tb_handround_state)
字段 类型 主键 外键 是否可为空 描述
id int 是 不可 自增
comfirmDate datetime 可 确认时间
leaveWord longtext 可
sendTime datetime 可 传阅时间
stateFlag Int 可
handround_id Int 可 传阅ID
user_id int 可 用户ID
(6)用户表(tb_userinfo)
字段 类型 主键 外键 是否可为空 描述
id int 是 不可 自增
name varchar 不可 用户名
position varchar 可 位置
pwd varchar 不可 传阅时间
realName varchar 不可 真实姓名
useFlag Bit 可 传阅ID
department_id int 可 用户ID
第五章 系统实现过程
51 开发平台
服务器:Weblogic 80
数据库:MySQL51
平台技术:Jquery+Struts+Spring+JPA
操作系统:Windows XP
52 系统框架
在src目录下主要是各个层的包,是一些java类,在WebRoot目录下是一些实现页面的JSP文件,同时在其里面的WEB-INF包里面有struts以及spring的配制文件
53 系统实现
531 我的办公桌模块
主要是用来进行日常办公的需要,收发邮件,这一部分是整个办公系统必须的功能。
用户在成功登录到页面后,单击"我的办公桌"则可列出:部门资料、电子邮件、个人资料、三个功能块,每块均通过超级链接打开,如下图:
部门资料:包括公司的所有部门
电子邮件:主要是用于系统内部的邮件收发,支持附件的上传下载,利用James服务器以及事先分配好的内部邮箱名进行收发邮件,如下图:
个人资料:此块主要用于用户修改自己的密码
第六章 系统的测试与运行
61 系统测试
611 配置测试环境
(1)安装JDK和bea,weblogic;
(2)运行整个项目;
(3)启动weblogic,在登录http://localhost:80/OA/之后,需要启动Apatche James服务器来管理邮件接收
(4)发布该系统通过Web Application Modules实现
(5)发布成功后即可进入登录页面
62 测试结果
测试结果如下各界面所示:
(1)登录页面
(2)主页面
结论
紧张愉快的毕业设计结束了,我通过努力实现了一个结合了计算机和办公自动化理论并体现了时代潮流的系统。
本系统只提供了一些基本的功能,还不能提供办公自动化需求的完全信息,还需要进一步地考查调研。所有可能实现的功能都将会在今后的工作中继续分析、设计、逐步实现,力求使本系统更加完善。
在开发过程中,我本着将所学的理论知识应用于实践的思想,开发出高质量系统的目的,进行了详细的调研,细致耐心的开发与设计,以刻苦钻研,实事求是的态度开发出本系统。最重要的是通过开发与设计,锻炼了我们分析问题以及进行合理规划与分析设计的能力,同时对开发工具的使用能力也有大幅度提高。我们将所学的理论知识结合到了实际的应用中去,实际的动手能力也有明显的提升。
虽然办公自动化系统仍有许多待解决的问题和待完善的地方,但相信通过我们的不断努力、继续学习,必定会有更加完美的成果跟大家见面。这次开发过程中所学到的所有知识,将成为我今后学习工作当中的坚实基础。希望以后还会有这种锻炼自己的实践机会。
以上是一篇范文,供你参考。希望可以帮到你。
Linux因为开源、安全性、稳定性,应用越来越广泛,很多企业选择使用的Linux作为服务器。
不管是中国还是美国,政府或者军方都是拉动软件产业最巨大的力量之一。根据国务院发展研究中心计算,全国电子政务建设的市场规模大约在1800亿元到2000亿元之间,80%的政府部门要实现办公信息化,这意味着全国3000多万名公务员中将有60%重新配置PC,仅PC市场就超过1000亿元。按硬件和软件之间4∶1配比来计算,软件市场容量最保守估计也将达到300亿元。
而实际上,Linux的隐性使用更是难以测算。许多中小企业直接用Linux搭建网站服务器、邮件服务器甚至协同工作的平台,不需要高昂的硬件投资,也不涉及版权的纠纷。
Linux并不仅仅是个单纯的操作系统。它周围围绕着数量庞大的开源软件。比如搭建网站服务器的Apache、搭建邮件服务器的Sendmail、免费而高效率的数据库MySQL,这些软件组成了一个庞大的Linux生态圈,足以支持一个基本的企业IT投资所需要达到的效用。
而这些系统的源代码都是开放的。这意味着企业和国家可以为信息系统的长远利益打下基础,而不是在一个黑箱里打转。而Linux又是可以裁剪或者扩充的,从最高端的集群,到最精细的嵌入式产品,Linux都游刃有余。
摩托罗拉刚发布了它的彩信A760,这是它首款集Linux操作系统和无线Java技术于一身的智能手机。A760在手写识别和文字输入方面达到了一个全新的境界,内置软件能够支持服务商提供的42种服务内容,更重要的是,它具有应用开发上的无限空间。
各种嵌入式产品市场,包括汽车电子、数字电视机顶盒、工业机器人、数字家庭,Linux都成为最具活力和可伸缩性的软件平台的基础。
在服务器市场,Linux已经挺起了腰杆,进入了前三甲。而且势头越来越猛。
旧时的丑小鸭,现在已经是白天鹅。Linux在中国已由“声”转换为“势”,一场规模庞大的“声”“势”运动已全面铺开。
Apache服务器的设置文件位于/usr/local/apache/conf/目录下,传统上使用三个配置文件httpdconf,accessconf和srmconf,来配置Apache服务器的行为。
httpdconf提供了最基本的服务器配置,是对守护程序httpd如何运行的技术描述;srmconf是服务器的资源映射文件,告诉服务器各种文件的
MIME类型,以及如何支持这些文件;accessconf用于配置服务器的访问权限,控制不同用户和计算机的访问限制;这三个配置文件控制着服务
器的各个方面的特性,因此为了正常运行服务器便需要设置好这三个文件。
除了这三个设置文件之外,Apache还使用mimetypes文件用于标识不同文件
对应的MIME类型, magic文件设置不同MIME类型文件的一些特殊标识,使得Apache 服务器从文档后缀不能判断出文件的MIME 类型时,能通过
文件内容中的这些特殊标记来判断文档的MIME类型。
bash-202$ ls -l /usr/local/apache/conf
total 100
-rw-r--r-- 1 root wheel 348 Apr 16 16:01 accessconf
-rw-r--r-- 1 root wheel 348 Feb 13 13:33 accessconfdefault
-rw-r--r-- 1 root wheel 30331 May 26 08:55 httpdconf
-rw-r--r-- 1 root wheel 29953 Feb 13 13:33 httpdconfdefault
-rw-r--r-- 1 root wheel 12441 Apr 19 15:42 magic
-rw-r--r-- 1 root wheel 12441 Feb 13 13:33 magicdefault
-rw-r--r-- 1 root wheel 7334 Feb 13 13:33 mimetypes
-rw-r--r-- 1 root wheel 383 May 13 17:01 srmconf
-rw-r--r-- 1 root wheel 357 Feb 13 13:33 srmconfdefault
事实上当前版本的Apache将原来httpdconf、srmconf与accessconf中的所有配置参数均放在了一个配置文件httpdconf中,只是为了与
以前的版本兼容的原因(使用这三个设置文件的方式来源于NCSA-httpd),才使用三个配置文件。而提供的accessconf和srmconf文件中没有
具体的设置。
由于在新版本的Apache中,所有的设置都被放在了httpdconf中,因此只需要调整这个文件中的设置。以下使用缺省提供的httpdconf为
例,解释Apache服务器的各个设置选项。然而不必因为它提供设置的参数太多而烦恼,基本上这些参数都很明确,也可以不加改动运行Apache
服务器。但如果需要调整Apache服务器的性能,以及增加对某种特性的支持,就需要了解这些设置参数的含义。
关于Apache服务器的性能,在Internet上存在很大的争议,基本上使用Apache的使用者几乎都不怀疑它的优秀性能,Apache也支撑了很多
著名的高负载的网站,但是在商业机构的评测中,Apache往往得分不高。很多人指出,在这些评测中,商业Web服务器及其操作系统往往由其专
业公司的工程师进行过性能调整,而Free 的操作系统和Web服务器往往就使用其缺省配置或仅仅作很小的更改。需要指出的是,除了操作系统
的性能调整之外,Apache 服务器本身的缺省配置绝不是最优化和最高效的,而是要适应几乎所有种类操作系统、所有种类硬件下的设置,多平
台的软件不可能为特定平台和特定硬件提供最优化的缺省配置。因此要使用Apache的时候,性能调整是必不可少的。
在商业评测中忽略了的另一个事实是,评测时往往对不同种类的功能进行比较,例如使用Apache的标准CGI 的性能与ISAPI,NSAPI等服务
器端API比较,事实上Apache服务器与此可以比较的功能为modperl ,FastCGI,与ASP类似的功能为PHP等等,只不过由于Apache的开放模式,
这些功能是由独立的开发组,作为独立的模块来实现的。但是在评测中,测试人员没有加入相应的模块评测其性能。
HTTP守护进程的运行参数
httpdconf中首先定义了一些httpd守护进程运行时需要的参数,来决定其运行方式和运行环境。
ServerType standalone
ServerType定义服务器的启动方式,缺省值为独立方式standalone,httpd服务器将由其本身启动,并驻留在主机中监视连接请求。在
Linux下将在启动文件 /etc/rcd/rclocal/initd/apache中自动启动Web服务器,这种方式是推荐设置。
启动Apache服务器的另一种方式是inet方式,使用超级服务器inetd监视连接请求并启动服务器。当需要使用inetd启动方式时,便需要更
改为这个设置,并屏蔽/etc/rcd/rclocal/initd/apache文件,以及更改/etc/inetdconf并重起inetd,那么Apache就能从inetd中启动了。
两种方式的区别是独立方式是由服务器自身管理自己的启动进程,这样在启动时能立即启动服务器的多个副本,每个副本都驻留在内存中
,一有连接请求不需要生成子进程就可以立即进行处理,对于客户浏览器的请求反应更快,性能较高。而 inetd方式要由inetd发现有连接请求
后才去启动http服务器,由于inetd 要监听太多的端口,因此反应较慢、效率较低,但节约了没有连接请求时Web服务器占用的资源。因此
inetd方式只用于偶尔被访问并且不要求访问速度的服务器上。事实上inetd方式不适合http的突发和多连接的特性,因为一个页面可能包含多
个图象,而每个图象都会引起一个连接请求,即使虽然访问人数造成教少,但瞬间的连接请求并不少,这就受到inetd性能的限制,甚至会影响
由inetd启动的其他服务器程序。
ServerRoot "/usr/local"
ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将
进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerRoot定义的路径之下。
由于httpd会经常进行并发的文件操作,就需要使用加锁的方式来保证文件操作不冲突,由于NFS文件系统在文件加锁方面能力有限,因此
这个目录应该是本地磁盘文件系统,而不应该使用NFS文件系统。
#LockFile /var/run/httpdlock
LockFile参数指定了httpd守护进程的加锁文件,一般不需要设置这个参数, Apache服务器将自动在ServerRoot下面的路径中进行操作。
但如果ServerRoot为NFS文件系统,便需要使用这个参数指定本地文件系统中的路径。
PidFile /var/run/httpdpid
PidFile指定的文件将记录httpd守护进程的进程号,由于httpd能自动复制其自身,因此系统中有多个httpd进程,但只有一个进程为最初
启动的进程,它为其他进程的父进程,对这个进程发送信号将影响所有的httpd进程。PidFILE定义的文件中就记录httpd父进程的进程号。
ScoreBoardFile /var/run/httpdscoreboard
httpd使用ScoreBoardFile来维护进程的内部数据,因此通常不需要改变这个参数,除非管理员想在一台计算机上运行几个Apache服务器,
这时每个Apache服务器都需要独立的设置文件httpdconf,并使用不同的ScoreBoardFile。
#ResourceConfig conf/srmconf
#AccessConfig conf/accessconf
这两个参数ResourceConfig和AccessConfig,就用于和使用 srmconf 和 accessconf 设置文件的老版本Apache兼容。如果没有兼容的需
要,可以将对应的设置文件指定为/dev/null,这将表示不存在其他设置文件,而仅使用httpdconf 一个文件来保存所有的设置选项。
Timeout 300
Timeout定义客户程序和服务器连接的超时间隔,超过这个时间间隔(秒)后服务器将断开与客户机的连接。
KeepAlive On
在HTTP 10中,一次连接只能作传输一次HTTP请求,而KeepAlive参数用于支持HTTP 11版本的一次连接、多次传输功能,这样就可以在一
次连接中传递多个HTTP请求。虽然只有较新的浏览器才支持这个功能,但还是打开使用这个选项。
MaxKeepAliveRequests 100
MaxKeepAliveRequests为一次连接可以进行的HTTP请求的最大请求次数。将
其值设为0将支持在一次连接内进行无限次的传输请求。事实上没有客户程序在一次连接中请求太多的页面,通常达不到这个上限就完成连接了
。
KeepAliveTimeout 15
KeepAliveTimeout测试一次连接中的多次请求传输之间的时间,如果服务器
已经完成了一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了
这个参数设置的值之后,服务器就断开连接
-----------------------------------------------------------------------------------------
MinSpareServers 5
MaxSpareServers 10
在使用子进程处理HTTP请求的Web服务器上,由于要首先生成子进程才能处理客户的请求,因此反应时间就有一点延迟。但是,Apache服务
器使用了一个特殊技术来摆脱这个问题,这就是预先生成多个空余的子进程驻留在系统中,一旦有请求出现,就立即使用这些空余的子进程进
行处理,这样就不存在生成子进程造成的延迟了。在运行中随着客户请求的增多,启动的子进程会随之增多,但这些服务器副本在处理完一次
HTTP请求之后并不立即退出,而是停留在计算机中等待下次请求。但是空余的子进程副本不能光增加不减少,太多的空余子进程没有处理任务
,也占用服务器的处理能力,因此也要限制空余副本的数量,使其保持一个合适的数量,使得既能及时回应客户请求,又能减少不必要的进程
数量。
因此就可以使用参数MinSpareServers来设置最少的空余子进程数量, 以及使用参数MaxSpareServers 来限制最多的空闲子进程数量,多
余的服务器进程副本就会退出。根据服务器的实际情况来进行设置,如果服务器性能较高,并且也被频繁访问,就应该增大这两个参数的设置
。对于高负载的专业网站,这两个值应该大致相同,并且等同于系统支持的最多服务器副本数量,也减少不必要的副本退出。
StartServers 5
StartServers参数就是用来设置httpd启动时启动的子进程副本数量,这个参数与上面定义的MinSpareServers和MaxSpareServers参数相关
,都是用于启动空闲子进程以提高服务器的反应速度的。这个参数应该设置为前两个值之间的一个数值,小于MinSpareServers和大于MaxS
pareServers都没有意义。
MaxClients 150
在另一方面,服务器的能力毕竟是有限的,不可能同时处理无限多的连接请求,因此参数Maxclient s就用于规定服务器支持的最多并发访
问的客户数,如果这个值设置得过大,系统在繁忙时不得不在过多的进程之间进行切换来为太多的客户进行服务,这样对每个客户的反应就会
减慢,并降低了整体的效率。如果这个值设置的较小,那么系统繁忙时就会拒绝一些客户的连接请求。当服务器性能较高时,就可以适当增加
这个值的设置。对于专业网站,应该使用提高服务器效率的策略,因此这个参数不能超过硬件本身的限制,如果频繁出现拒绝访问现象,就说
明需要升级服务器硬件了。对于非专业网站,不太在意对客户浏览器的反应速度,或者认为反应速度较慢也比拒绝连接好,就也可以略微超过
硬件条件来设置这个参数。
这个参数限制了MinSpareServers和MaxSpareServers的设置,它们不应该大于这个参数的设置。
MaxRequestsPerChild 30
使用子进程的方式提供服务的Web服务,常用的方式是一个子进程为一次连接服务,这样造成的问题就是每次连接都需要生成、退出子进程
的系统操作,使得这些额外的处理过程占据了计算机的大量处理能力。因此最好的方式是一个子进程可以为多次连接请求服务,这样就不需要
这些生成、退出进程的系统消耗,Apache就采用了这样的方式,一次连接结束后,子进程并不退出,而是停留在系统中等待下一次服务请求,
这样就极大的提高了性能。
但由于在处理过程中子进程要不断的申请和释放内存,次数多了就会造成一些内存垃圾,就会影响系统的稳定性,并且影响系统资源的有
效利用。因此在一个副本处理过一定次数的请求之后,就可以让这个子进程副本退出,再从原始的httpd进程中重新复制一个干净的副本,这样
就能提高系统的稳定性。这样,每个子进程处理服务请求次数由MaxRequestPerChild定义。 缺省的设置值为30,
这个值对于具备高稳定性特点的Linux系统来讲是过于保守的设置,可以设置为1000甚至更高,设置为0支持每个副本进行无限次的服务处理。
#Listen 3000
#Listen 12345678:80
#BindAddress
Listen参数可以指定服务器除了监视标准的80端口之外,还监视其他端口的HTTP请求。由于FreeBSD系统可以同时拥有多个IP地址,因此也
可以指定服务器只听取对某个BindAddress< /B>的IP地址的HTTP请求。如果没有配置这一项,则服务器会回应对所有IP的请求。
即使使用了BindAddress参数,使得服务器只回应对一个IP地址的请求,但是通过使用扩展的Listen参数,仍然可以让HTTP守护进程回应对
其他IP地址的请求。此时Listen参数的用法与上面的第二个例子相同。这种比较复杂的用法主要用于设置虚拟主机。此后可以用VirtualHost参
数定义对不同IP的虚拟主机,然而这种用法是较早的HTTP 10标准中设置虚拟主机的方法,每针对一个虚拟主机就需要一个IP地址,实际上用
处并不大。在HTTP 11中,增加了对单IP地址多域名的虚拟主机的支持,使得虚拟主机的设置具备更大的意义。
LoadModule mime_magic_module libexec/apache/mod_mime_magicso
LoadModule info_module libexec/apache/mod_infoso
LoadModule speling_module libexec/apache/mod_spelingso
LoadModule proxy_module libexec/apache/libproxyso
LoadModule rewrite_module libexec/apache/mod_rewriteso
LoadModule anon_auth_module libexec/apache/mod_auth_anonso
LoadModule db_auth_module libexec/apache/mod_auth_dbso
LoadModule digest_module libexec/apache/mod_digestso
LoadModule cern_meta_module libexec/apache/mod_cern_metaso
LoadModule expires_module libexec/apache/mod_expiresso
LoadModule headers_module libexec/apache/mod_headersso
LoadModule usertrack_module libexec/apache/mod_usertrackso
LoadModule unique_id_module libexec/apache/mod_unique_idso
ClearModuleList
AddModule mod_envc
AddModule mod_log_configc
AddModule mod_mime_magicc
AddModule mod_mimec
AddModule mod_negotiationc
AddModule mod_statusc
AddModule mod_infoc
AddModule mod_includec
AddModule mod_autoindexc
AddModule mod_dirc
AddModule mod_cgic
AddModule mod_asisc
AddModule mod_imapc
AddModule mod_actionsc
AddModule mod_spelingc
AddModule mod_userdirc
AddModule mod_proxyc
AddModule mod_aliasc
AddModule mod_rewritec
AddModule mod_accessc
AddModule mod_authc
AddModule mod_auth_anonc
AddModule mod_auth_dbc
AddModule mod_digestc
AddModule mod_cern_metac
AddModule mod_expiresc
AddModule mod_headersc
AddModule mod_usertrackc
AddModule mod_unique_idc
AddModule mod_soc
AddModule mod_setenvifc
Apache服务器的一个重要特性就是其模块化的结构,这不但表现为其能在编
译时能通过新的模块加入新的功能,还表现为其模块可以动态加载入http服务程
序中,而不必载入不需要的模块。使用Apache的动态加载模块只需要设置好Load Module和AddModule参数就可以了,这种特性就是Apache的
DSO(Dynamic Shared Object)特性,然而要想充分使用DSO特性仍然不是一个简单的事情,不适当的改动这里的设置就可能造成服务器不能正
常启动。因此如果不是要增加或减少服务器提供的功能,就不要改动这里的设置。
上面这些列表就显示了Linux下的缺省Apache服务器支持的模块,事实上很
多模块是没有必要的,不必要模块不会被载入内存。模块可以静态连接到pache 服务器内部,也可以这样动态加载,将Apache的特性都编译成
动态可加载模块是该Port的做法,而不是Apache的缺省做法,这样就以牺牲很小的性能的同时,带来极大的灵活性。
因而动态可加载的能力还是对性能有轻微的影响,因此可以重新编译Apache,将自己所需要的功能编译进Apache 服务器内部,可以让系统
显得更为干净,效率也有轻微的提高。通常仅仅为了这一个目的就重新编译Apache是没有必要的,如果需要增加其他特性而重新编译Apache,
不妨在增加其他模块的同时将所有的模块都静态连接入Apache 服务器。有的使用者更喜欢动态加载模块,那么也不妨全部都使用动态加载模块
。
这些模块都被放置到/usr/local/apache/libexec/目录下, 每个模块对应Apache服务器的一个特性。详细解释每个模块的功能需要相当多
的篇幅,其中比较重要的特性将在后面相应的地方中进行解释,而具体每个模块的功能及用法就需要查看Apache的文档。
#ExtendedStatus On
Apache服务器可以通过特殊的HTTP请求,来报告自身的运行状态,打开这个ExtendedStatus 参数可以让服务器报告更全面的运行状态信息
。
-----------------------------------------------------------------------------------------------------------------
主服务器设置
Apache服务器需要各种设置,以定义自己使用各种参数以提供Web服务。对于使用虚拟主机的情况,除了在虚拟主机的定义项中覆盖的设置
之外(有的设置必须重新定义),这里的设置也是虚拟主机的缺省设置。
Port 80
Port定义了Standalone模式下httpd守护进程使用的端口,标准端口是80。这个选项只对于以独立方式启动的服务器才有效,对于以inetd
方式启动的服务器则在inetdconf中定义使用哪个端口。
在Unix下使用80端口需要root权限,一些管理员为了安全的原因,认为 httpd 服务器不可能没有安全漏洞,因而更愿意使用普通用户的权
限来启动服务器,这样就不能使用80端口及其他小于1024的端口,而必须使用大于 1024的端口来启动httpd,一般情况下8000或8080也是常用
的端口。而Apache httpd服务器本身可以在以root权限打开80端口后再改变为普通用户身份进行运行,这样就减少了危险性,因而就不需要考
虑这个安全问题。但是如果普通用户也想安装配置自己的WWW服务器,那么就不得不使用大于1024的端口。
User nobody
Group nogroup
User和Group配置是Apache的安全保证,Apache在打开端口之后,就将其本身设置为这两个选项设置的用户和组权限进行运行,这样就降低
了服务器的危险性。这个选项也只用于 Standalone模式,inetd模式在inetdconf中指定运行Apache的用户。由于服务器必须执行改变身份的
setuid()操作,因此初始进程应该具备root权限,如果是使用非root用户来启动Aapche,这个配置就不会发挥作用。
缺省设置为nobody和nogroup,这个用户和组在系统中不拥有文件,保证了服务器本身和由它启动的CGI 进程没有权限更改文件系统。在某
些情况下,例如为了运行CGI与Unix交互,也需要让服务器来访问服务器上的文件,如果仍然使用nobody和nogroup,那么系统中将会出现属于
nobody的文件,这对于系统安全是不利的,因为其他程序也会以nobody和nogroup的权限执行某些操作,就有可能访问这些nobody拥有的文件,
造成安全问题。一般情况下要为Web服务设定一个特定的用户和组,同时在这里更改用户和组设置。
ServerAdmin you@youraddress
配置文件中应该改变的也许只有ServerAdmin, 这一项用于配置WWW服务器的管理员的email地址,这将在HTTP服务出现错误的条件下返回
给浏览器,以便让Web使用者和管理员联系,报告错误。习惯上使用服务器上的webmaster作为WWW服务器的管理员,通过邮件服务器的别名机制
,将发送到webmaster 的电子邮件发送给真正的Web管理员。
#ServerName newhostname
缺省情况下,并不需要指定这个ServerName参数,服务器将自动通过名字解析过程来获得自己的名字,但如果服务器的名字解析有问题(
通常为反向解析不正确),或者没有正式的DNS名字,也可以在这里指定IP地址。当ServerName设置不正确的时候,服务器不能正常启动。
通常一个Web服务器可以具有多个名字,客户浏览器可以使用所有这些名字或IP地址来访问这台服务器,但在没有定义虚拟主机的情况下,
服务器总是以自己的正式名字回应浏览器。ServerName就定义了Web服务器自己承认的正式名字,例如一台服务器名字(在DNS中定义了A类型)
为exmapleorgcn,同时为了方便记忆还定义了一个别名(CNAME记录)为wwwexmapleorgcn,那么Apache自动解析得到的名字就为
exampleorgcn,这样不管客户浏览器使用哪个名字发送请求,服务器总是告诉客户程序自己为 exampleorgcn。虽然这一般并不会造成什么
问题,但是考虑到某一天服务器可能迁移到其他计算机上,而只想通过更改DNS中的www别名配置就完成迁移任务,所以不想让客户在其书签中
使用 Linux 记录下这个服务器的地址,就必须使用ServerName来重新指定服务器的正式名字。
DocumentRoot "/www/"
DocumentRoot定义这个服务器对外发布的超文本文档存放的路径,客户程序请求的URL就被映射为这个目录下的网页文件。这个目录下的子
目录,以及使用符号连接指出的文件和目录都能被浏览器访问,只是要在URL上使用同样的相对目录名。
注意,符号连接虽然逻辑上位于根文档目录之下,但实际上可以位于计算机上的任意目录中,因此可以使客户程序能访问那些根文档目录
之外的目录,这在增加了灵活性的同时但减少了安全性。Apache在目录的访问控制中提供了FollowSymLinks选项来打开或关闭支持符号连接的
特性。
---------------------------------------------------------------------------------------------------------------------------
Options FollowSymLinks
AllowOverride None
Apache服务器可以针对目录进行文档的访问控制,然而访问控制可以通过两
种方式来实现,一个是在设置文件 httpdconf(或accessconf)中针对每个目
录进行设置,另一个方法是在每个目录下设置访问控制文件,通常访问控制文件
名字为htaccess。虽然使用这两个方式都能用于控制浏览器的访问,然而使用配置文件的方法要求每次改动后重新启动httpd守护进程,比较
不灵活,因此主要用于配置服务器系统的整体安全控制策略,而使用每个目录下的htaccess文件设置具体目录的访问控制更为灵活方便。
Directory语句就是用来定义目录的访问限制的,这里可以看出它的标准语法,为一个目录定义访问限制。上例的这个设置是针对系统的根
目录进行的,设置了允许符号连接的选项FollowSymLinks ,以及使用AllowOverride None表示不允许这个目录下的访问控制文件来改变这里进
行的配置,这也意味着不用查看这个目录下的相应访问控制文件。
由于Apache对一个目录的访问控制设置是能够被下一级目录继承的,因此对根目录的设置将影响到它的下级目录。注意由于AllowOverride
None的设置,使得Apache服务器不需要查看根目录下的访问控制文件,也不需要查看以下各级目录下的访问控制文件,直至httpdconf(或
accessconf )中为某个目录指定了允许Alloworride,即允许查看访问控制文件。由于Apache对目录访问控制是采用的继承方式,如果从根目
录就允许查看访问控制文件,那么Apache就必须一级一级的查看访问控制文件,对系统性能会造成影响。而缺省关闭了根目录的这个特性,就
使得Apache从httpdconf中具体指定的目录向下搜寻,减少了搜寻的级数,增加了系统性能。因此对于系统根目录设置AllowOverride None不
但对于系统安全有帮助,也有益于系统性能。
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
这里定义的是系统对外发布文档的目录的访问设置,设置不同的 AllowOverride选项,以定义配置文件中的目录设置和用户目录下的安全
控制文件的关系,而Options选项用于定义该目录的特性。
配置文件和每个目录下的访问控制文件都可以设置访问限制,设置文件是由管理员设置的,而每个目录下的访问控制文件是由目录的属主
设置的,因此管理员可以规定目录的属主是否能覆盖系统在设置文件中的设置,这就需要使用AllowOverride参数进行设置,通常可以设置的值
为:AllowOverride的设置 对每个目录访问控制文件作用的影响
All 缺省值,使访问控制文件可以覆盖系统配置
None 服务器忽略访问控制文件的设置
Options 允许访问控制文件中可以使用Options参数定义目录的选项
FileInfo 允许访问控制文件中可以使用AddType等参数设置
AuthConfig 允许访问控制文件使用AuthName,AuthType等针对每个用户的认证机制,这使目录属主能用口令和用户名来保护目录 Limit 允许
0条评论