2KB项目,专业的源码交易网站 帮助 收藏 每日签到

如何在 OpenShift 上运行 Apache Tomcat 8

  • 时间:2019-01-23 18:40 编辑:2KB 来源:2KB.COM 阅读:412
  • 扫一扫,手机访问
  • 分享
摘要:
OpenShift Tomcat 英文原文:How To Run Apache Tomcat 8 on OpenShift

Redhat公司推出了OpenShift服务。开发者可以在OpenShift上面尝试新的框架,编程语言或者服务器。当我在学习 WebSockets的时候了解到目前Apache Tomcat 8已经支持 JSR356规范。JSR356是Java下WebSockets的标准API规范。尽管Apache Tomcat 7 也支持WebSockets,但是它用的是它自己的专有API。所以我想尝试一下基于JSR356标准支持WebSockets的Apahce Tomcat 8。我决定把它安装在OpenShift上而不是在我本地的开发机上。在这篇文章中,我将会一步一步的展示如何在OpenShift上运行Apche Tomcat 8。

Apache Tomcat 8支持了JavaEE 7的许多特性,比如(Servlet3.1,JSP2.3,Expression language 3.0还有其他tomcat所特有的功能)。目前还没有很多关于Apache Tomcat 8 新特性的文档,但我发现了 这个幻灯片。

OpenShift 已经集成了 Tomcat6, Tomcat7 , JBoss AS7 JBoss EAP6等Java服务器。你也可以通过DIY来运行 JettyGlassFish,OpenShift 还提供了 Jenkins来支持服务器持续集成。

预备条件

在我们开始创建这个应用以前,我们必须要做一些设置任务:

  1. 注册一个 OpenShift Account。它是完全免费的,而且Red Hat给每个用户提供三个免费的Gears,以便在其上运行应用。(译注:Gears 一系列资源的容器,允许用户在其中运行应用)在本文撰写的时候, 分配给每个用户的综合资源是1.5 GB内存和 3 GB磁盘空间。

  2. 在你的机器上安装 rhc client tool 。  rhc是 ruby的精华,因此你的机器需要有ruby 1.8.7 或更高版本。要安装 rhc, 只需敲入

sudo gem install rhc

如果你已经有了一个,请确保它是最新的一个。要升级rhc,执行下面的命令。

sudo gem update rhc

关于安装rhc命令行工具的额外帮助,请看下面的网页:
https://openshift.redhat.com/community/developers/rhc-client-tools-install.

  1. 用rhc创建命令,创建你的 OpenShift 帐号。这条命令将帮助你创建一个命名空间,并上传你的ssh密钥到OpenShift 服务器。

第一步:创建应用

我们从创建一个OpenShift DIY 应用开始。这个应用叫做tomcat8。DIY策略提供了一个可以尝试和测试不支持事物的沙箱。要了解更多关于DIY的信息,请点击这里。https://www.openshift.com/developers/do-it-yourself

$ rhc app create tomcat8 diy

这个命令将会为我们创建一个叫做gear的应用容器,并且初始化好所有所需的SELinux策略(译注:Linux下一种访问控制体系)和cgroup配置(译注:Linux的一种资源控制的机制)。OpenShift还将为你设置一个私有git仓库并且克隆这个仓库到你本地的系统上。最后OpenShift会将程序的DNS公开。该应用程序访问地址是http://tomcat8-domain-name.rhcloud.com/,其中domain-name可以替换为你想要的唯一域名。gear容器预装了Java7环境。

第二步:停掉应用

DIY应用默认运行在ruby服务器上。因为我们需要安装Tomcat 8,所以我们需要停掉它。

$ rhc app stop -a tomcat8
RESULT:
tomcat8 stopped

第三步:删除不想要的文件

Tomcat8 文件夹下的DIY文件夹中有两个文件,一个为简单ruby web服务器的定义文件,另一个为index.html文件。因为我们不需要用到ruby服务器,所以删掉吧。

$ cd tomcat8
$ rm diy/index.html 
$ rm diy/testrubyserver.rb

Windows用户请使用del而不是rm。

启动和停止ruby服务器的脚本在.openshift/action_hooks文件夹下,同样我们也不需要用到,我们将用新的文件取代他们。

$ rm .openshift/action_hooks/start 
$ rm .openshift/action_hooks/stop
$ touch .openshift/action_hooks/start
$ touch .openshift/action_hooks/stop

对于Windows用户来说,touch命令只会创建一个空白文本文件。当然你可以这样做,但是请确保文件最终在正确的目录下面。

第四步:提交修改

一旦我们删除了并且替换了启动和停止的脚本,我们需要提交这些更新到OpenShift应用,这样这些更新才能被应用。

$ git commit -am "deleted unwanted files and replaced start and stop scripts"
$ git push

第五步:SSH连接gear容器,下载Tomcat 8 源码

Apache Tomcat 8 现在还处于开发阶段,也没有试用版本,所以我们需要编译tomcat8源码。我们通过SSH连接到gear容器,按照如下的Tomcat git仓库地址将Tomcat源码拷贝下来。每个OpenShift gear容器都预装了git。下面的命令假定你已经在本地机器上进入到(译注:gear容器上)tomcat8的git仓库目录

$ rhc ssh -a tomcat8
$ cd $OPENSHIFT_DATA_DIR 
$ mkdir source
$ cd source/
$ git clone https://github.com/apache/tomcat.git
$ cd tomcat/

第六步:构建tomcat8源代码

Tomcat8的代码需要Ant去构建源代码。每个OpenShift应用的gear都是使用Ant安装的,所以你可以很容易地编译源代码。不过在我们做这些之前,我们需要做一些辅助工作。我们需要创建一个应该下载的Tomcat8依赖的二进制包存放的目录。这些二进制包是构建Tomcat8必须的。我们将把这些依赖下载到$OPENSHIFT_DATA_DIR/dependencies目录下。

$ cd $OPENSHIFT_DATA_DIR
$ mkdir dependencies
接着我们把build.properties.default重命名为build.properties。
$ cd $OPENSHIFT_DATA_DIR
$ cd source/tomcat
$ mv build.properties.default build.properties
更改build.properties里的base.path属性为依赖文件夹所在位置。
# ----- Default Base Path for Dependent Packages -----
# Please note this path must be absolute, not relative,
# as it is referenced with different working directory
# contexts by the various build scripts.
base.path=../../dependencies
然后我们需要删除部署目标里build-docs的依赖,因为它抛出了一个异常。
<target name="deploy" depends="package, build-tomcat-jdbc"
          description="Default. Builds a working Tomcat instance">
我捕捉到的异常下面将提到。如果有人知道如何修补这个异常,那么请在评论部分发布解决方法。我试图按照 stackoverflow问题里所提的建议给Ant路径增加ant-nodeps.jar,不过这不能解决这个问题。
[xslt] java.lang.ClassNotFoundException: org.apache.tools.ant.taskdefs.optional.TraXLiaison
现在,运行ant构建
$ ant clean
$ ant
这将花费3-4分钟才能结束。

第七步:拷贝tomcat8的执行包

构建完成之后,tomcat8的执行包就位于output/build文件夹。拷贝这个生成包到$OPENSHIFT_DATA_DIR里的Tomcat8文件夹。

$ cd $OPENSHIFT_DATA_DIR
$ mkdir tomcat8
$ cd tomcat8
$ cp -r ../source/tomcat/output/build/* .

现在所有的tomcat8相关的文件已经都在tomcat8文件夹里了。

第八步:修改server.xml

现在我们以及给你构建了tomcat源代码,并且包它拷贝到tomcat8文件夹里了,我们需要修改server.xml文件,以指定我们打算使用的端口和要绑定的IP地址。因为OpenShift是一个多用户环境,因此你需要使用给你提供的内部IP地址。为了找到这个地址,运行下面命令:

$ env | grep OPENSHIFT_DIY_IP
返回的结果类似于下面所示:
OPENSHIFT_DIY_IP=127.8.97.129
我们需要修改 server.xml文件使用这个IP地址,同时更改一些正在运行的服务所使用的默认端口。默认情况下给其他服务配置的端口号无法运行,因为OpenShift不允许用户绑定除了8080外任何小于15000的端口。由于这个原因,我么需要更改以下配置项。你可以在 这儿访问完全可以运行的server.xml。只是用$OPENSHIFT_DIY_IP值替换了地址值。

修改前的Connector:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
修改后的Connector:
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000" address="127.8.97.129"
               redirectPort="8443" />
更改关闭端口
<Server port="8005" shutdown="SHUTDOWN">
<Server port="15005" shutdown="SHUTDOWN">
接着最后更改如下所示的运行在8009端口上的AJP 1.3连接器。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
<Connector port="15009" protocol="AJP/1.3" redirectPort="8443" address="127.8.97.129" />

第九步:启动Tomcat的servlet容器

最后我们通过执行startup.sh文件启动tomcat8的servlet容器。

$ cd ../bin
$ ./startup.sh && tail -f ../logs/*
这应当启动了Tomcat,同时让外面的世界通过80端口访问到它。你可能正在问自己:我们设置它使用的是8080端口,它是怎样在80端口上可访问的呢?OpenShift实际上安装了一个代理,这个代理把通过80口进入你主机的所有流量都传递给你正在8080口运行的本地服务器上。这个端口在系统环境变量OPENSHIFT_DIR_PORT里指定的。 通过把你的浏览器指向你tomcat-yourNamespce.rhcloud.com的应用来验证你的tomcat服务器是否已经运行。你可以访问http://tomcat8-cix.rhclound.com/

上的Apache Tomcat 8的安装样例。你可以访问位于http://tomcat8-cix.rhclound.com/examples/下的例子。

如果你想使用Tomcat的管理控制台,并增加用户到位于conf目录下的tomcat-users.xml文件。例如增加下面的角色和用户到这个文件,并删除下面这些已存在的:

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

第十步:更新启动和停止脚本的动作钩子

最后,我们需要更新启动和停止的动作钩子,这样它们才能启动和停止tomcat。这是必须的,这样你可以从rhc命令行工具里管理tomcat。 这样,当你运行rhc app stop -a tomcat8的时候,它将停止tomcat8,而当你运行rhc app start -a tomcat8的时候,它将启动tomcat8。 打开.openshift/action_hooks文件夹下的start脚本,增加下列行。

cd $OPENSHIFT_DATA_DIR/tomcat8/bin
./startup.sh
 为了停止Apache的tomcat 8,增加下面行到停止脚本。
cd $OPENSHIFT_DATA_DIR/tomcat8/bin
./shutdown.sh
 最后,提交代码,接着上传代码到应用gear里。
$ git commit -am "added start and stop commands"
$ git push

你需要一个快速脚本吗?

如果你不想随着这些步骤,我还写了一个快速脚本,它自动执行了以上提到的所有步骤。快速脚本位于https://github.com/shekhargulati/openshift-tomcat8-quickstart 。只需要打开一个命令行并执行下面的命令。

rhc app create tomca8 diy
cd tomca8
git remote add upstream https://github.com/shekhargulati/openshift-tomcat8-quickstart.git
git pull -s recursive -X theirs upstream master
git push

结论

在这篇博客中,我陈述了如何使用OpenShift运行Apache Tomcat 8。OpenShift给你提供了一个平台去运行前沿的技术。在下一篇博客中,我将讲述怎样使用JSR 356 API开发实时的应用。所以,如果你在找寻运行Java应用的平台,就试试OpenShift吧。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部