当前位置:文档之家› apache服务器出现内存溢出的解决方法

apache服务器出现内存溢出的解决方法

apache服务器出现内存溢出的解决方法
apache服务器出现内存溢出的解决方法

apache服务器出现内存溢出的解决方法

2011-10-08 14:26

Tomcat内存溢出的原因

在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存溢出是不一样的,当然处理方式也不一样。

这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况:

1.OutOfMemoryError: Java heap space

2.OutOfMemoryError: PermGen space

3.OutOfMemoryError: unable to create new native thread.

Tomcat内存溢出解决方案

对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。(-Xms -Xmx -XX:PermSize -XX:MaxPermSize)

最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。

第一种:是堆溢出。

原因分析:

JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。

在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。

Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。

没有内存泄露的情况下,调整-Xms -Xmx参数可以解决。

-Xms:初始堆大小

-Xmx:最大堆大小

但堆的大小受下面三方面影响:

1.相关操作系统的数据模型(32-bt还是64-bit)限制;(32位系统下,一般限制在1.5G~2G;我在2003 server 系统下(物理内存:4G和6G,jdk:1.6)测试 1612M,64位操作系统对内存无限制。)

2.系统的可用虚拟内存限制;

3.系统的可用物理内存限制。

堆的大小可以使用 java -Xmx***M version 命令来测试。支持的话会出现jdk的版本号,不支持会报错。

-Xms -Xmx一般配置成一样比较好比如set JAVA_OPTS= -Xms1024m -Xmx1024m其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可

进行设置

实例,以下给出1G内存环境下java jvm 的参数设置参考:

JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m

-XX:MaxPermSize=128m -Djava.awt.headless=true "

JAVA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:

NewSize=192m -XX:MaxNewSize=384m"

CATALINA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m

-XX:NewSize=192m -XX:MaxNewSize=384m"服务器为1G内存:JAVA_OPTS="-server -Xms800m -Xmx800m

-XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

服务器为64位、2G内存: JAVA_OPTS='-server -Xms1024m -Xmx1536m -XX:PermSize=128M

-XX:MaxNewSize=256m -XX:MaxPermSize=256m'-------------------解决方案1:

-----------------------------

前提:是执行startup.bat启动tomcat的方式

Linux服务器:

在/usr/local/apache-tomcat-5.5.23/bin 目录下的catalina.sh

添加:JAVA_OPTS='-Xms512m -Xmx1024m'

或者 JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"

或者 CATALINA_OPTS="-server -Xms256m -Xmx300m"

Windows服务器:

在catalina.bat最前面加入

set JAVA_OPTS=-Xms128m -Xmx350m

或者set CATALINA_OPTS=-Xmx300M -Xms256M

(区别是一个直接设置jvm内存,另一个设置tomcat内存,CATALINA_OPTS似乎可以与JAVA_OPTS不加区别的使用)

基本参数说明

-client,-server

这两个参数用于设置虚拟机使用何种运行模式,一定要作为第一个参数,client模式启动比较快,但运行时性能和内存管理效率不如server模式,通常用于客户端应用程序。相反,server模式启动比client慢,但可获得更高的运行性能。

在windows上,缺省的虚拟机类型为client模式,如果要使用server模式,就需要在启动虚拟机时加

-server参数,以获得更高性能,对服务器端应用,推荐采用server模式,尤其是多个CPU的系统。在Linux,Solaris上缺省采用server模式。

此外,在多cup下,建议用server模式-Xms

设置虚拟机可用内存堆的初始大小,缺省单位为字节,该大小为1024的整数倍并且要大于1MB,可用k(K)或m(M)为单位来设置较大的内存数。初始堆大小为2MB。加“m”说明是MB,否则就是KB了。

例如:-Xms6400K,-Xms256M

-Xmx

设置虚拟机的最大可用大小,缺省单位为字节。该值必须为1024整数倍,并且要大于2MB。可用k(K)或m(M)为单位来设置较大的内存数。缺省堆最大值为64MB。

例如:-Xmx81920K,-Xmx80M

当应用程序申请了大内存运行时虚拟机抛出https://www.doczj.com/doc/4d1398650.html,ng.OutOfMemoryError: Java heap space错误,就需要使用-Xmx设置较大的可用内存堆。

PermSize/MaxPermSize:定义Perm段的尺寸,即永久保存区域的大小,PermSize为JVM启动时初始化Perm 的内存大小;MaxPermSize为最大可占用的Perm内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。如果用startup.bat启动tomcat,OK设置生效.够成功的分配200M内存.

-------------------解决方案2:------------------------

前提:是执行startup.bat启动tomcat的方式

手动设置Heap size

Windows服务器:

修改TOMCAT_HOME/bin/catalina.bat,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:

Java代码

set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m

注:JAVA_OPTS是保留先前设置。

Linux服务器:

修改TOMCAT_HOME/bin/catalina.sh

在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:

JAVA_OPTS="$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m"注:$JAVA_OPTS是保留先前设置。

-------------------解决方案3:-----------------------------

前提:是执行windows的系统服务启动tomcat的方式

但是如果不是执行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,上面的设置就不生效了,

就是说set JAVA_OPTS=-Xms128m -Xmx350m 没起作用.上面分配200M内存就OOM了..

windows服务执行的是bin\tomcat.exe.他读取注册表中的值,而不是catalina.bat的设置.解决办法:

修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service

Manager\Tomcat5\Parameters\JavaOptions

原值为

-Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"

-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"

-Xrs

加入 -Xms300m -Xmx350m

重起tomcat服务,设置生效

-------------------解决方案4:-----------------------------

前提:是执行windows的系统服务启动tomcat的方式

在安装tomcat时若有勾选"NT Service(NT/2000/XP only)"

则安装完成后在安装目录的"bin"目录里会有一个tomcat.exe的档案

先把tomcat的服务停掉

在命令列模式下(运行里输入CMD)

将目录切换到tomcat的bin目录

用下面的命令把服务移除

tomcat -uninstall "Apache Tomcat 4.1"

接下来,写个批处理。

内容如下

set SERVICENAME=Apache Tomcat 4.1

set CATALINA_HOME=E:\Tomcat 4.1.24

set CLASSPATH=D:\j2sdk1.4.1_01\lib

set JAVACLASSPATH=%CLASSPATH%

set JAVACLASSPATH=%JAVACLASSPATH%;?TALINA_HOME%\bin\bootstrap.jar

set JAVACLASSPATH=%JAVACLASSPATH%;?TALINA_HOME%\common\lib\servlet.jar

set JAVACLASSPATH=%JAVACLASSPATH%;%JAVA_HOME%\lib\tools.jar

tomcat.exe -install "%SERVICENAME%" "%JAVA_HOME%\jre\bin\server\jvm.dll"

-Djava.class.path="%JAVACLASSPATH%" -Dcatalina.home="?TALINA_HOME%" -Xms512m -Xmx768m -start org.apache.catalina.startup.Bootstrap -params start -stop

org.apache.catalina.startup.Bootstrap -params stop -out "?TALINA_HOME%\logs\stdout.log" -err "?TALINA_HOME%\logs\stderr.log"

注意,从 tomcat.exe -install开始的是最后一行!不要手工回车换行把这一行分成了好几段。保存后在命令行下执行这个bat文件,注意执行的时候将“服务”窗口关闭。第二种:永久保存区域溢出

原因分析:

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM 存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。但目前的hibernate和spring项目中也很容易出现这样的问题。可能是由于这些框架会动态class,而且jvm的gc是不会清理PemGen space的,超过了jvm默认的大小(4M),导致内存溢出。

建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。

这一个一般是加大-XX:PermSize -XX:MaxPermSize 来解决问题。

-XX:PermSize 永久保存区域初始大小

-XX:PermSize 永久保存区域初始最大值

这一般结合第一条使用,比如 set JAVA_OPTS= -Xms1024m -Xmx1024m -XX:PermSize=128M -XX:PermSize=256M

有一点需要注意:java -Xmx***M version 命令来测试的最大堆内存是 -Xmx与 -XX:PermSize的和比如系统支持最大的jvm堆大小事1.5G,那 -Xmx1024m -XX:PermSize=768M 是无法运行的。

-----------------解决方案1:-------------------------

Linux服务器:

在catalina.sh的第一行增加:

JAVA_OPTS=

-Xms64m

-Xmx256m

-XX:PermSize=128M

-XX:MaxNewSize=256m

-XX:MaxPermSize=256m

或者

在“echo "Using CATALINA_BASE:$CATALINA_BASE"”上面加入以下行:

JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m

Windows服务器:

在catalina.bat的第一行增加:

set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

-----------------解决方案2:------------------------

修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在Java代码

“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:

set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m “echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:

set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512mcatalina.sh下为:Java代码

JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m" JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m" 第三种:无法创建新的线程。

这种现象比较少见,也比较奇怪,主要是和jvm与系统内存的比例有关。

这种怪事是因为JVM已经被系统分配了大量的内存(比如1.5G),并且它至少要占用可用内存的一半。有人发现,在线程个数很多的情况下,你分配给JVM的内存越多,那么,上述错误发生的可能性就越大。

原因分析

(从这个blog中了解到原因:):

每一个32位的进程最多可以使用2G的可用内存,因为另外2G被操作系统保留。这里假设使用1.5G 给JVM,那么还余下500M可用内存。这500M内存中的一部分必须用于系统dll的加载,那么真正剩下的也许只有400M,现在关键的地方出现了:当你使用Java创建一个线程,在JVM的内存里也会创建一个Thread 对象,但是同时也会在操作系统里创建一个真正的物理线程(参考JVM规范),操作系统会在余下的 400兆内存里创建这个物理线程,而不是在JVM的1500M的内存堆里创建。在jdk1.4里头,默认的栈大小是256KB,但是在jdk1.5里头,默认的栈大小为1M每线程,因此,在余下400M的可用内存里边我们最多也只能创建400个可用线程。

这样结论就出来了,要想创建更多的线程,你必须减少分配给JVM的最大内存。还有一种做法是让JVM 宿主在你的JNI代码里边。

给出一个有关能够创建线程的最大个数的估算公式:

(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads 对于jdk1.5而言,假设操作系统保留120M内存:

1.5GB JVM:(2GB-1.5Gb-120MB)/(1MB) = ~380 threads

1.0GB JVM:(2GB-1.0Gb-120MB)/(1MB) = ~880 threads

在2000/XP/2003的boot.ini里头有一个启动选项,好像是:/PAE /3G ,可以让用户进程最大内存扩充至3G,这时操作系统只能占用最多1G的虚存。那样应该可以让JVM创建更多的线程。

因此这种情况需要结合操作系统进行相关调整。

因此:我们需要结合不同情况对tomcat内存分配进行不同的诊断才能从根本上解决问题。

检测当前JVM内存使用情况:

System.out.println("JVM MAX MEMORY: " + Runtime.getRuntime().maxMemory()/1024/1024+"M"); System.out.println("JVM IS USING MEMORY:" + Runtime.getRuntime().totalMemory()/1024/1024+"M"); System.out.println("JVM IS FREE MEMORY:" + Runtime.getRuntime().freeMemory()/1024/1024+"M");这三个方法都是说JVM的内存使用情况而不是操作系统的内存;

maxMemory()这个方法返回的是java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存,以字节为单位,如果在运行java程序的时候,没有添加-Xmx参数,那么就是64兆,也就是说maxMemory()返回的大约是64*1024*1024字节,这是java虚拟机默认情况下能从操作系统那里挖到的最大的内存。如果添加了-Xmx参数,将以这个参数后面的值为准,例如java -cp ClassPath -Xmx512m ClassName,那么最大内存就是512*1024*0124字节。

totalMemory()这个方法返回的是java虚拟机现在已经从操作系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的所有内存。如果在运行java的时候没有添加-Xms参数,那么,在java 程序运行的过程的,内存总是慢慢的从操作系统那里挖的,基本上是用多少挖多少,直挖到maxMemory()为止,所以totalMemory()是慢慢增大的。如果用了-Xms参数,程序在启动的时候就会无条件的从操作系统中挖-Xms后面定义的内存数,然后在这些内存用的差不多的时候,再去挖。

freeMemory()是什么呢,刚才讲到如果在运行java的时候没有添加-Xms参数,那么,在java程序运行的过程的,内存总是慢慢的从操作系统那里挖的,基本上是用多少挖多少,但是java虚拟机100%的情况下是会稍微多挖一点的,这些挖过来而又没有用上的内存,实际上就是freeMemory(),所以freeMemory()的值一般情况下都是很小的,但是如果你在运行java程序的时候使用了-Xms,这个时候因为程序在启动的时候就会无条件的从操作系统中挖-Xms后面定义的内存数,这个时候,挖过来的内存可能大部分没用上,所以这个时候freeMemory()可能会有些

--------------------解决方案--------------------------

JVM堆大小的调整

Sun HotSpot 1.4.1使用分代收集器,它把堆分为三个主要的域:新域、旧域以及永久域。Jvm生成的所有新对象放在新域中。一旦对象经历了一定数量的垃圾收集循环后,便获得使用期并进入旧域。在永久域中jvm则存储class和method对象。就配置而言,永久域是一个独立域并且不认为是堆的一部分。

下面介绍如何控制这些域的大小。可使用-Xms和-Xmx 控制整个堆的原始大小或最大值。

下面的命令是把初始大小设置为128M:

java –Xms128m

–Xmx256m为控制新域的大小,可使用-XX:NewRatio设置新域在堆中所占的比例。

下面的命令把整个堆设置成128m,新域比率设置成3,即新域与旧域比例为1:3,新域为堆的1/4或32M:

java –Xms128m –Xmx128m

–XX:NewRatio =3可使用-XX:NewSize和-XX:MaxNewsize设置新域的初始值和最大值。

下面的命令把新域的初始值和最大值设置成64m:

java –Xms256m –Xmx256m –Xmn64m

永久域默认大小为4m。运行程序时,jvm会调整永久域的大小以满足需要。每次调整时,jvm会对堆进行一次完全的垃圾收集。

使用-XX:MaxPerSize标志来增加永久域搭大小。在WebLogic Server应用程序加载较多类时,经常需要增加永久域的最大值。当jvm加载类时,永久域中的对象急剧增加,从而使jvm不断调整永久域大小。为了避免调整,可使用-XX:PerSize标志设置初始值。

下面把永久域初始值设置成32m,最大值设置成64m。

java -Xms512m -Xmx512m -Xmn128m -XX:PermSize=32m -XX:MaxPermSize=64m

默认状态下,HotSpot在新域中使用复制收集器。该域一般分为三个部分。第一部分为Eden,用于生成新的对象。另两部分称为救助空间,当Eden充满时,收集器停止应用程序,把所有可到达对象复制到当前的from救助空间,一旦当前的from救助空间充满,收集器则把可到达对象复制到当前的to救助空间。From和to救助空间互换角色。维持活动的对象将在救助空间不断复制,直到它们获得使用期并转入旧域。使用-XX:SurvivorRatio可控制新域子空间的大小。

同NewRation一样,SurvivorRation规定某救助域与Eden空间的比值。比如,以下命令把新域设置成64m,Eden占32m,每个救助域各占16m:

java -Xms256m -Xmx256m -Xmn64m -XX:SurvivorRation =2

如前所述,默认状态下HotSpot对新域使用复制收集器,对旧域使用标记-清除-压缩收集器。在新域中使用复制收集器有很多意义,因为应用程序生成的大部分对象是短寿命的。理想状态下,所有过渡对象在移出Eden空间时将被收集。如果能够这样的话,并且移出Eden空间的对象是长寿命的,那么理论上可以立即把它们移进旧域,避免在救助空间反复复制。但是,应用程序不能适合这种理想状态,因为它们有一小部分中长寿命的对象。最好是保持这些中长寿命的对象并放在新域中,因为复制小部分的对象总比压缩旧域廉价。为控制新域中对象的复制,可用-XX:TargetSurvivorRatio控制救助空间的比例(该值是设置救助空间的使用比例。如救助空间位1M,该值50表示可用500K)。该值是一个百分比,默认值是50。当较大的堆栈使用较低的sruvivorratio时,应增加该值到80至90,以更好利用救助空间。用

-XX:maxtenuring threshold可控制上限。

为放置所有的复制全部发生以及希望对象从eden扩展到旧域,可以把MaxTenuring Threshold设置成0。设置完成后,实际上就不再使用救助空间了,因此应把SurvivorRatio设成最大值以最大化Eden空间,设置如下:

java … -XX:MaxTenuringThreshold=0 –XX:SurvivorRatio=50000 …

垃圾回收描述:

垃圾回收分多级,0级为全部(Full)的垃圾回收,会回收OLD段中的垃圾;1级或以上为部分垃圾回收,只会回收Young中的垃圾,内存溢出通常发生于OLD段或Perm段垃圾回收后,仍然无内存空间容纳新的Java 对象的情况。

当一个URL被访问时,内存申请过程如下:

A. JVM会试图为相关Java对象在Eden中初始化一块内存区域

B. 当Eden空间足够时,内存申请结束。否则到下一步

C. JVM试图释放在Eden中所有不活跃的对象(这属于1或更高级的垃圾回收);释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区/OLD区

D. Survivor区被用来作为Eden及OLD的中间交换区域,当OLD区空间足够时,Survivor区的对象会被移到Old区,否则会被保留在Survivor区

E. 当OLD区空间不够时,JVM会在OLD区进行完全的垃圾收集(0级)

F. 完全垃圾收集后,若Survivor及OLD区仍然无法存放从Eden复制过来的部分对象,导致JVM无法在Eden区为新对象创建内存区域,则出现”out of memory错误”

Java堆相关参数:

ms/mx:定义YOUNG+OLD段的总尺寸,ms为JVM启动时YOUNG+OLD的内存大小;mx为最大可占用的YOUNG+OLD 内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。NewSize/MaxNewSize:定义YOUNG段的尺寸,NewSize为JVM启动时YOUNG的内存大小;MaxNewSize为最大可占用的YOUNG内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。

PermSize/MaxPermSize:定义Perm段的尺寸,PermSize为JVM启动时Perm的内存大小;MaxPermSize为

最大可占用的Perm内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。

SurvivorRatio:设置Survivor空间和Eden空间的比例

例:

MEM_ARGS="-Xms512m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=128m

-XX:MaxPermSize=128m -XX:SurvivorRatio=6"

在上面的例子中:

YOUNG+OLD: 512M

YOUNG: 256M

Perm: 128M

Eden: YOUNG*6/(6+1+1)=192M

Survivor: YOUNG/(6+1+1)=32M

监视并记录Apache网站服务器的运行

监视并记录Apache网站服务器的运行 LogFormat 指令承诺你告诉Apache你想要记录要求的哪些方面。而你仍需附加的指令来告诉Apache在哪里记录那些信息,这在下一章中将会介绍。下面的例子显示了两种最受欢迎的格式的配置:一般日志格式和整合日志格式。当Apache收到一个要求,他将会用相应的要求属性来替代以%为前缀的每一个域。假如您正在使用一般日志格式,您的日志文件里 尽管有附件提供日志格式的详尽索引,下表描述了一些最为重要的域: # %h: 客户端(例如,扫瞄器)向服务器发出连接要求时自己的当时的IP地址或域名(需开启HostNameLookups)。 # %u: 使用方式认证用户时,记录下的用户的编号。 # %t: 服务器同意到连接要求的时刻。 # %r: 客户端发出的原始连接要求中的文本信息,包含所使用的方法。 # %>s: 服务器应答扫瞄器后的返回状态代码,200表示要求成功。. # %b: 服务器应答扫瞄器发出的单个要求的回传对象的内容大小(字节为单位),不统计数据包头部字节。 整合日志格式在一般日志格式的基础上扩展出了两个附加的域。定义为: # %{Referer}i: 连接要求数据包包头,包含指向当前页面的文档关联信息。 # %{User-agent}i: 用户代理连接要求数据包包头,包含客户扫瞄器的信息。 创建一个自定义日志文件 您可能会想创建Apache自带以外的新的日志文件。下面的例子将运用CustomLog来创建一个新的日志文件,并储存由一个之前定义好的日志格式,即前一章提到的common,所定义的信息。您还能够用格式本身的定义来替换昵称。一个附加的,更为简单的指令是Transferlog,它只同意最后一个LogFormat指令提供的定义。

搭建Apache服务器

实训时间:2010年6月28日上午 搭建Apache服务器 实验目的 1.掌握配置用户个人站点的方法; 2.掌握配置目录访问控制与用户认证的方法; 3.掌握基于IP地址不同端口的虚拟主机的架设方法; 4.掌握基于不同IP地址的虚拟主机的架设方法; 实验内容 根据Apache服务器的默认设置,Web站点的相关文件保存在/var/www目录,而Web站点的日志文件保存于/var/log/httpd目录。安装安装Apache服务并进行相应的设置。 实验准备 两台计算机,一台安装RHEL Server5,另一台安装Windows XP。 一、建立Apache服务器的应用环境 1.安装Apache服务器软件包 (1)以超级用户登录到字符界面,输入“rpm -qa|grep httpd”命令,查看是否已安装Apache软件包,如没安装,则进行下一步。 (2)利用mount命令挂载安装光盘,依次输入如下命令: mount -t iso9660 /dev/cdrom /mnt rpm –ivh /mnt/Server/apr-1.2.7-11.i386.rpm rpm –ivh /mnt/Server/apr-util-1.2.7-6.i386.rpm rpm –ivh /mnt/Server/httpd-2.2.3-6.el5.i386.rpm 2.设置RHEL Server5计算机,其IP地址为192.168.0.10,子网掩码为255.255.255.0;允 许www服务通过防火墙,关闭SELinux,并启动Apache服务器。 (1)超级用户在字符界面输入“setup”命令,启动文字模式的系统设置程序。使用方向键将光标移至“Network configuration”(网络配置)选项,按回车,显示网卡信息。(2)选中网卡,再次按回车,出现网卡配置界面,按Tab键将光标移至“Use DHCP” 后的“*”,按[Space]键取消选择,然后在“Static IP”后输入IP地址“192.168.0.10”,在“Netmask”后输入掩码“255.255.255.0”。然后按Tab键将光标移至“OK”按钮按回车键,保存网卡设置。 (3)回到网卡设备选择界面,移动光标至“Quit”按回车。回到工具选择界面,选择“Firewall configration”(防火墙配置)选项按回车,出现防火墙配置界面,移动光标至“Disabled”,并按【Space】键选择此项。 (4)移动光标至“Customize”按钮按回车,出现防火墙自定义配置界面,选中“www” 选项。最后关闭此程序。 (5)为让系统设置起效,重启计算机。 3.测试Apache服务器。 在Windows计算机中启动IE浏览器,在地址栏中输入RHEL Server5主机的IP地址,将显示/var/www/html目录下index.html文件的内容。 二、配置个人Web站点。 1.配置Apach服务器,允许Linux用户架设其个人Web站点。 超级用户首先备份配置文件httpd.conf,输入命令“cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.back”,以保证即使Apache服务器的配置错误也可以恢复初始设置。(1)输入“vi /etc/httpd/conf/httpd.conf”。 (2)在vi 命令模式下输入“/mod_userdir.c”按回车,查找文件中的“mod_userdir.c”字符

浅谈Linux下Apache服务器的配置及安全问题

目录 [摘要] (2) 1. Linux的介绍 (3) 2. Apache服务器的历史与现状 (3) 3. Linux+Apache的常规配置 (4) 1、安装Apache (4) 2、主配置文件httpd.conf (4) 3、Global Environment (4) 4、'Main' Server Configuration (5) 5、Virtual Hosts (5) 4. Apache服务器的主要安全缺陷 (6) 5. Apache服务器常规安全配置 (7) 1. 服务器访问控制 (7) 2. 隐藏和伪装APACHE的版本。 (7) 3. 在“监牢”中运行APACHE。 (7) 4. 减少CGI和SSL风险。 (7) 5. 确保Apache以其自身的用户账号和组运行 (7) 6. 禁止Apache遵循符号链接 (8) 7. 慎重对待对.htaccess文件的支持 (8) 8. 关闭任何不必要的模块 (8) 9. 确保web根目录之外的文件没有提供服务 (8) 10. 使用最高和最新安全版本 (8) 参考资料 (9)

[摘要] 作为网管人员最担心Web服务器遭到攻击,一旦遭到攻击,网站的所有信息可能面目全非,直到整个Web系统全面瘫痪。因此,选择安全性能好的Web服务器软件尤其重要。作为Internet 上最流行的Web服务器软件,Apache的安全性经受了时间和市场的双重检验。取得了惊人的成功。了解Apache Server的特性,并进行合理的配置将是每一个站点管理维护或开发人员必须关注的问题。 [关键词]Web服务器;Apache;安全性;合理的配置

Linux下Apache服务器的安装和配置

【实验8】Apache服务器的安装和配置 一、实验目的: 1.掌握Apache Web服务器的安装和配置。 2.使用虚拟主机在同一台服务器上架设多个网站。 二、【实验环境】 1.虚拟机软件VM Ware 6.0,Redhat Enterprise Linux虚拟机或光盘镜像文 件。 2.2台以上机器组成的局域网。 三、【实验原理】 (一)Apache服务简介 Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。 Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web 服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。 (二)虚拟主机 所谓虚拟主机,也叫“网站空间”就是把一台运行在互联网上的服务器划分成 多个“虚拟”的服务器,每一个虚拟主机都具有独立的域名和完整的Internet服务 器(支持WWW、FTP、E-mail等)功能。一台服务器上的不同虚拟主机是各自 独立的,并由用户自行管理。 虚拟主机技术是互联网服务器采用的节省服务器硬体成本的技术,虚拟主机 技术主要应用于HTTP服务,将一台服务器的某项或者全部服务内容逻辑划分 为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬体资源。如果 划分是系统级别的,则称为虚拟服务器。

(三)Linux中虚拟主机的分类 1、基于IP地址的虚拟主机 如果某公司有多个独立的IP地址可用,那么可以用不同的IP地址来配置虚拟主机。 2、基于端口的虚拟主机 如果只有一个IP地址,但是要架设多个站点,可以使用端口来区分,每个端口对应一个站点。这样配置的话,用户在访问的时候必须在 URL中指明端口号才能访问相应的网站。 3、基于名称的虚拟主机 使用基于IP地址或者端口的虚拟主机,能够配置的站点数目有限,而使用基于名称的虚拟主机,可以配置任意数目的虚拟主机,而不需要 额外的IP地址,也不需要修改端口号。 四、实验步骤 本实验请勿使用【系统】→【管理】→【服务器设置】中的【HTTPD】工具来配置,否则后果自负! (一)Apache服务器的启动 1、测试是否已安装Apache服务器: [root@localhost ~]#rpm –qa httpd 2、启动Apache服务器: [root@localhost ~]#service httpd start (二)基于端口的虚拟主机的配置 1、在/etc/httpd目录中,建立一个名为vhostconf.d的子目录,用来存放虚拟 主机的配置文件。 2、在/var/www目录中,建立一个名为websites的子目录,用于存放网站源 文件;在website目录下再建立ipvhost1和ipvhost2文件夹,用于区分各 个站点。

Apache服务器配置实验报告

在Linux下配置Apache服务器 一、实验目的 完成本次实训,将能够: ●配置基本的Apache服务器 ●配置个人用户Web站点。 ●配置虚拟目录别名功能。 ●配置主机访问控制。 ●配置用户身份验证功能.。 ●配置基于IP地址的虚拟主机. 二、实验环境 1、RedHat Linux4AS. 2、Apache 2.0 三、实验内容 1.配置基本的Apache服务器 2.配置个人用户Web站点。 3.配置虚拟目录别名功能。 4.配置主机访问控制。 5.配置用户身份验证功能.。 6.配置基于IP地址的虚拟主机。 四、实验要求 在Linux操作系统下配置Apache服务器。 五、注意事项 1.在修配置文件下注意区分大小写、空格。 2.在每次重新开机后都必须启动Apachec服务器。 3.在每次修改完主配置文件后保存起来,必须重启Apachec服务器,如果不重启会 导致配置无效,最终导致实验失败。 六、实验步骤 1、检测是否安装了Apache软件包: A、首先为服务器网卡添加一个固定的IP地址。 B、在Web浏览器的地址栏中输入本机的IP地址,若出现Test Page测试页面(该 网页文件的默认路径为var/www/html/index.html)如下图1所示就说明Apache 已安装并已启动。

另一种方法是使用如下命令查看系统是否已经安装了Apache软件包: [root@rhe14~]# rpm –aq | grep httpd Httpd-suexec-2.0.52-9.ent Httpd-manual-2.0.52-9.ent System-config-httpd-1.3.1-1 Httpd-devel-2.0.52-9.ent 出现以上内容表明了系统已安装Apache软件包。 2、安装Apache软件包 超级用户(root)在图形界面下选择“应用程序”|“系统设置”|“添加/删除应用程序”命令,选择“万维网服务器”软件包组,在单击“更新”按钮就可以安装与Apache相关的软件包。 3、Apache的基本配置 (1)打开终端输入[root@rhe14~]# /etc/rc.d/init.d/httpd start //启动Apache 或者 [root@rhe14~]# apachectl start //启动Apache [root@rhe14~]# apachectl stop //停止Apache服务 [root@rhe14~]# apachectl restart //重启Apache服务 [root@rhe14~]# apachectl configtest //测试Apache服务器配置语法(2)在httpd.conf将Apache的基本配置参数修改、将一些注释的语句取消注释,或将某些不需要的参数注释掉。 (3)将包括index.html在内的相关网页文件复制到指定的Web站点根目下(var/www/html/index.html) (4)重启httpd进程 (5) 在Web浏览器下输入配置的ip地址出现如下图2,那表明基本配置成功了:

Apache服务器配置技巧

1、如何设置请求等待时间 在httpd.conf里面设置: TimeOut n 其中n为整数,单位是秒。 设置这个TimeOut适用于三种情况: 2、如何接收一个get请求的总时间 接收一个post和put请求的TCP包之间的时间 TCP包传输中的响应(ack)时间间隔 3、如何使得apache监听在特定的端口 修改httpd.conf里面关于Listen的选项,例如: Listen 8000 是使apache监听在8000端口 而如果要同时指定监听端口和监听地址,可以使用: Listen 192.170.2.1:80 Listen 192.170.2.5:8000 这样就使得apache同时监听在192.170.2.1的80端口和192.170.2.5的8000端口。 当然也可以在httpd.conf里面设置: Port 80 这样来实现类似的效果。 4、如何设置apache的最大空闲进程数 修改httpd.conf,在里面设置: MaxSpareServers n 其中n是一个整数。这样当空闲进程超过n的时候,apache主进程会杀掉多余的空闲进程而保持空闲进程在n,节省了系统资源。如果在一个apache非常繁忙的站点调节这个参数才是必要的,但是在任何时候把这个参数调到很大都不是一个好主意。 同时也可以设置: MinSpareServers n 来限制最少空闲进程数目来加快反应速度。 5、apache如何设置启动时的子服务进程个数 在httpd.conf里面设置: StartServers 5 这样启动apache后就有5个空闲子进程等待接受请求。 也可以参考MinSpareServers和MaxSpareServers设置。 6、如何在apache中设置每个连接的最大请求数 在httpd.conf里面设置: MaxKeepAliveRequests 100 这样就能保证在一个连接中,如果同时请求数达到100就不再响应这个连接的新请求,保证了系统资源不会被某个连接大量占用。但是在实际配置中要求尽量把这个数值调高来获得较高的系统性能。 7、如何在apache中设置session的持续时间 在apache1.2以上的版本中,可以在httpd.conf里面设置: KeepAlive on KeepAliveTimeout 15 这样就能限制每个session的保持时间是15秒。session的使用可以使得很多请求都可以通过同一个tcp

Apache服务器的安装与配置

Apache服务器的安装与配置 一、安装Apache 双击可执行文件apache_1.3.33-win32-x86-no_src.exe,将Apache服务器软件安装至C:\Apache目录下。 二、设置C:\apache\conf\httpd.donf文件 修改Apache的核心配置文件c:\apache\conf\httpd.conf(说明一点:“#”为Apache的注释符号)。修改方法如下: 1、寻找到ServerName。这里定义你的域名。这样,当Apache Server运行时,你可以在浏览器中访问自己的站点。如果前面有#,记得删除它。 2、寻找到ServerAdmin。这里输入你的E-Mail地址。 (以上两条在安装时应该已经配置好了,所以不必改动,这里介绍一下,主要是为了日后的修改) 3、寻找到。向下有一句Options,去掉后面所有的参数,加一个All(注意区分大小写!A 大写,两个l小写。下同。);接着还有一句Allow Override,也同样去掉后面所有的参数,加一个All。 AllowOverride All Options All Order allow,deny Allow from all 4、寻找到DocumentRoot。这个语句指定你的网站路径,也就是你主页放置的目录。你可以使用默认的,也可以自己指定一个,但记住,这句末尾不要加“/”。此外注意,路径的分隔符在Apache Server里写成“/”。(将DocumentRoot "C:/apache/htdocs"改为DocumentRoot "C:/try") 5、寻找到DirectoryIndex。这就是你站点第一个显示的主页,在index.html的后面加入index.htm index.php index.php3 index.cgi index.pl。注意,每种类型之间都要留一空格!这里添加好了,以后就不用再麻烦了。 6、port(端口号),如果没安装IIS的话,就保持80不要变,否则,就要改一下(因为IIS的WEB服务占据了80),可以改成81等等。 三、Apache的手动启动和停止 Net start apache启动apache服务,Net stop apache停止apache服务。

Apache2.2安全配置和性能优化

Apache2.2安全配置和性能优化 一、Apache禁止目录遍历 将Options Indexes FollowSymLinks中的Indexes 去掉,就可以禁止Apache 显示该目录结构。Indexes 的作用就是当该目录下没有index.html文件时,就显示目录结构。 二、apache 隐藏版本信息 1.隐藏Apache版本信息 测试默认apache 的状态信息 [root@1314it conf]# curl -Is localhost HTTP/1.1 200 OK Date: Tue, 16 Nov 2010 04:20:15 GMT Server: Apache/2.2.3 (CentOS) DAV/2 PHP/5.1.6 mod_perl/2.0.4 Perl/v5.8.8 X-Powered-By: PHP/5.1.6 Connection: close Content-Type: text/html; charset=GB2312 [root@1314it conf]# 修改主配置文件httpd.conf ServerSignature Off ServerTokens Prod 重启apache 测试 测试隐藏版本号后apache 的状态信息 [root@1314it conf]# curl -Is localhost HTTP/1.1 200 OK Date: Tue, 16 Nov 2010 04:21:41 GMT Server: Apache X-Powered-By: PHP/5.1.6 Connection: close Content-Type: text/html; charset=GB2312

apache实验

RHCE实验文档— APACHE配置 实验一: 实现安全的APACHE( https ) 实验环境: Redhat 6.0平台 软件包: httpd-2.2.15-5.el6.x86_64.rpm mod_ssl.x86_64 1:2.2.15-5.el6.rpm 实验要求: 搭建一个基本的web服务,并且能够实现通过https协议访问. 步骤一: 安装软件包 [root@station ~]# yum -y install httpd mod_ssl 步骤二: 查看配置文件中证书路径是否启用. [root@station ~]# vim /etc/httpd/conf.d/ssl.conf # certificate can be generated using the genkey(1) command. SSLCertificateFile /etc/pki/tls/certs/localhost.crt –公钥 # Server Private Key: # If the key is not combined with the certificate, use this # directive to point at the key file. Keep in mind that if # you've both a RSA and a DSA private key you can configure # both in parallel (to also allow the use of DSA ciphers, etc.) SSLCertificateKeyFile /etc/pki/tls/private/localhost.key –私钥 注:红色字体分别指出了公钥和私钥的路径,在企业六中默认自动创建了这两个证书. 可以直接使用这两个自签证书. 步骤三:创建用于测试的主页面: [root@station ~]# echo "this is test for https" >/var/www/html/index.html 步骤四:启动服务并将服务设置为开机自启动 [root@station ~]# service httpd start Starting httpd: [ OK ] [root@station ~]# chkconfig httpd on 步骤五:测试 总结:实验到第五步就已经实现了一个最基本的https的web服务器,在实际生产环境中,证书部分可以通过搭建CA证书服务器来签发,或者向第三方的权威CA服务器来申请,从而提高证书的可信性.如果使用第三方的证书时,大家需要注意调整证书的路径. 实验二:创建基于不同域名的虚拟主机 实验环境: Redhat 6.0平台 软件包: httpd-2.2.15-5.el6.x86_64.rpm

Apache服务器安全认证攻略

Apache服务器攻略 Apache是目前流行的 Web服务器,可运行在linux、Unix、Windows等操作系统下,它可以很好地解决“用户名+密码”的认证问题。Apache用户认证所需要的用户名和密码有两种不同的存贮方式:一种是文本文件;另一种是MSQL、 Oracle、MySQL等数据库。下面以Linux的Apache为例,就这两种存贮方式,同时能对Windows的 Apache用户认证作简要的说明。下面我们来介绍下通过文本认证而实现的方式。 建立用户的认证授权需要三个步骤: 1、建立用户库 2、配置服务器的保护域 3、告诉服务器哪些用户拥有资源的访问权限 废话不多少举例最清楚拉!~假如某一目录下的文件如/home/ftp/pub需要做到用户认证 创建认证用户 创建认证组 基本的Apache用户认证方法: 在httpd.conf中加入下面的行 或者加到 /etc/httpd/conf.d/ 新建个文件名为.conf结尾的配置文件

用在目录/home/ftp/pub下放文件.htaccess,内容如下: 用随Apache来的程序htpasswd 生成文件/etc/.passwd,每行一个用户名:密码只要能提供正确的用户名和密码对,就允许登录访问,这是针对任何地址来的 请求都要求提供用户名和密码认证。 针对部分网段或地址要求认证。 若公司LAN所在网段为10.45.63.0/24,且有一防火墙专线接入Internet, 内部网卡的地址为10.45.63.1/32,则现在希望所有通过拨本地633通过 防火墙上的apache反向代理向LAN上的另一WWW服务器访问时需要认证,而本地LAN上的用户不需认证。可以在httpd.conf中放入: 且在/home/ftp/pub/.htaccess中放入:

三大WEB服务器对比(apache_,lighttpd,nginx)

三大WEB服务器对比分析(apache ,lighttpd,nginx)一.软件介绍(apache lighttpd nginx) 1. lighttpd Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd 是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。 Lighttpd使用fastcgi方式运行php,它会使用很少的PHP进程响应很大的并发量。 Fastcgi的优点在于: ·从稳定性上看, fastcgi是以独立的进程池运行来cgi,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑. ·从安全性上看, fastcgi和宿主的server完全独立, fastcgi怎么down也不会把server搞垮, ·从性能上看, fastcgi把动态逻辑的处理从server中分离出来, 大负荷的IO处理还是留给宿主server, 这样宿主server可以一心一意作IO,对于一个普通的动态网页来说, 逻辑处理可能只有一小部分, 大量的图片等静态IO处理完全不需要逻辑程序的参与(注1) ·从扩展性上讲, fastcgi是一个中立的技术标准, 完全可以支持任何语言写的处理程序(php,java,python...) 2.apache apache是世界排名第一的web服务器, 根据netcraft(https://www.doczj.com/doc/4d1398650.html,)所作的调查,世界上百分之五十以上的web服务器在使用apache. 1995年4月, 最早的apache(0.6.2版)由apache group公布发行. apache group 是一个完全通过internet进行运作的非盈利机构, 由它来决定apache web服务器的标准发行版中应该包含哪些内容. 准许任何人修改隐错, 提供新的特征和将它移植到新的平台上, 以及其它的工作. 当新的代码被提交给apache group时, 该团体审核它的具体内容, 进行测试, 如果认为满意, 该代码就会被集成到apache的主要发行版中. apache 的特性: 1) 几乎可以运行在所有的计算机平台上. 2) 支持最新的http/1.1协议 3) 简单而且强有力的基于文件的配置(httpd.conf). 4) 支持通用网关接口(cgi) 5) 支持虚拟主机.

常见WEB安全漏洞及整改建议

常见WEB安全漏洞及整改建议 1. HTML表单没有CSRF保护 1.1 问题描述: CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。 CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账……造成的问题包括:个人隐私泄露以及财产安全。 1.2 整改建议: CSRF的防御可以从服务端和客户端两方面着手,防御效果是从服务端着手效果比较好,现在一般的CSRF防御也都在服务端进行。有以下三种方法: (1).Cookie Hashing(所有表单都包含同一个伪随机值): (2).验证码 (3).One-Time Tokens(不同的表单包含一个不同的伪随机值) 1.3 案例: 1.服务端进行CSRF防御 服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数。 1.3.1 Cookie Hashing(所有表单都包含同一个伪随机值): 这可能是最简单的解决方案了,因为攻击者不能获得第三方的Cookie(理论上),所以表单中的数据也就构造失败.

//构造加密的Cookie信息 $value = “DefenseSCRF”; setcookie(”cookie”, $value, time()+3600); ?> 在表单里增加Hash值,以认证这确实是用户发送的请求。 $hash = md5($_COOKIE['cookie']); ?> ”> 然后在服务器端进行Hash值验证 if(isset($_POST['check'])) { $hash = md5($_COOKIE['cookie']); if($_POST['check'] == $hash) { doJob(); } else {

Apache服务器配置毕业设计

A p a c h e服务器配置毕 业设计 目录 摘要 ................................................................................................................ 错误!未定义书签。 1 综述 (1) 1.1 架设WWW网站的意义 (1) 1.2 WWW的工作原理 (1) 1.3 在Linux下构建WWW服务器 (2) 1.3.1 关于硬件配置 (2) 1.3.2 将linux用作www服务器 (2) 2 Red Hat Linux的安装与使用 (4) 2.1 Red Hat Linux9.0简介 (4) 2.1.1 Red Hat Linux的网络功能 (6) 2.1.2 Red Hat Linux的文件类型 (9) 2.2 Red Hat Linux9.0的安装和配置 (11) 2.2.1 合理划分分区 (11) 2.2.2 了解相关信息 (12) 2.2.3 图形化安装过程 (13) 3 WWW服务器的建立 (27) 3.1 Apache的体系结构及性能 (27) 3.1.1 Apache的体系结构 (27) 3.1.2 Apache性能简介 (28) 3.2 配置并启动Apache (31) 3.2.1 配置文件httpd.conf (31) 3.2.2 Apache服务的安装、启动与停止 (32) 3.3 设置用户个人主页 (33) 3.3.1设置Linux系统用户个人主页的目录 (33) 3.3.2设置用户个人主页所在目录的访问权限 (33) 3.4 设置虚拟主机 (34) 3.4.1 配置DNS (34) 4 建立和完善WWW站点 (42) 4.1建立安全传输的WWW站点 (42) 4.1.1认识SSL安全协议 (42) 4.1.2 维护站点安全性应注意的问题 (42) 5 结论 (44) 致谢 ................................................................................................................ 错误!未定义书签。参考文献.. (45) 8

apache服务器的安装与配置实验报告

实验报告---apache服务器配置 一、实验目的: Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web 服务器软件之一。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache的开发遵循GPL协议,由全球志愿者一起开发并维护。它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。 支持最新的HTTP1.1通信协议;强大的可配置性和可扩展性;提供全部源代码和不受限制的使用许可;通过第三方模块可以支持Java Servlets;广泛的应用和支持多种平台。 因此做这个实验的目的是为了熟悉apache服务器的配置,通过实验来加深对它的了解。 二、实验内容: (一)、Apache服务器的安装、启动与停止 (二)、配置用户个人主页 (三)、配置虚拟主机:a、创建基于IP地址的虚拟主机 b、创建基于域名的虚拟主机 三、实验步骤: (一)Apache服务器的安装、启动及访问 1.检验apache服务的软件包是否安装,默认情况下是没有安装的,因此需安装。 # rpm -qa|grep httpd //检验软件包是否安装 # mount /dev/cdrom /mnt/cdrom //加载光驱 # cd /mnt/cdrom/Server //进入光盘的Server目录 # rpm -ivh postgresql-libs-8.1.18-2.e15_4.1.i386.rpm //安装所需要的RPM包 # rpm -ivh apr-1.2.7-11.e15_3.1.i386.rpm # rpm -ivh apr-util-1.2.7-11.e15.i386.rpm # rpm -ivh httpd-2.0.40-21.i386.rpm 注意:由于安装apache软件包有依赖关系,因此按照上述顺序进行安装 2.检验网络的连通性

apache服务器出现内存溢出的解决方法

apache服务器出现内存溢出的解决方法 2011-10-08 14:26 Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存溢出是不一样的,当然处理方式也不一样。 这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况: 1.OutOfMemoryError: Java heap space 2.OutOfMemoryError: PermGen space 3.OutOfMemoryError: unable to create new native thread. Tomcat内存溢出解决方案 对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。(-Xms -Xmx -XX:PermSize -XX:MaxPermSize) 最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。 第一种:是堆溢出。 原因分析: JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。 在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。 Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。 没有内存泄露的情况下,调整-Xms -Xmx参数可以解决。 -Xms:初始堆大小 -Xmx:最大堆大小 但堆的大小受下面三方面影响:

Apache服务器使用及配置

web服务器的发送和接受 可以通过httpwatch来了解 https://www.doczj.com/doc/4d1398650.html, cmd中的操作 1.apache其实就输一个软件,apache安装目录下的bin\httpd.exe 先进入到apache\bin目录 httpd -k start[shutdown][restart] 2.如果你希望在任何一个目录下都可以运行我们的httpd.exe则需要做一个环境变量的设置 重新进入控制台cmd 关于端口: apache默认在80端口监听 一台机器可以有:1-65535号端口(2个字节(256*256)) 查看系统正在监听的端口:netstat -an或netstat -nab(发现是哪个程序在监听) 一台机器的一个端口只能被一个程序监听,一个程序可以监听多个端口 端口分为有名端口1-1024,一般别去用 apache修改配置端口 配置文档位置:apache2.2/conf/http.conf 1.添加Listen 8080 2.重新启动apache apache的目录 /bin 该目录用于存放apache常用的命令,如httpd /cgi-bin 该目录用于存放linux/unix下常用的命令 /conf 该目录用于存放配置文件,如httpd.conf /error 该目录用于存放apache启动关闭的错误 /htdocs 该目录用于存放我们的默认站点的文件夹 /icons 该目录用于存放图标 /logs 该目录用于存放apache的相关日志,如error.log,install.log /manual 该目录用于存放apache的手册 /modules 该目录用于存放apache的模块.so的文件 apache是基于模块化设计的,核心代码并不多,大多数的功能都被分散到各个模块中运行机制: MPM:multi processing modules:多重处理模块 APR:Apache Portable Runtime:可移植运行库 生命周期: 启动,配置=》模块初始化=》子进程初始化=》请求循环=》子进程结束 启动阶段===============================》运行阶段============= Apache配置虚拟目录(默认是htdocs) 1.配置虚拟目录在apache的conf目录下的httpd.conf的节点后面添加如下代码: DirectoryIndex index.php index.html index.htm Alias /myblog "D:/myblog"

实验13-Web服务器的配置(参考答案)

实验13 Web服务器的配置 一、实验目的 1、了解Web工作原理。 2、掌握基于IIS的Web服务器的创建和配置。 二、实验要求 1、设备要求:计算机1台(装有Windows Server 2003操作系统及活动目录、装有网卡), 集线器、交换机,UTP线(直通、交叉);Windows Server 2003安装源。 2、每组1人,独立完成。 三、实验基础 Web服务的实现采用B/W(Browser/Web Server)模式,Server信息的提供者称为Web 服务器,Browser信息的获取者称为Web客户端。Web服务器中装有Web服务器程序,如:Netscape iPlanet Web Server、Microsoft Internet Information Server、Apache等;Web 客户端装有Web客户端程序,即:Web浏览器,如:NetscapeNavigator、Microsoft Internet Explorer、Opea等。 Web服务器是如何响应Web客户端的请求呢?Web页面处理大致分3个步骤: 第一步:Web浏览器向一个特定服务器发出Web页面请求; 第二步:收到Web页面请求的Web服务器寻找所请求的页面并传送给Web浏览器; 第三步:Web浏览器接收所请求的Web页面并将其显示出来。 Web应用的基础还包括HTTP和HTML两个协议。 HTTP协议是用于从Web服务器传输超文本到本地浏览器的传输协议。它使浏览器的工作更高效,从而减轻网络负担;它不仅使计算机传输超文本正确、快速,而且可以确定传输文档的哪一部分以及哪一部分的内容首先显示等。HTTP使用一个TCP/IP连接,默认TCP80端口。 HTML 是用于创建Web文档或页面的标准语言,由一系列的标记符号或嵌入希望显示的文件代码组成,这些标记告诉浏览器应该如何显示文章和图形等内容。 四、内容与步骤 1、IIS6.0的安装、配置和测试; (1)从控制面板安装IIS; 第1步单击“开始” →“添加或删除程序” →“添加/删除Windows组件”,显示“Windows 组件向导”窗口,在“组件”列表框中依次选择“应用程序服务器” →“详细信息”,显示“应用程序服务器”窗口,选中“https://www.doczj.com/doc/4d1398650.html,”复选框以启用https://www.doczj.com/doc/4d1398650.html,功能,如图所示。

apache服务器安全问题

Apache服务器安全问题 Apache服务器面临的安全问题 (2) HTTP拒绝服务 (2) 缓冲区溢出 (3) 如何配置一个安全的Apache服务器 (3) 勤打补丁 (3) 建立一个安全的目录结构 (5) 为Apache使用专门的用户和用户组 (5) Web目录的访问策略 (6) 禁止使用目录索引 (6) 禁止默认访问 (6) 禁止用户重载 (6) 配置Apache服务器访问日志 (7) 相关配置文件说明 (7) Web服务器日志轮循 (8) Apache服务器的密码保护 (9) 减少CGI和SSI风险 (11) 使用SSL加固Apache (12) Apache服务器防范DoS攻击 (13)

Apache服务器面临的安全问题 HTTP拒绝服务 攻击者通过某种手段使服务器拒绝对HTTP应答。这使得Apache服务器对系统资源(cpu与内存)需求剧增,最终导致造成系统变慢甚至瘫痪。Apache服务器最大的缺点是他的普及性成为了众矢之的。Apache服务器所面临的拒绝服务攻击主要包括以下几种形式。 数据包洪水工具 1.一种中断服务器或者本地网络的方法是数据包洪水攻击,它通常使用 Internet控制报文协议(ICMP)包或者UDP包。在最简单的情况下,这些攻击都是使服务器或者网络的负载过重,这意味着黑客的网络攻击速度必须比目标的网络速度更快。使用UDP包的优势是不会有任何包返回到黑客的主机。而使用ICMP的优势是使得黑客的攻击更加富有变化。发送有缺陷的包会搞乱并锁住受害者的网络。目前所流行的趋势是黑客欺骗目标服务器,让其相信正在受到来自自身的洪水攻击。 2.磁盘攻击 这是一种更麻烦的攻击,它不仅仅影响目标计算机的通信,还破坏他的硬件。 伪造的用户请求利用写命令攻击目标服务器的硬盘,让其超过极限,并强制关闭。 受攻击者会因为信息暂时不可达,甚至丢失而产生损失。 3.路由不可达 通常,拒绝服务攻击集中在路由器上,攻击者首先获得控制权并操纵目标主机。 当攻击者能够更改路由器的路由表时,会造成整个网络不可达。这种攻击非常阴险,因为它刚开始出现时会让人莫名其妙。因为随后你的服务器就会失效,而整个网络又会不可达,这样你会要调查很多地方。 4.分布式拒绝攻击 这是对Apache服务器最有威胁的工具,即DDoS。当很多堡垒主机被感染时,一起向你的服务器发起拒绝服务攻击,是招架不住的。其中,繁衍式攻击是最恶劣的,因为攻击程序不会通过人为干涉而蔓延。Apache服务器特别容易受到攻击,无论是对分布式攻击还是隐藏来源的工具。原因是Apache服务器无处不在,对于Apache 服务器所制定的病毒,特别是ssl蠕虫潜伏在很多主机上,黑客可以通过操纵蠕虫,

相关主题
文本预览
相关文档 最新文档