好的,这是一个由两部分组成的问题。
为了安装几个Atlassian工具,我从一个托pipe公司获得了CentOS的非托pipeVPS,但是,我遇到了在启动第二个应用程序时,第一个应用程序开始崩溃的问题。
到目前为止,我已经安装了Confluence(在端口8090上运行),JIRA(在8080上运行)和Crowd(我不记得的其他一些端口),但是我一次只能运行一个。 我试图设置一个反向代理,但这似乎并没有工作。
在做一些研究时,我发现显然这是不可能的: https:// confluence.atlassian.com/display/JIRA/Deploying+Multiple+Atlassian+Applications+in+a+Single+Tomcat+Container https:// confluence。 atlassian.com/display/DOC/Installing+Confluence+and+JIRA+Together
我觉得这很奇怪,因为我认为每个Atlassian应用都带有它自己的Tomcat …所以我想知道如果我只是需要find一种方法来“使用不同的Tomcat容器”,但我是愚蠢的,我什至不知道这意味着什么(是的,我使用谷歌,他们什么都不做)。
所以,第一部分:我错过了什么?或者没有办法以可接受的方式做到这一点
我想我find了一个解决scheme,虽然,Linux容器:
http://blogs.atlassian.com/2013/06/deploy-java-apps-with-docker-awesome/ http://blogs.atlassian.com/2015/01/stash-docker/ http:// blogs。 atlassian.com/2013/11/docker-all-the-things-at-atlassian-automation-and-wiring/
因为它们似乎隔离了正在运行的环境,甚至可以在容器和操作系统之间设置networking路由。
所以,第二部分:linux容器/ docker是我接受的解决scheme吗?
我真的不想租用几台服务器…
我遇到了在启动第二个应用程序时,第一个应用程序开始崩溃的问题。
你没有提到你的VPS的任何系统规格。 对我来说,这听起来像是你的内存不足。 你的意思是,当应用程序崩溃时,JVM不再显示在进程列表中了吗? 您应该检查dmesg的输出以查看JVM是否被OOM杀手所杀。
我觉得这很奇怪,因为我认为每个Atlassian应用都带有它自己的Tomcat …所以我想知道如果我只是需要find一种方法来“使用不同的Tomcat容器”,
所有Atlassian应用程序都与Tomcat捆绑在一起。 您也可以在WAR包中下载应用程序。 如果您愿意,您可以将这些软件包部署到自己的应用程序服务器中,但这是另一回事。
把所有的应用程序放到一个Tomcat容器中并不明智。 从你的描述中我推断你不熟悉在一个Tomcat实例中运行多个应用程序。 因此:
安装此类环境的非常简短的工作stream程:
server.xml以使应用程序在不同的端口上运行。 这是至关重要的。 否则,只有一个应用程序可以为Tomcat HTTP / AJP连接器保留一个TCP端口。 每个应用程序使用独特的端口。 所以,第二部分:linux容器/ docker是我接受的解决scheme吗?
这是一个解决scheme。 你应该考虑你的设置。 如果您当前的设置允许您在自己的Tomcat实例中运行所有应用程序,那么在单独的Linux容器中运行它们有什么好处? 使用Docker过度devise您的设置是非常容易的。 另外,如果Docker不是你熟悉的东西,你将不得不学习如何使用它。
这当然是可能的,但是你会使用三个不同的Tomcat容器。
每个产品都可以独立运行。 IIRC,这样的事情
/.../crowd/bin/start_crowd.sh /.../jira/bin/start-jira.sh /.../confluence/bin/start-confluence.sh
而且你会希望Apache的httpd作为反向代理运行。 所以/人群指向你的人群港口,/ jira指向你的jira港口,/汇合点指向你的汇合港口。
这些path将是错误的,但希望你能得到这个想法(使用/…/作为解包产品的无论是什么)。
您可以让他们使用相同或不同的JAVA_HOME,如果负责运行应用程序的人员/团队与pipe理操作系统的人员/团队不同,这可能会很有用。
我有一个合适的启动脚本来启动整个堆栈(Crowd,Jira和Confluence,并在开始下一个之前testing它)。 它是为RHEL编写的5.如果你需要,请打电话。 它在修补期间节省时间。
目前我使用Apache作为反向代理和5个jira实例。
<VirtualHost *:80> ServerName jira1.example.net ProxyTimeout 300 ProxyRequests Off ProxyPreserveHost On <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ <Location /> Order allow,deny Allow from all </Location> </VirtualHost> <VirtualHost *:80> ServerName jira2.example.net ProxyTimeout 300 ProxyRequests Off ProxyPreserveHost On <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / http://127.0.0.1:8181/ ProxyPassReverse / http://127.0.0.1:8181/ <Location /> Order allow,deny Allow from all </Location> </VirtualHost>
您只需要将每个jira / confl / crowd实例绑定到唯一的端口。 对于每个jira实例,您应该编辑atlassian / jira / conf / server.xml
<Service name="Catalina"> <Connector port="8080" maxThreads="150" minSpareThreads="25" connectionTimeout="20000" address="127.0.0.1" proxyName="jira1.example.net" proxyPort="80" scheme="http" enableLookups="false" maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443" acceptCount="100" disableUploadTimeout="true"/> <Service name="Catalina"> <Connector port="8181" maxThreads="150" minSpareThreads="25" connectionTimeout="20000" address="127.0.0.1" proxyName="jira2.example.net" proxyPort="80" scheme="http" enableLookups="false" maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443" acceptCount="100" disableUploadTimeout="true"/>