apache/tomcat笔记

apache是什么?

  apache http server 简称apache是世界上排名前列的web服务器,因开源,简单,高性能,速度快,还可以做代理服务器,所以广受人们欢迎

  httpd:httpd是apache的服务

安装和编译(请自行百度)

apache的配置

  配置文件:/etc/httpd/conf/httpd.conf
  配置如下:

1 、 Apache的默认网站根目录设置及访问控制
  【此区域的配置文件,主要是针对Apache默认网站根目录的设置以及相关的权限访问设置,默认对网站的根目录具有访问权限,此选项默认 值即可】
    DocumentRoot “/var/www/html” 默认站点主目录 或者是 DocumentRoot "/usr/local/httpd/htdocs "
2 、ServerRoot "/etc/httpd" 用于指定Apache的运行目录,服务启动之后自动将目录改变为当前目录,在后面使用到的所有相对 路径都是想对这个目录下
3、 Timeout 60 服务端与客户端断开的时间
4、 KeepAlive Off 关闭常连接
  【此区域是否持续连接(因为每次连接都得三次握手,如果是访问量不大,建议打开此项,如果网站访问量比较大关闭此项比较 好),修改为:KeepAlive On 表示允许程序性联机。由于http是无状态协议,一次请求(建立一次TCP连接)只能获取一个资源, 当页面中包含多个资源的时候,就需要多次请求(建立多次TCP连接),这样导致服务器性能下降。为此定义了KeepAlive机制,可 以定义在一定时间内或请求数在一定数量之内只需要建立一次TCP连接。】
5、 MaxKeepAliveRequests 100 一个连接的最大请求数
6、 KeepAliveTimeout 超时时间
7、 Include conf.d/*.conf 加载的配置文件
8、 TypesConfig /etc/mime.types 映射关系
9、 ServerAdmin root@localhost 管理员的邮箱
10、 apache的运行用户配置:默认为daemon
  User apache
  Group apache
  启动服务后转换的身份,在启动服务时通常以root身份,然后转换身份,这样增加系统安全。通过ps -ef |grep httpd查看
11、 Apache服务默认管理员地址设置
  【此选项主要用指定Apache服务管理员通知邮箱地址,选择默认值即可,如果有真实的邮箱地址也可以设置此值】
  ServerAdmin you@example.com
12、 apache默认端口
  listen 80
13、 Apache的根目录访问控制设置
  <Directory />
  Options FollowSymLinks
  AllowOverride None
  Order deny,allow
  Deny from all      #拒绝访问                      #allow from all   允许所有请求
  </Directory>
14、 Apache的默认首页设置
  【此区域文件主要设置Apache默认支持的首页,默认只支持:index.html首页,如要支持其他类型的首页,需要在此区域添加:如index.php表 示支持index.php类型首页】
  <IfModule dir_module>
  DirectoryIndexindex.html index.php
  </IfModule>
15、 Apache关于日志文件配置
  【此区域文件主要是针对Apache默认的日志级别,默认的访问日志路径,默认的错误日志路径等相关设置,此选项内容默认即可ErrorLog "logs/error_log"
16、 <IfModule mime_module> MIME媒体文件,以及相关http文件解析配置说明
17、 定义httpd的pid文件
  【此区域记录httpd守护进程的pid号码,这是系统识别一个进程的方法,系统中httpd进程可以有多个,但这个PID对应的进程是其他的父进 程】
  PidFile run/httpd.pid
18、 测试server-status模块添加 注释去掉,放开这块
  <Location /server-status>
  SetHandler server-status #加载模块
  Order deny,allow #过滤规则排序
  Deny from all
  Allow from all
  </Location>
  正确配置后访问 ip:端口号/server-status后页面出现,可以web端监控apache
  1 requests currently being processed, 7 idle workers
  1个正在运行的进程 7个空闲进程
19、 三种工作模式:
  prefork
  启动httpd后,会有父进程下很多子进程,但在这种工作模式下,一个子进程下只有一个线程(多进程单线程)
  startservers 10 启动时 启动多少进程
  minSpareServers 10 最小空闲
  maxSpareServers 10 最大空闲
  serverlimit 256 最多启动256个进程
  maxclients 256 最大并发客户端个数
  maxrequestsperchile 4000 子进程能处理多少个请求 若=0 是不限制,不要这么设置 容易内存泄漏,若是超过此数目进程被杀死并重新 创建
  需要注意的是:ServerLimit最大值为20000个,并且:由于profork是单一线程的进程,所以每个进程在同一时间里仅能处理一个请求(也就 是一个请求一个进程),所以MaxClients的值要和ServerLimit一致。而且,profork的开销比较大,不过稳定性比较强。

  </IfModule>

  worker:
  多进程多线程,每个子进程会启动多个线程(最大2w个),但有个问题是 如果某一个线程死锁 其他线程也死了 杀掉子进程 其下的所有线程也杀掉了
  <IfModule worker.c> #当httpd服务使用的是worker模型的时候
  StartServers 6 #默认启动6个作业进程
  MaxClients 300 #最大并发客户端数为300个
  MinSpareThreads 25 #空闲线程的数量不低于25个
  MaxSpareThreads 75 #空闲线程数最大75个
  ThreadsPerChild 25 #每个进程默认启动25个线程
  MaxRequestsPerChild 0 #每个进程可以处理的请求数不限制
  </IfModule>
  maxrequestsperchild:

 

enent:
  工作模式和worker很像,最大区别在于在keeplive下长时间占用线程照成资源浪费的问题,也就是线程动态分配, 是一个基于线程的、更高级的事件驱动模型,可以实现一个线程处理N个请求。

  (event在遇到不兼容的模块会自动转成worker模式)

  <IfModule mpm_event_module> //如果Apache采用的是Event模式,则该配置生效
  StartServers 3 //服务器启动时创建的子进程数
  MinSpareThreads 75 //最小空闲线程数
  MaxSpareThreads 250 //空闲子进程的最大数量
  ThreadsPerChild 25 //每个子进程产生的线程数量
  MaxRequestWorkers 400 //限定服务器同一时间内客户端最大接入的请求数量,默认是150;任何超过了该限制的请求都要进入等待队列,一旦一个个连接被释放,队列中的请求才将得到服务。
  MaxConnectionsPerChild 0 // 每个子进程在其生命周期内允许最大的请求数量,如果请求总数已经达到这个数值,子进程将会结束,如果设置为0,子进程将永远不会结束。将该值设置为非0值,可以防止运行PHP导致的内存泄露。

 

20、更改工作模式(如果把默认prefork模式切换为worker模式)

  进入/usr/sbin目录

  mv httpd httpd.prefork 

  mv httpd.worker httpd

  vi /etc/httpd/conf/httpd.conf  编辑查看worker参数配置

  /etc/init.d/httpd restart        重启apache

apache监控:

  可以通过前面说的ip/status 监控,也可以linux命令top,ps,查看日志

apache调优:

  服务器参数调优: 网络内核参数调优,文件系统参数调优,I/O调优
  编译调优
  配置调优:包括运行模式调优,模块调优
  使用缓存代理
  使用集群方案

tips:

  apache能用php的原因:能解析php模块
  apache是一个web容器
  实际工作中,可以将dtimeout超时改下一点
  apache性能监控需要嵌入php代码中,如果你自己去改,开发会怼死你
  ./httpd -v 查看httpd设置的工作模式

  apache启动   service httpd start

      重启 service httpd restart 

        关闭    service httpd stop

        也可以在bin下启动

 

tomcattomcat是一个免费代码的轻量级开源web应用服务器,处理html动态能力强大,而apache处理静态突出,一般可以和apache嵌套后,apache为HTML页面服务,tomcat为运行JSP 页面和Servlet

环境变量:

  1.tomcat依赖jdk  输入java -version查看是否安装

  2.打开环境变量创建TOMCAT_HOME
  目录地址如 D:\tomcat\apache-tomcat-7.0.82\apache-tomcat-7.0.82\bin
  3.CLASSPATH
  加入变量 %TOMCAT_HOME%\BIN
  4.启动bin下的startup.bat
  linux就是.sh

安装tomcat请自行百度

配置文件 server.xml:

  默认监控端口号8080 超时时间20000毫秒 最大线程数180  下面是https端口8443 (不用管)

tomcat的web监控

 web监控: 在配置好Tomcat7/8后,我们往往需要访问Tomcat7/8的Manager以及Host Manager。就需要在tomcat-users.xml中配置用户角色来实现,之后在地址栏输入:localhost:8080访问   

  1.访问tomcat
  2.点击manager app
  3.根据提示修改tomcat/conf/tomcat-user.xml

  <role rolename="manager-gui"/>
  <user username="tomcat" password="123456" roles="manager-gui"/>

  修改设置用户名密码

  4.重启后访问,可以监控一下tomcat的运行情况/工作状态
  http://xxxx.xxxx.xxxx.xx:xxxx/manager/status

  linux监控:top,ps,查看日志

tomcat的启动 bin下./startup.sh

     关闭 bin下./shutdown.sh 或者kill杀掉

tips:

  一般项目文件放在webapps中

 

 

版权声明:本文原创发表于 博客园,作者为 RainBol 本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

转载于:https://www.cnblogs.com/RainBol/p/9485629.html

APACHE 2.2.9+TOMCAT6.0.18配置负载均衡 目标: 使用 apachetomcat 配置一个可以应用的 web 网站,要达到以下要求: 1、 Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例,并进行负载均衡。 2、 为系统设定 Session 超时时间,包括 Apachetomcat 3、 为系统屏蔽文件列表,包括 Apachetomcat 注:本例程以一台机器为例子,即同一台机器上装一个apache和4个Tomcat。 一、 前期准备工作:安装用的程序(前提保证已安装了JDK1.5以上的版本) jdk1.6.0_18下载: http://java.sun.com/javase/downloads/index.jsp APAHCE 2.2.14下载:apache_2.2.14-win32-x86-no_ssl.msi http://httpd.apache.org/download.cgi下载 TOMCAT6.0.20下载:apache-tomcat-6.0.20.zip直接解压。http://tomcat.apache.org/download-60.cgi Jdk安装目录下D:\toots\Java\jdk1.6.0_18\bin\msvcr71.dll复制到C:\WINDOWS\system32下 二、 安装过程 设置环境变量: JAVA_HOME= D:\toots\Java\jdk1.6.0_18 classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因为它代表当前路径) path=%JAVA_HOME%\bin APAHCE安装目录:D:\toots\Apache下 四个TOMCAT目录:自行解压到(D:\toots\)下。分别为 tomcatA,tomcatB,tomcatC,tomcatD 三、配置 1、Apache配置 1.1、httpd.conf配置 修改APACHE配置文件D:\toots\Apache \conf\httpd.conf 将以下Module的注释去掉,这里并没有使用mod_jk.so进行apachetomcat的链接,从2.X以后apache自身已集成了mod_jk.so的功能。只需简单的把下面几行去掉注释,就相当于以前用mod_jk.so比较繁琐的配置了。这里主要采用了代理的方法,就这么简单。 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 再找到<IfModule dir_module></IfModule>加上index.jsp修改成 <IfModule dir_module> DirectoryIndex index.html index.jsp </IfModule> 1.1.1、 在最下面加入 ProxyRequests Off <proxy balancer://cluster> BalancerMember ajp://127.0.0.1:9001 loadfactor=1 route=jvm1 BalancerMember ajp://127.0.0.1:9002 loadfactor=1 route=jvm2 BalancerMember ajp://127.0.0.1:9003 loadfactor=1 route=jvm3 BalancerMember ajp://127.0.0.1:9004 loadfactor=1 route=jvm4 <proxy > 上面的四个BalancerMember成员是我们配置的tomcat集群。后面会说明的 1.2、httpd-vhosts.conf设置 接下来进行虚拟主机的设置。APACHE的虚拟主机设置如下: 首先要修改 conf/httpd.conf找到 (#Include conf/extra/httpd-vhosts.conf)把注释去掉。 # Virtual hosts Include conf/extra/httpd-vhosts.conf 在文件(D:/toots/Apache/conf/extra/httpd-vhosts.conf)最下面加入 <VirtualHost *:80> ServerAdmin rosi@126.com DocumentRoot "D:/toots/Apache/docs/dummy-host3.localhost"//你的安装目录 ServerName localhost//服务名(域名) ServerAlias localhost//服务别名 ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On ProxyPassReverse / balancer://cluster/ </VirtualHost> 其中的域名和路径根据你自己情况设置 然后再设置TOMCAT虚拟主机 2 配置 tomcat 2.1. 配置 server 的关闭 我们需要在一台机器上跑 4 个不同的 tomcat ,需要修改不同的 tomcat 的关闭口,避免出现端口被占用的情况。在 TomcatA\conf, TomcatB\conf, TomcatC\conf下和 TomcatD\conf下的 server.xml 中找到 server, 将: <Server port="8005" shutdown="SHUTDOWN"> 改为 <Server port="XXXX" shutdown="SHUTDOWN"> XXXX 在这里表示不同的端口:我的其它四个 tomcat 分别使用 9006,9007,9008 , 9009 2.2. 配置 Engine 把原来的配置注释掉,把下面一句去掉注释。并标明jvmRoute="jvm2". <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2"> 以下是原来的配置。 <!-- <Engine name="Catalina" defaultHost="localhost"> --> 其他(tomcat6.02和tomcat6.03)也要同样 配置。注意:jvmRoute配置不要一样。 <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm3"> <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm4"> 2.3. 配置 Connector 原来的默认配置。 <!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 这里是apachetomcat链接的关键,前台apache就是通过AJP协议与tomcat进行通信的,以完成负载均衡的作用。也可以用HTTP协议。大家注意它们是如何连接通信的,上面的红色部分(port="8009")就是连接的接口了。 把四个tomcat的<Connector port="XXX" />port分别改成与上面 <proxy balancer://cluster> #与tomcatA对应,route与<Engine jvmRoute="jvm1">对应。 BalancerMember ajp://127.0.0.1:9001 loadfactor=1 route=jvm1 #与tomcatB对应,route与<Engine jvmRoute="jvm2">对应。 BalancerMember ajp:// 127.0.0.1:9002 loadfactor=1 route=jvm2 #与tomcatC对应,route与<Engine jvmRoute="jvm3">对应。 BalancerMember ajp:// 127.0.0.1:9003 loadfactor=1 route=jvm3 #与tomcatD对应,route与<Engine jvmRoute="jvm4">对应。 BalancerMember ajp:// 127.0.0.1:9004 loadfactor=1 route=jvm4 </proxy> 中的端口对应, tomcatA改为 <Connector port="9001" protocol="AJP/1.3" redirectPort="8441" /> .tomcatB改为 <Connector port="9002" protocol="AJP/1.3" redirectPort="8442" /> tomcatC改为 <Connector port="9003" protocol="AJP/1.3" redirectPort="8443" /> tomcatD改为 <Connector port="9004" protocol="AJP/1.3" redirectPort="8444" /> <Connector executor="tomcatThreadPool" port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="9441" /> <Connector executor="tomcatThreadPool" port="8082" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="9442" /> <Connector executor="tomcatThreadPool" port="8083" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="9443" /> <Connector executor="tomcatThreadPool" port="8084" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="9444" /> 一定要与上面的一致。同时也要把redirectPort的值改成唯一的,确保四个tomcat的都不一样。 2.4.配置Cluster(每个tomcat中都要修改) 原来的配置。 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 修改为以下的代码:<Receiver port=”XX”/>port也要保证唯一性, tomcatA改为 <Receiver port="5001" .tomcatB改为 <Receiver port="5002" tomcatC改为<Receiver port="5003" tomcatD改为 <Receiver port="5004" 确保四个tomcat的都不一样。以下是tomcatA的内容红色部分,分别是5001,5002,5003,5004. <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6"> <Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" mapSendOptions="6"/> <!-- <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> --> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="5001" selectorTimeout="100" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster> 这个设置是主要用以tomcat的集群。 把解压缩版的tomcat6注册成服务并设置自启动 当然,这样注册出来的服务启动类型是手动的,如果想设置为开机自动启动,则需要修改 注册服务自启动: bin目录下的service.bat文件 打开此文件,在倒数第三行左右的那句输出 echo The service '%SERVICE_NAME%' has been installed. 这句是输出服务安装成功,在这之前加一句 sc config %SERVICE_NAME% start= auto 就OK了,以后开机后tomcat服务就自动启动了 注册服务: 首先,在开始->运行中敲cmd,进入MS-DOS界面 cd 到tomcat的bin目录下 运行命令service install TomcatA 就可以把tomcat注册成系统服务了,服务的名称是TomcatA 删除服务运行 service uninstall TomcatA 就可以了 四、启动服务,测试tomcat自带的例子 1、测试apachetomcat协作。 先在每个tomcat中的\webapps\ROOT下的index.jsp下面加上以下的测试代码部分:(X代表不同的tomcat的输出不同的信息),把index.html删除,以免影响测试效果。在最后面的加上.即</table></body>之间。 <% System.out.println("tomcat6.0X deal with request"); %> 然后再通过http://localhost来访问一下,就会出现大家熟悉的猫猫。 然后再通过分别访问 http:// 127.0.0.1:8081, http:// 127.0.0.1:8082, http:// 127.0.0.1:8083, http:// 127.0.0.1:8084 它们访问的内容和上面的http:// 127.0.0.1是一样的。 这样就说明apacheTOMCAT整合成功! 这样就说明apacheTOMCAT整合成功! 2、测试均衡器 通过http:// 127.0.0.1多次访问,要想看到真正的效果,必须用一些压力测试工具,可用微软Microsoft Web Application Stress Tool进行简单压力测试,不然你靠不停刷新是体现不出来的,你只会在一个tomcat的控制台有输出结果。只用用压力测试工具模拟大量用户同时访问,你会发现四个tomcat控制台均有打出控制信息,说明均衡器工作正常。 3、测试Session复制 访问url: http://localhost/examples/servlet/SessionExample 可以得到一个关于session的例子,我们用它来测试集群的错误恢复能力。 测试步骤如下: 关闭tomcat1和tomcat2; 启动tomcat1 在浏览器中输入属性名tomcat1和属性值tomcat1再提交,返回的页面显示session中有刚刚输入的tomcat1属性; 启动tomcat2; 过一会后(等待tomcat2和tomcat1通信并复制信息)关闭tomcat1; 在浏览器中输入属性名tomcat2和属性值tomcat2再提交,返回的页面显示session中有刚刚输入的tomcat2属性,还有先前输入的tomcat1属性; 启动tomcat1; 过一会后(等待tomcat2和tomcat1通信并复制信息)关闭tomcat2; 在浏览器中输入属性名tomcat11和属性值tomcat11再提交,返回的页面显示session中有刚刚输入的tomcat11属性,还有先前输入的tomcat1和tomcat2属性; 域名绑定与虚拟目录设置: server.xml 的修改方式如下: (一)多域名绑定 2.接下来就是重点了哈哈... 单个域名绑定: 原始: <Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" /> </Engine> 当然这里我把注释代码统统删除掉了,省的碍眼 修改后: <Host name="chengqun.202.71one.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="/" docBase="d:\wwwroot\chengqun"></Context> </Host> <Host name="chengqun1.202.71one.com" debug="0" appBase=" webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="/" docBase="d:\wwwroot\chengqun1"></Context> </Host> 多域名绑定: <Host name="chengqun.202.71one.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Alias>chengqun.202.71one.com</Alias> <Alias>chengqun1.202.71one.com</Alias> <Alias>chengqun2.202.71one.com</Alias> <Context path="/" docBase="d:\ EDirectSalesroot "></Context> </Host> 虚拟目录d:\ EDirectSalesroot的目录下建立WEB-INF 目录,再将…Tomcat 6.0\webapps\ROOT\WEB-INF 目录中的web.xml 文件拷贝到虚拟目录下建立WEB-INF 子目录中.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值