将war文件部署到VPS上的Tomcat

8
我正在部署war文件到我的VPS上遇到很多问题。
我已经安装了java-8和tomcat-8。我的服务器是Apache/2.2.22(Debian),HTTP使用80端口,而Tomcat使用8080端口。
目前,如果您访问www.sdfasdfasdf.com,您会看到一个空目录列表。但是,如果您访问www.asdfasdf.com:8080/resumesite,则可以看到我的页面,该页面正在Tomcat上运行。
自然地,我想做的是让用户输入www.asdfasdffd.com,而不是输入端口等内容。
到目前为止,我已经在nano /etc/apache2/sites-enabled/000-default.conf中设置了虚拟主机。
<VirtualHost *:80>
    ServerAdmin fdfdf@asdfasdf.com

    ServerName www.sdfasdf.com
    ServerAlias asdfasdf.com

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

在我的Tomcat的server.xml文件中,我设置了一个<Host></Host>
<Host name="www.asdfasdffasdf.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.asdfasdfasdf.com而不是www.drew-jocham.com:8080/resumesite。我正在尝试实现这一点,但如上所述,使用以上设置后,我的VPS上的每个域名都只列出服务器整个目录。

此外,很快所有网站都将是war文件,因此服务器上将有多个域名。其中一些将存储在tomcat webapps中,另一些直接存储在端口80上的HTTP服务器中。

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

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

<VirtualHost *:80>
    ServerAdmin fasdfad@asdfasdfasdf.com

    ServerName www.asdfasdfadf.com
    ServerAlias asdfasdfadf.com

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

当我访问 www.asdfasdfasdf.com 时,除了下面的图片,什么也没有渲染出来: enter image description here 另外,它会在我 VPS 上的每个域名后都添加 www.asdfasdf/resumesite,这导致它们全部无法使用。
但是,如果我访问www.asdfasdfasdf.com:8080/resumesite,就能正常渲染页面。

@SureshKoya 抱歉如果我表达得不够清楚。请阅读我在帖子中的最后一条评论。 - Mike3355
如果在此VPS主机上有其他站点,并且您在000-default.conf文件中配置了drew-jocham.com,则可能会出现Apache中的冲突站点配置问题。您是否尝试运行apachectl configtest以识别任何警告或错误?将站点配置分离是最佳实践,可能有助于解决问题。所有其他VirtualHost配置是否都设置了ServerName? - Sam
@Sam 我没有设置其他<virtualhost>。目前,/etc/apache2/sites-enabled/000-default.conf是空的。其他站点都在我的htto服务器上。这是我第一次尝试在实际服务器上启动war文件。 - Mike3355
@SureshKoya 你想私聊吗?我真的需要解决这个问题。 - Mike3355
@Drew1208,当然可以私聊。我在美国太平洋时间可用。 - randominstanceOfLivingThing
显示剩余4条评论
4个回答

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>

这篇Digital Ocean关于反向代理的指南讲解得非常好,并包含了更多你可能会觉得有用的Apache配置项(例如SSL)。链接在此:https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension

1

您需要在 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>

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网站起到了作用。


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

步骤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>

步骤三: 接下来,您将修改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


1
在将opt/tomcat/conf/server.xml进行修改,将resumesite设置为你的Tomcat根目录后,这个就可以正常工作了。 - S.Dan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接