【问题标题】:How to deploy war files into cPanel and remove the project name?如何将war文件部署到cPanel并删除项目名称?
【发布时间】:2013-02-08 21:38:13
【问题描述】:

我需要在 cPanel 上运行我的 Java 应用程序。我已经成功安装了Tomcat,

我可以通过将war 文件复制到我的www 文件夹来运行我的应用程序,但问题是它在地址中显示了项目名称(war 文件名),我需要知道如何删除它,所以用户可以访问www.example.com而不是www.example.com/MyProject/index.jsp

【问题讨论】:

  • >2) 我在哪里可以找到输入此命令的终端?你在什么操作系统上?视窗? Unix?我认为您的说明适用于 unix
  • 是的操作系统是unix,我应该使用ssh访问终端吗?
  • 如果您直接登录到盒子上,您应该可以右键单击桌面,或者转到顶部应用程序菜单并查找“终端”,否则是的,ssh 到盒子,cd进入目录并运行解压缩命令。
  • 我在cPanel但没有终端,如果我使用ssh,我应该先使用文件管理器上传war文件然后进入ssh吗?
  • 抱歉 -- 没有了解 cpanel 是什么。你能把war解压到本地目录,然后用fileZilla把整个目录树发送到你托管的tomcat目录吗?

标签: jakarta-ee tomcat spring-mvc struts2 cpanel


【解决方案1】:

根据one cpanel hosting service,出于安全原因,cpanel 的命令提示符访问通常是关闭的,您必须专门要求它。如果您有此权限,您可以登录并运行 unzip 命令(在使用 FileZilla 或类似工具上传 war 文件之后)。

根据cpanel,如果您没有命令提示符访问权限,您可以将战争上传到您的 public_html 目录,但在此之前您需要更改 apache 配置并添加一个“ JkMount”(参见下面带有“appname”的那个)。

<IfModule mod_jk.c>
  JkMount /*.jsp ajp13
  JkMount /servlet/* ajp13
  JkMount /servlets/* ajp13
  JkMount /*.do ajp13
  JkMount /appname/* ajp13
</IfModule>

当然,除了您输入“您的应用名称”而不是应用名称。此更改将指示 apache 将对顶级 url(即 mydomain.com/appname)的调用重定向到您的 Tomcat 实例(即 mydomain.com:8080/appname)。上传war并更改配置后,您必须重新启动apache。

但我们说我们没有 ssh 访问权限,那么我们如何修改该文件。根据this forum,我们可以编辑 /home/username/public_html/.htaccess 或只是 /public_html/.htaccess 并添加以下行:

SetHandler jakarta-servlet
SetEnv JK_WORKER_NAME ajp13

现在,apache 将为 mydomain.com/appname 而不是 mydomain.com:8080/appname 重定向到 tomcat。我们如何让它从 mydomain.com 开始工作?我根本不知道这个问题的答案。据我所知,使用将war文件更改为ROOT.war的常用技巧在cpanel中不起作用。

【讨论】:

  • 感谢您的回复,我已将我的战争文件上传到 public_html 但不知道如何添加 JKMount!
  • 一开始你是如何配置你的Tomcat的?我在网上看到对 WHM 和 EasyApache 的引用。两者都与cpanel有关。你用过其中一种吗?
  • 如果您通过 FileZilla 连接到您的主机,您是否会看到以下目录/文件:/usr/local/apache/conf/jk.conf 和 /usr/local/apache/conf/cp_jkmount.conf ?
  • 是的,我用的是EasyApache和jsptest来测试配置
【解决方案2】:

您将不得不修复 /usr/local/jakarta/tomcat/conf/server.xml 中的条目 在经过大量调整后的一段时间,我使用了它并且它起作用了:

<Host name="domain.com" appBase="/home/username/public_html" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" reloadable="true">
<Alias>www.domain.com</Alias>
<Context path="" reloadable="true" docBase="/home/username/public_html" debug="1" privileged="true" autoDeploy="true" liveDeploy="true" />
<Context path="/manager" debug="0" privileged="true" docBase="/usr/local/jakarta/tomcat/server/webapps/manager">
</Context>
</Host>

【讨论】:

  • 这是在 cpanel 上下文中吗?如果是这样,问题的重要部分是在 cpanel 约束下,如何在没有 ssh 的情况下修改 /usr/local/anything?
【解决方案3】:

war 文件的名称与容器如何呈现项目无关 - 这只是配置问题,默认情况下容器将上下文路径作为文件名呈现。

而使用 ROOT.war 只是一个愚蠢的技巧,请阅读 Tomcat 中的上下文配置(我假设您使用的是 Tomcat)

http://tomcat.apache.org/tomcat-7.0-doc/config/context.html

【讨论】:

  • 谢谢,我之前已经准备好了,但可以找到问题的相关部分。
【解决方案4】:

有几种方法可以在 tomcat 中设置应用程序根上下文。所有这些都在服务器的文档中描述。这是另一个

修改tomcat_home\conf\server.xml。在&lt;Host 标签下放

<Context path="" docBase="yourappname" debug="0" reloadable="true" />

您将yourappname.war 放在webapps 文件夹中的位置,反映&lt;Host 标记的appBase 属性。

保存,重启服务器。

【讨论】:

    【解决方案5】:

    如果您无法编辑 server.xml ,那么您可以删除 ROOT.war 并将您的 war 文件重命名为 ROOT.war 或将您的 .war 文件解压缩到一个名为 ROOT 的目录。
    下次您打开网站前 - www.example.com 时,index.jsp 将显示给您。
    我在 Openshift 上为我的网站做了同样的事情,它提供免费的 PAAS 服务

    【讨论】:

      【解决方案6】:

      他们只需要在 shell 中解压 .war 存档。见:

      如何部署 .WAR 应用程序 - Ubiquity Web Hosting Wiki

      我们有超过 100 位用户使用过这些说明,而且效果很好。如果您使用 EasyApache 部署了 Tomcat 并按照 cPanel 的设计进行了设置,那么应该就是这样。来源于:

      http://twiki.cpanel.net/twiki/pub/Al...s08/Tomcat.pdf

      http://forums.cpanel.net/f42/how-auto-deploy-war-cpanel-server-55096.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-27
        • 2017-01-12
        • 1970-01-01
        • 1970-01-01
        • 2011-03-22
        • 1970-01-01
        相关资源
        最近更新 更多