install_apache_tomcat

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介:

1、安装tomcat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
yum  install  -y java-1.7.0-openjdk
tar  zxf apache-tomcat-7.0.65. tar .gz -C  /usr/local/
cd  /usr/local/
ln  -s apache-tomcat-7.0.65/ tomcat
vim  /etc/profile .d /tomcat .sh
     export  CATALINA_HOME= /usr/local/tomcat
     export  PATH=$PATH:$CATALINA_HOME /bin
/etc/profile .d /tomcat .sh 
vim  /etc/init .d /tomcat
     #!/bin/sh
     # Tomcat init script for Linux.
     #
     # chkconfig: 2345 96 14
     # description: The Apache Tomcat servlet/JSP container.
     JAVA_OPTS= '-Xms64m -Xmx128m'
     JAVA_HOME= /usr
     CATALINA_HOME= /usr/local/tomcat
     export  JAVA_HOME CATALINA_HOME
     exec  $CATALINA_HOME /bin/catalina .sh $*
chmod  +x  /etc/init .d /tomcat
chkconfig --add tomcat
service tomcat start


2、安装Apache

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
yum -y  install  gcc gcc-c++ openssl-devel pcre-devel
tar   xf  apr-1.4.6. tar .bz2
cd  apr-1.4.6
. /configure  --prefix= /usr/local/apr  --disable-ipv6
make  &&  make  install
tar  xf apr-util-1.4.1. tar .bz2
cd  apr-util-1.4.1
. /configure   --prefix= /usr/local/apr-util   --with-apr= /usr/local/apr
make  &&  make  install
tar  xf httpd-2.2.25. tar .bz2
cd  httpd-2.2.25
  . /configure  \
--prefix= /usr/local/apache  \
--sysconfdir= /etc/httpd  \
-- enable -so \
-- enable -ssl \
-- enable -cgi \
-- enable -rewrite \
--with-zlib \
--with-pcre \
--with-apr= /usr/local/apr  \
--with-apr-util= /usr/local/apr-util  \
-- enable -mpms-shared=all \
--with-mpm=event \
-- enable -proxy \
-- enable -proxy-http \
-- enable -proxy-ajp \
-- enable -proxy-balancer  \
-- enable -lbmethod-heartbeat \
-- enable -heartbeat \
-- enable -slotmem-shm \
-- enable -slotmem-plain \
-- enable -watchdog
make  &&  make  install
cp  build /rpm/httpd .init  /etc/init .d /httpd
vim  /etc/init .d /httpd
httpd=${HTTPD- /usr/local/apache/bin/httpd }
pidfile=${PIDFILE- /usr/local/apache/logs/ ${prog}.pid}
lockfile=${LOCKFILE- /var/lock/subsys/ ${prog}}
RETVAL=0
# check for 1.3 configuration
check13 () {
         CONFFILE= /etc/httpd/httpd .conf
  echo  "PATH=/usr/local/apache/bin:$PATH"  >>  /etc/profile .d /http .sh
/etc/profile .d /http .sh
ln  -s  /usr/local/apache/include/  /usr/include/httpd
vim  /etc/httpd/httpd .conf
     LoadModule slotmem_shm_module modules /mod_slotmem_shm .so
     ServerName localhost:80
chkconfig --add httpd
service httpd start

3、配置Apache使用mod_jk模块实现代理及负载均衡

######修改Apache主配置文件,包含一个文件并创建该文件;实现代理功能

将下面指令添加到文件末尾即可

1
2
# vim /etc/httpd/httpd.conf
Include  /etc/httpd/extra/mod_jk .conf

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

创建文件添加如下内容

1
2
3
4
5
6
7
# vim /etc/httpd/extra/mod_jk.conf
LoadModule  jk_module  modules /mod_jk .so
JkWorkersFile   /etc/httpd/extra/workers .properties
JkLogFile  logs /mod_jk .log
JkLogLevel  debug
JkMount  /*  TomcatA
JkMount   /status/   stat1

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

1
2
3
4
5
6
7
# vim /etc/httpd/extra/workers.properties
worker.list=TomcatA,stat1
worker.TomcatA.port=8009
worker.TomcatA.host=172.16.14.3
worker.TomcatA. type =ajp13
worker.TomcatA.lbfactor=1
worker.stat1. type  = status

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
# service httpd restart
######修改后端Tomcat1服务器,添加一个虚拟主机并提供测试页面
[root@Tomcat1 ~] # cd /usr/local/tomcat/conf/
[root@Tomcat1 conf] # cp server.xml server.xml.bak
[root@Tomcat1 conf] # vim server.xml
######修改如下内容
<Engine name= "Catalina"  defaultHost= "www.jsprun.com"  jvmRoute= "TomcatA" >
######在"Engine"中添加如下内容
<Host name= "www.jsprun.com"   appBase= "/jsprun"
             unpackWARs= "true"  autoDeploy= "true" >
         <Valve className= "org.apache.catalina.valves.AccessLogValve" 
directory= "logs"
                prefix= "jsprun_access_log."  suffix= ".txt"
                pattern= "%h %l %u %t &quot;%r&quot; %s %b"  />
         <Context path= ""  docBase= "/jsprun"  />
       < /Host >
----------------------------------------------------------------------
######创建网站存放目录并创建测试页
[root@Tomcat1 ~] # mkdir /jsprun
[root@Tomcat1 ~] # vim /jsprun/index.jsp
<%@ page language= "java"  %>
<html>
   < head ><title>TomcatA< /title >< /head >
   <body>
     <h1><font color= "red" >TomcatA < /font >< /h1 >
     <table align= "centre"  border= "1" >
       < tr >
         <td>Session ID< /td >
     <% session.setAttribute( "abc" , "abc" ); %>
         <td><%= session.getId() %>< /td >
       < /tr >
       < tr >
         <td>Created on< /td >
         <td><%= session.getCreationTime() %>< /td >
      < /tr >
     < /table >
   < /body >
< /html >
----------------------------------------------------------------------
######修改Apache配置文件(mod_jk.conf、workers.properties);实现负载均衡
# vim /etc/httpd/extra/mod_jk.conf
LoadModule  jk_module  modules /mod_jk .so
JkWorkersFile   /etc/httpd/extra/workers .properties
JkLogFile  logs /mod_jk .log
JkLogLevel  debug
JkMount  /*  lbcluster
JkMount   /status/   stat1
------------------------------------------------------------------------
# vim /etc/httpd/extra/workers.properties
worker.list=lbcluster,stat1
worker.TomcatA.port=8009
worker.TomcatA.host=172.16.14.3
worker.TomcatA. type =ajp13
worker.TomcatA.lbfactor=1
worker.TomcatB.port = 8009
worker.TomcatB.host=172.16.14.4
worker.TomcatB. type  = ajp13
worker.TomcatB.lbfactor = 1
worker.lbcluster. type  = lb
worker.lbcluster.sticky_session = 0   #取值为{1|0}1将用户session与后端服务器绑定,0
为不绑定,如果支持session复制或session共享可以设置为0
worker.lbcluster.balance_workers = TomcatA, TomcatB
worker.stat1. type  = status
----------------------------------------------------------------------
# service httpd reload
######修改后端Tomcat2服务器,添加一个虚拟主机并提供测试页面
[root@Tomcat2 ~] # cd /usr/local/tomcat/conf/
[root@Tomcat2 conf] # cp server.xml server.xml.bak
[root@Tomcat2 conf] # vim server.xml
######修改如下内容
<Engine name= "Catalina"  defaultHost= "www.jsprun.com"  jvmRoute= "TomcatB" >
######在"Engine"中添加如下内容
<Host name= "www.jsprun.com"   appBase= "/jsprun"
             unpackWARs= "true"  autoDeploy= "true" >
         <Valve className= "org.apache.catalina.valves.AccessLogValve" 
directory= "logs"
                prefix= "jsprun_access_log."  suffix= ".txt"
                pattern= "%h %l %u %t &quot;%r&quot; %s %b"  />
         <Context path= ""  docBase= "/jsprun"  />
       < /Host >
----------------------------------------------------------------------
######创建网站存放目录并创建测试页
[root@Tomcat2 ~] # mkdir /jsprun
[root@Tomcat2 ~] # vim /jsprun/index.jsp
<%@ page language= "java"  %>
<html>
   < head ><title>TomcatB< /title >< /head >
   <body>
     <h1><font color= "blue" >TomcatB < /font >< /h1 >
     <table align= "centre"  border= "1" >
       < tr >
         <td>Session ID< /td >
     <% session.setAttribute( "abc" , "abc" ); %>
         <td><%= session.getId() %>< /td >
       < /tr >
       < tr >
         <td>Created on< /td >
         <td><%= session.getCreationTime() %>< /td >
      < /tr >
     < /table >
   < /body >
< /html >
4、配置Apache基于mod_proxy模块实现代理及负载均衡
######修改Apache的主配置文件,包含一个文件并创建该文件;实现代理功能
# vim /etc/httpd/httpd.conf
#Include /etc/httpd/extra/mod_jk.conf    #注释此行
Include  /etc/httpd/extra/mod_proxy .conf
------------------------------------------------------------------------
# vim /etc/httpd/extra/mod_proxy.conf
ProxyVia On
ProxyRequests Off
ProxyPreserveHost Off
<Proxy *>
   Order allow,deny
   Allow from all
< /Proxy >
   ProxyPass  /  ajp: //172 .16.14.3:8009/
   ProxyPassReverse  /  ajp: //172 .16.14.3:8009/
<Location  / >
   Order allow,deny
   Allow from all
< /Location >
----------------------------------------------------------------------
# service httpd reload
=====================================================
=================
注释:
   ProxyPass  /  ajp: //172 .16.14.3:8009/     #使用的是ajp协议
   ProxyPassReverse  /  ajp: //172 .16.14.3:8009/
可以更改为使用http协议;如下
   ProxyPass  /  http: //172 .16.14.3:8080/
   ProxyPassReverse  /  http: //172 .16.14.3:8080/
######这里只演示使用ajp协议,如果是Apache与Tomcat结合建议使用ajp协议
######修改Apache配置文件(mod_proxy.conf);实现负载均衡
# vim /etc/httpd/extra/mod_proxy.conf
ProxyVia Off
ProxyRequests Off
ProxyPreserveHost Off
<Proxy balancer: //allen >
   BalancerMember ajp: //172 .16.14.3:8009 loadfactor=1
   BalancerMember ajp: //172 .16.14.4:8009 loadfactor=1
   ProxySet lbmethod=bytraffic
< /Proxy >
<Location  /allen >     #设置状态及管理页面
   SetHandler balancer-manager
   Proxypass !
   Order allow,deny
   Allow from all
< /Location >
<Proxy *>
   Order allow,deny
   Allow from all
< /Proxy >
   ProxyPass  /  balancer: //allen/     stickysession=JSESSIONID
   ProxyPassReverse  /  balancer: //allen/
<Location  / >
   Order allow,deny
   Allow from all
< /Location >
----------------------------------------------------------------------
注释:
   BalancerMember ajp: //172 .16.14.3:8009 loadfactor=1   #使用ajp协议
   BalancerMember ajp: //172 .16.14.4:8009 loadfactor=1
可更改为使用http协议
   BalancerMember http: //172 .16.14.3:8080 loadfactor=1
   BalancerMember http: //172 .16.14.4:8080 loadfactor=1
######这里只介绍使用ajp协议,如果有兴趣可以更改一下;loadfactor:权重
----------------------------------------------------------------------
ProxySet lbmethod=bytraffic     #设置调度算法
byrequests:即基于权重将统计请求个数进行调度(默认)
bytraffic:则执行基于权重的流量计数调度
bybusyness:通过考量每个后端服务器的当前负载进行调度
----------------------------------------------------------------------
# service httpd reload
5、论坛安装
######在Tomcat1服务器上安装
# unzip JspRun\!_6.0.0_GBK.zip
# mv /web/allen/index.jsp /web/allen/test.jsp
# cp -r upload/* /web/allen/
------------------------------------------------------------------------
修改论坛数据库连接文件
# vim /web/allen/config.properties
dbhost = 172.16.14.5
dbport=3306
dbuser = bbsuser
dbpw = bbspass
dbname = bbs
------------------------------------------------------------------------
# catalina.sh stop
# catalina.sh start
######安装论坛程序
http: //172 .16.14.1 /install .jsp
######将论坛程序拷贝到Tomcat2服务器上一份并访问测试
# mv /web/allen/index.jsp /web/allen/test.jsp    #把原来的测试页重命名
------------------------------------------------------------------------
# scp -r 172.16.14.3:/web/allen/* /web/allen/
# catalina.sh stop
# catalina.sh start
6、安装并配置Keepalived
######将Apache1服务器的Httpd配置文件复制到Apache2服务器
[root@Apache1 ~] # cd /etc/httpd/
[root@Apache1 httpd] # scp httpd.conf 172.16.14.2:/etc/httpd/
[root@Apache1 httpd] # cd extra/
[root@Apache1 extra] # scp mod_jk.conf mod_proxy.conf workers.properties 
172.16.14.2: /etc/httpd/extra/
######在Apache1与Apache2服务器上安装Keepalived;这里使用rpm包安装,光
盘映像中有
[root@Apache1 ~] # yum -y install keepalived
--------------------------------------------
[root@Apache2 ~] # yum -y install keepalived
######配置Apache1服务器上的Keepalived
[root@Apache1 ~] # vim /etc/keepalived/keepalived.conf
! Configuration File  for  keepalived
global_defs {
    notification_email {
    root@localhost
    }
    notification_email_from admin@allen.com
    smtp_server 172.16.0.0
    smtp_connect_timeout 30
    router_id LVS_ALLEN
}
vrrp_script chk_httpd {
     script  "killall -0 httpd"
     interval 1
     weight -2
}
vrrp_instance httpd_1 {
     state MASTER
     interface eth0
     virtual_router_id 58
     priority 100
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1058
     }
     virtual_ipaddress {
     172.16.14.10
     }
     track_script {
     chk_httpd
     }
}
[root@Apache1 ~] # service keepalived start
[root@Apache1 ~] # chkconfig keepalived on
[root@Apache1 ~] # chkconfig --list keepalived
keepalived      0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@Apache1 ~] # ip addr show eth0
######配置Apache2服务器上的Keepalived
[root@Apache2 ~] # vim /etc/keepalived/keepalived.conf
! Configuration File  for  keepalived
global_defs {
    notification_email {
    root@localhost
    }
    notification_email_from admin@allen.com
    smtp_server 172.16.0.0
    smtp_connect_timeout 30
    router_id LVS_ALLEN
}
vrrp_script chk_httpd {
     script  "killall -0 httpd"
     interval 1
     weight -2
}
vrrp_instance httpd_1 {
     state BACKUP
     interface eth0
     virtual_router_id 58
     priority 99
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1058
     }
     virtual_ipaddress {
     172.16.14.10
     }
     track_script {
     chk_httpd
     }
}
[root@Apache2 ~] # service keepalived start
[root@Apache2 ~] # chkconfig --list keepalived
keepalived      0:off   1:off   2:on    3:on    4:on    5:on    6:off
######模拟前端一台服务器出现故障;查看虚拟IP是否转移
######停止Apache1服务器上的Httpd服务来模拟故障;并查看IP
[root@Apache1 ~] # service httpd stop
[root@Apache1 ~] # ip addr show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state 


UP qlen 1000

    link/ether 00:0c:29:2c:1a:24 brd ff:ff:ff:ff:ff:ff

    inet 172.16.14.1/16 brd 172.16.255.255 scope global eth0

    inet6 fe80::20c:29ff:fe2c:1a24/64 scope link

       valid_lft forever preferred_lft forever

=====================================================


===================

######查看Apache2服务器上的IP

[root@Apache2 ~]# ip addr show eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state 


UP qlen 1000

    link/ether 00:0c:29:ec:f6:3f brd ff:ff:ff:ff:ff:ff

    inet 172.16.14.2/16 brd 172.16.255.255 scope global eth0

    inet 172.16.14.10/32 scope global eth0

    inet6 fe80::20c:29ff:feec:f63f/64 scope link

       valid_lft forever preferred_lft forever

######从上一步可以看出,虚拟IP地址已成功转移,说明还能正常提供服务,可以


再次访问测试;如果服务器修复好重新上线,虚拟IP还会转移回去;这里就不再测试




 本文转自1321385590 51CTO博客,原文链接:http://blog.51cto.com/linux10000/1717537,如需转载请自行联系原作者




相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
2月前
|
算法 安全 网络安全
https 的加密过程
HTTPS通过SSL/TLS协议实现安全通信,结合非对称加密与对称加密技术。客户端与服务器协商加密套件,验证证书后生成主密钥用于后续数据加密传输,确保身份真实、数据保密与完整。
1328 1
|
2天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1084 0
|
11天前
|
人工智能 运维 安全
|
1天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
369 0
|
10天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
2天前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
275 0
|
9天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
776 23
|
2天前
|
缓存 供应链 监控
VVIC seller_search 排行榜搜索接口深度分析及 Python 实现
VVIC搜款网seller_search接口提供服装批发市场的商品及商家排行榜数据,涵盖热销榜、销量排名、类目趋势等,支持多维度筛选与数据分析,助力选品决策、竞品分析与市场预测,为服装供应链提供有力数据支撑。