好的,这是一个两部分的问题。
我从一家托管公司获得了一个带有 CentOS 的非托管 VPS,以便安装几个 Atlassian 工具,但是,我遇到了一个问题,即在启动第二个应用程序时,第一个应用程序开始崩溃。
到目前为止,我已经安装了 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 ......所以我想知道我是否只需要找到一种方法来“使用不同的 Tomcat 容器”,但我很愚蠢,我什至没有知道这意味着什么(是的,我使用了谷歌,他们什么也没做)。
所以,第 1 部分:我是否遗漏了什么?或者没有办法以可接受的方式做到这一点
我想我找到了一个解决方案,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/
因为它们似乎隔离了正在运行的环境,甚至使您能够在容器和操作系统之间设置网络路由。
那么,第 2 部分:linux 容器 / docker 是我的问题的公认解决方案吗?
老实说,我不想租几台服务器...
这当然是可能的,但是您将使用三个不同的 Tomcat 容器。
每个产品都可以独立运行。IIRC,像这样的东西
比如说,您会希望 Apache httpd 作为反向代理运行。所以/crowd 指向你的crowd 端口,/jira 指向你的jira 端口,/confluence 指向你的confluence 端口。
这些路径将是错误的,但希望您能理解(使用 /.../ 是您解压缩产品的任何位置)。
您也可以让他们使用相同或不同的 JAVA_HOME,如果负责运行应用程序的人员/团队与管理操作系统的人员/团队不同,这将很有用。
我有一个合适的启动脚本来启动整个堆栈(按顺序排列 Crowd、Jira 和 Confluence,并在启动下一个之前测试一个是否准备就绪)。它是为 RHEL 5 编写的。如果需要,请致电;它可以节省修补期间的时间。
目前我正在使用 apache 作为反向代理和 5 个 jira 实例。
您只需将每个 jira/confl/crowd 实例绑定到唯一的端口。对于每个 jira 实例,您应该编辑 atlassian/jira/conf/server.xml
您没有提及您的 VPS 的任何系统规格。对我来说,这听起来像你的内存不足。您的意思是当应用程序崩溃时,JVM 不再显示在进程列表中?您应该检查
dmesg
JVM 是否被 OOM 杀手杀死的输出。所有 Atlassian 应用程序都与 Tomcat 捆绑在一起。您也可以下载 WAR 包中的应用程序。如果愿意,您可以将这些包部署到您自己的应用程序服务器中,但那是另一回事了。
将所有应用程序放入一个 Tomcat 容器中是不明智的。根据您的描述,我推断您不熟悉在一个 Tomcat 实例中运行多个应用程序。所以:
安装此类环境的非常简短的工作流程:
server.xml
以便应用程序在不同的端口中运行。这是至关重要的。否则,只有一个应用程序可以为 Tomcat HTTP/AJP 连接器保留 TCP 端口。每个应用程序使用一个唯一的端口。这是一种解决方案。你应该考虑你的设置。如果您当前的设置允许您在它们自己的 Tomcat 实例中运行所有应用程序,那么在单独的 Linux 容器中运行它们有什么好处?使用 Docker 对设置进行过度设计是非常容易的。此外,如果您不熟悉 Docker,则必须学习如何使用它。