在阿里云服务器上部署项目的时候,想使用阿里云提供的负载均衡服务并创建两个监听(如图),

但需要一台服务器提供两个端口,于是就请教前辈并查询资料,得知:

一台服务器提供两个端口,有两种方式:

1、一个tomcat,开放两个端口;

2、两个tomcat,各运行一个项目,提供两个端口。

后者性能更好一些。于是,就查询实现linux服务器上同时运行两个或多个tomcat的方式,下面以同时运行两个tomcat为例介绍,具体实现如下:

第一步:搭建JDK环境

首先搭建JDK环境,下载JDK,然后解压,如:tar -zvxf  jdk-6u18-ea-bin-b01-linux-i586-20.gz(JDK压缩包)

解压后,配置环境变量。

linux中,环境变量是在 /etc/profile 中修改文件。

如:

#vi /etc/profile

进入文件后,按 ‘ i ’ 键,进入编辑状态;

//在最末尾添加,注意,其中的‘:’是冒号,不是分号。

JAVA_HOME=/usr/local/jdk1.6

JRE_HOME=$JAVA_HOME/jre

PATH=$PATH:$JAVA_HOME/bin

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib

export JAVA_HOME PATHCLASSPATH TOMCAT_HOME

//添加以上代码后,直接 ctrl + C  ,输入:wq  (冒号), 回车保存就行了

然后加载刚刚配置的环境变量,命令如下:

# source   /etc/profile

验证JDK是否安装成功,在命令行,输入java -version

回车,若打印出JDK版本,则OK!

第二步:下载安装tomcat

下载tomcat到服务器中,并解压到文件夹,如/root/tomcat1.

再复制一份tomcat压缩包,解压到 /root/tomcat2;

这就服务器上就有两个tomcat了,然后我们开始下一步。

第三步:配置tomcat环境变量(重点)

同样是操作/etc/profile 文件。

#vi  /etc/profile

然后在文件最后一行,即刚刚添加JDK环境变量的后边添加如下配置:

#tomcat1
export CATALINA_HOME=/root/tomcat1/apache-tomcat-7.0.68
export CATALINA_BASE=/root/tomcat1/apache-tomcat-7.0.68
export TOMCAT_HOME=/root/tomcat1/apache-tomcat-7.0.68

#tomcat2
export CATALINA_HOME2=/root/tomcat2/apache-tomcat-7.0.68
export CATALINA_BASE2=/root/tomcat2/apache-tomcat-7.0.68
export TOMCAT_HOME2=/root/tomcat2/apache-tomcat-7.0.68

(注意:tomcat2中的配置命名)

添加后,ctrl+C, 然后命令行输入 :wq ,保存退出。

加载环境变量,命名行#  source   /etc/profile

配置成功!

第四步:修改tomcat2中的server.xml文件(重点)

修改 tomcat2/apache-tomcat-7.0.68/conf/server.xml  文件。这个地方是更改端口,共三处,如下:

  <Server port="8005" shutdown="SHUTDOWN">     默认为8005--》修改为8006

   <!--APR library loader. Documentation at /docs/apr.html -->
    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
    <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->

  .........

<Connector port="8080" protocol="HTTP/1.1"    默认为8080--》修改为8081 

connectionTimeout="20000" 
               redirectPort="8443" />

  ........

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />      默认为8009--》修改为8010

  第五步:修改tomcat2中的startup.sh 和 shutdown.sh文件(重点)

修改 tomcat2/apache-tomcat-7.0.68/bin 中的 startup.sh 和 shutdown.sh 两个文件,分别在其中添加如下内容:

//为了方便定位位置,加了上下的注释内容

# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------

export JAVA_HOME=/root/jdk1.8.0_161
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/bin
export CATALINA_HOME=$CATALINA_HOME2
export CATALINA_BASE=$CATALINA_BASE2

# Better OS/400 detection: see Bugzilla 31132

添加完成后,保存退出即可。

最后:检验成果

分别启动两个tomcat中的 /bin/startup.sh ,然后打开浏览器访问测试。http://ip / 端口(server.xml中配置的端口) ,两个端口都可以成功访问即可。

剩下的就是将项目拷贝一份,分别部署到两个tomcat中,启动运行!

如:

linux服务器上部署项目,同时运行两个或多个tomcat的更多相关文章

  1. nodejs在同一台服务器上部署并同时运行两个或以上服务端时,一个服务用户登录后会挤掉另一个用户的问题

    问题描述:一台服务器,部署了两个或以上不同的Web服务,服务A的用户在登陆后,服务B的用户也登陆,此时服务A的用户在点击页面时,会返回登陆页面. 问题根源:浏览器保存的session相同,即cooki ...

  2. linux的tomcat服务器上部署项目的方法

    在tomcat服务器上部署项目的前提,是我们已经准备好了tomcat服务器.在CentOs环境下部署JavaWeb环境,部署tomcat服务器在前面的文章中已经总结过了,可以参考以前文章. 一  to ...

  3. 如何在Linux服务器上部署禅道

    最近换了新的项目团队,由于新团队比较年轻化,没有实行正规的项目管理,于是我自告奋勇要为团队管理出一份力,帮助团队建立敏捷化的项目管理,经过多方考究和对比后,选择了目前较受欢迎的开源项目管理软件:禅道. ...

  4. Django项目在Linux服务器上部署和躺过的坑

    引言 在各方的推荐下,领导让我在测试环境部署之前开发的测试数据预报平台.那么问题来了,既然要在服务器上部署, 就需要准备: 1.linux服务器配置 2.linux安装python环境搭建与配置 3. ...

  5. 如何在Linux服务器上部署Mysql

    一.安装mysql 1.通过文件上传工具,将mysql安装包上传到linux服务器上 2.卸载mariadb包,由于系统中存在mariadb包会导致mysql安装时报错mariadb-libs被mys ...

  6. 在Linux服务器上部署node项目(git部署,forever持续运行,配置SSL证书)

    一.环境部署 1.下载安装包: wget https://nodejs.org/dist/v9.9.0/node-v9.9.0-linux-x64.tar.xz 2.解压并进入目录: xz -d no ...

  7. linux服务器上部署springboot项目,并让他持续运行到后台

    我们知道在运行springboot 项目只需要java -jar + 项目的war包(jar包)名. 但是只要终端已停止那么服务就会被关闭,也就无法访问到我们的项目了.所以我们可以使用守护进程的方式来 ...

  8. 零基础在Linux服务器上部署javaweb项目

    本教程使用的工具下载链接:http://pan.baidu.com/s/1sl1qz2P 密码:43pj 一.安装JDK 1.首先要查看服务器的系统版本,是32位还是64位 #getconf LONG ...

  9. linux服务器上部署jdk+tomcat+rocketmq+redis-cluster

    通常我们拿到一组干净的linux服务器,需要初始化安装一些基础软件,这里一站式介绍部署jdk+tomcat+rocketmq+redis-cluster 前言:如果要在多台服务器上安装,在一台服务器上 ...

随机推荐

  1. 【翻译】在Ext JS 6通用应用程序中使用既共享又特定于视图的代码

    原文:Using Both Shared and View-Specific Code in an Ext JS 6 Universal App 在本文,在展示如何编写Ext JS 6通用应用程序代码 ...

  2. UNIX环境高级编程——管道和FIFO的额外属性

    一个描述符能以两种方式设置成非阻塞. (1)调用open时可以指定O_NONBLOCK标志. writefd = open(FIFO1,O_WRONLY | O_NONBLOCK,0); (2)如果一 ...

  3. GROUP BY 的实现与优化

    由于GROUP BY实际上也同样需要进行排序操作,而且与ORDER BY相比,GROUP BY主要只是多了排序之后的分组操作.当然,如果在分组的时候还使用了其他的一些聚合函数,那么还需要一些聚合函数的 ...

  4. 关于React Native 火热的话题,从入门到原理

    本文授权转载,作者:bestswifter(简书) React Native 是最近非常火的一个话题,介绍如何利用 React Native 进行开发的文章和书籍多如牛毛,但面向入门水平并介绍它工作原 ...

  5. Swing中经常会遇到的若干问题——JTable(持续更新)

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/40955213 (1)让组件在屏幕中央显示 public s ...

  6. Java 8时间和日期API 20例

    本文由 ImportNew - Sandy 翻译自 javarevisited.欢迎加入翻译小组.转载请见文末要求. 伴随lambda表达式.streams以及一系列小优化,Java 8 推出了全新的 ...

  7. Linux IPC实践(3) --具名FIFO

    FIFO具名/命名管道 (匿名)管道应用的一个限制就是只能在具有共同祖先(具有亲缘关系)的进程间通信. 如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,它经常被称为命名管道;命 ...

  8. github管理的建立(SSH Key生成步骤)

    Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...

  9. AngularJS进阶(三十一)AngularJS项目开发技巧之获取模态对话框中的组件ID

    AngularJS项目开发技巧之获取模态对话框中的组件ID 需求 出于项目开发需求,需要实现的业务逻辑是:药店端点击查看"已发货""已收货"订单详情时,模块弹出 ...

  10. Android StringEntity() 和 UrlEncodedFormEntity() 的区别

    今天在做安卓客户端向服务器提交数据的过程中,在组织POST数据时,用了UrlEncodedFormEntity()这个方法,但是后台报错,说是无法解析json内容. 按照本来的想法,向后台发送的是 j ...