在VPS上将war文件部署到Tomcat

时间:2016-04-28 23:49:03

标签: apache tomcat java-ee tomcat8 java-ee-7

我在我的VPS上部署war文件时遇到了很多问题。

我有java-8和tomcat-8。我的服务器是Apache / 2.2.22(Debian),我的HTTP在端口80上,tomcat在8080上。

目前,如果您访问www.drew-jocham.com,则会列出一个空目录。但是,如果您访问www.drew-jocham.com:8080/resumesite,您将获得在tomcat上运行的页面。

当然,我要做的是让用户输入www.drew-jocham.com而不是端口等。

到目前为止,我已在nano /etc/apache2/sites-enabled/000-default.conf

设置了虚拟主机
<VirtualHost *:80>
    ServerAdmin drew@drew-jocham.com

    ServerName www.drew-jocham.com
    ServerAlias drew-jocham.com

    ProxyPass /resumesite http://localhost:8080/resumesite
    ProxyPassReverse /resumesite http://localhost:8080/resumesite
</VirtualHost>

在tomcat的server.xml文件中,我设置了<Host></Host>

<Host name="www.drew-jocham.com" appbase="webapps"
        unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

        <Valve className="org.apache.catalina.valves.AccessLogValve"
                 directory="logs"  prefix="resumesite_log." suffix=".txt"
                 pattern="common"/>
      </Host>

通过上面的设置,每个域名都会列出我的VPS目录。此时我不知道该怎么做。

我的问题是:

我希望用户输入www.drew-jocham.com而不是www.drew-jocham.com:8080/resumesite。我试图这样做,但就像我上面说的那样,我的VPS上的每个域都只是用上述设置列出我的服务器整个目录。

很快所有网站都将成为战争文件,因此服务器上会有多个域名。有些将直接存储在tomcat webapps中,有些则存储在端口80上的HTTP服务器上。

-------------------更新1 -------------------

我去nano /etc/apache2/sites-enabled/000-default.conf添加了以下内容并重新启动了我的tomcat服务器。

<VirtualHost *:80>
    ServerAdmin drew@drew-jocham.com

    ServerName www.drew-jocham.com
    ServerAlias drew-jocham.com

    ProxyPass / http://localhost:8080/resumesite
    ProxyPassReverse / http://localhost:8080/resumesite
</VirtualHost>

当我去www.drew-jocham.com时,除了以下图片之外,仍然没有任何渲染:

enter image description here

此外,它还将www.drew-jocham / resumesite添加到我的VPS上的每个域中,其中我有几个,从而打破了它们。

但是,如果我仍然转到www.drew-jocham.com:8080/resumesite它会渲染。

4 个答案:

答案 0 :(得分:4)

我读了您的问题,因为您希望www.drew-jocham.com的根目录为您提供TomCat服务的内容http://localhost:8080/resumesite

<VirtualHost *:80>
    ServerAdmin drew@drew-jocham.com

    ServerName www.drew-jocham.com
    ServerAlias drew-jocham.com

    ProxyPass / http://localhost:8080/resumesite
    ProxyPassReverse / http://localhost:8080/resumesite
</VirtualHost>

这篇关于反向代理的数字海洋指南很好地阅读了这个主题,并且包含了许多你认为有用的Apache配置项(比如SSL) - https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension

答案 1 :(得分:1)

步骤1: -  在tomcat8 server.xml中添加以下配置

   <Host name="www.drew-jocham.com"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

  <Alias>www.drew-jocham.com</Alias>
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="$logprefix$." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

   <Context path="" docBase="$RESUMESITEFOLDER$">
   <WatchedResource>WEB-INF/web.xml</WatchedResource>
    </Context>

    </Host>

在apache中创建一个包含以下内容的网站

<VirtualHost www.drew-jocham.com>
       ProxyPreserveHost On
       ServerName  www.drew-jocham.com
       ServerAlias www.drew-jocham.com
       Proxy Pass / http://localhost:8080/
       ProxyPassReverse / http://localhost:8080/
    </VirtualHost>

以上版本适用于我的https://smartvocab.in

答案 2 :(得分:1)

您需要按照以下步骤操作:

第1步: 在配置Apache之前,您应该启用必要的模块。

a2enmod proxy
a2enmod proxy_http

第2步: 接下来,您将修改000-default.conf内的默认配置文件/etc/apache2/sites-enabled以设置“代理”功能。

<VirtualHost *:*>
    ProxyPreserveHost On
    ProxyPass / http://0.0.0.0:8080/
    ProxyPassReverse / http://0.0.0.0:8080/
    ServerName localhost
</VirtualHost>

第3步: 接下来,您将修改server.xml文件。

<Host name="www.drew-jocham.com" appbase="webapps"
        unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

        <Valve className="org.apache.catalina.valves.AccessLogValve"
                 directory="logs"  prefix="resumesite_log." suffix=".txt"
                 pattern="common"/>
        <Context path="" docBase="/resumeSite" debug="0" reloadable="true"/>

</Host>

完成配置后,您需要重新启动云服务器才能使更改生效。执行以下命令重新启动Apache:service apache2 restart

就是这样!

了解详情:https://medium.com/@ldclakmal/deploy-a-java-web-application-in-digitalocean-882226dcdbd5

答案 3 :(得分:0)

您启用apache时需要几个选项,例如vhost_alias,proxy_ajp和mod_jk。你的tomcat也需要启用ajp。 将其添加到您的apache配置:

ServerName "yourdomain.com:80"
ServerAlias "www.yourdomain.com"
ServerAlias "ipv4.yourdomain.com"
UseCanonicalName Off

<IfModule mod_jk.c>
    JkMount /yourapp ajp13
    JkMount /yourapp/* ajp13
    JkMount / ajp13
    JkMount /* ajp13
</IfModule>