5月24中间件—整合Apache、tomcat、Nginx

Apache、tomcat、Nginx

Apache:是一个web服务器,解析php服务、有php组件作为php容器、请求容器需要有连接数,最大连接数|最小连接数,有多少人可以连接超过了就得排队。

Apache重点

1、安装yum  -y  install  httpd

2、修改配置文件—/etc/httpd/conf/httpd.conf

3、监控—配置status状态在网页上查看各个状态。

4、调优—工作模式、最大、最小连接数、生命周期。

修改配置文件路径:/etc/httpd/conf/httpd.conf。修改工作模式—修改里面的最大最小进程、端口号。

开源配置文件一般是模板提供一些基础的、还有一些路径。

工作模式:worker、Prefork,优化就是改成worker工作模式1:n

两种切换工作模式—yum安装

cd /usr/sbin

ls  httpd.*

./httpd Tab

./httpd  -V  查看工作模式

 

工作模式介绍

prefork:进程数

Worker模式优缺点

优点:占据更少的内存,高并发下表现更优秀。

缺点:必须考虑线程安全的问题,因为多个子线程是共享父进程的内存地址的。如果使用keep-alive的长连接方式,也许中间几乎没有请求,这时就会发生阻塞,线程被挂起,需要一直等待到超时才会被释放。如果过多的线程,被这样占据,也会导致在高并发场景下的无服务线程可用。

优化方法:工作模式改成worker模式—提高支持我们的线程数。把每个进程支持的线程提高,前提确定cpu能够处理。

Prefork:多进程模式、一个进程对应一个线程,进程超过最大空闲值时,如果服务器进程满了再来请求如何处理(排队等待)等待超时或者处理完了、排队的就可以使用。

长链接:例如视频和聊天

注意:进程不能全部打满、这样影响cpu运行、占用内存

Max:最大空闲数超过了就杀死进程

Min:最小空闲数小于了就重启进程

ServerLimit256  支持最大的并发256超过了就排队

MaxClient256   支持最大的并发256超过了就排队

MaxRequestsPerChild:4000 防止内存溢出

Worker:多进程多线程—一个进程能启动多个线程1:n缺点:线程公用进程内存,如果一个线程蹦了会导致进程下的所有线程崩。

cd   /opt/lampp/etc/extra

Vim   httpd-mpm.conf  

1、启动多少个进程

2、最小多少空闲个线程

3、最大多少空闲个线程

4、ThreadsPerChild:一个线程启动多少个线程数

5、MaxRequestWorkers:每个进程接收多少个请求

6、MaxConnectionPerChild:长链接、生命周期

换算:MinspareThreads < StartServers*ThreadsPerChild > MaxRequestWorkers

如果小于最小线程数就启动进程、如果大于最小线程数就杀死进程

优化目的:

同一时间处理请求数多了排队的就少了—客户端发送请求立马请求不用排队、还要看看有没有长链接情况

监控

启动失败

Apache判断进程是否存在根据pid进行判断—pid进程号杀死进程号、再看端口号是否冲突

Tomcat

1、安装—解压安装包

2、配置—修改端口号(shutdown 端口号8005、http请求8080、ajp8009)

3、监控—tomcat_user.xml 修改用户名和密码然后点击查看状态。访问ip:8080    页面server status按钮、页面可以看到线程数。。。。jvm后期用图形化工具来看

4、调优—修改配置文件/opt/apache-tomcat-8.5.41/conf/server.xml

java项目

1、war包放到 webapps里

2、配置文件*.properties    查找find ./|grep properties

 

Nginx

1、安装

1、安装依赖环境

yum -y install gcc automake autoconf libtool make

yum -y install gcc gcc-c++  pcre-devel openssl openssl-devel

2、安装pcrezlib,前者为了重写rewrite,后者为了gzip压缩。

    解压后切换到对应的目录

[root@localhost ~]# tar -zxvf pcre-8.41.tar.gz  

[root@localhost pcre-8.41]# ./configure --prefix=/usr/local/pcre

[root@localhost pcre-8.41]# ./configure --prefix=/usr/local/zlib

[root@localhost pcre-8.41]# make && make install

3、安装openssl—这个不需要编译安装

下载文件里有此安装包—只需要解压即可

[root@localhost ~]# tar -zxvf openssl-1.0.1t.tar.gz

4Nginx安装

下载地址:http://nginx.org/en/download.html

[root@localhost ~]# tar -xvf nginx-1.13.8.tar

[root@localhostnginx-1.13.8]#./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_stub_status_module

[root@localhost nginx-1.13.8]#make && make install

5、启动

/usr/local/nginx

./nginx

 

查看配置文件

vi nginx.conf

修改哪个位置要看好

状态配置

yum安装 --但是yum源容易变化

yum  -y  install  wget

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

yum makecache

yum  -y  install  nginx

启动nginx:service   nginx   start

修改端口号—配置文件位置:vi     /etc/nginx/conf.d/default.conf

 

转载于:https://www.cnblogs.com/njq666/p/10919859.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值