在 tomcat 8 上部署地理服务器

Posted

技术标签:

【中文标题】在 tomcat 8 上部署地理服务器【英文标题】:Deploy geoserver on tomcat 8 【发布时间】:2017-04-21 14:19:47 【问题描述】:

我最近设法(并非不费吹灰之力)在 Debian 8.1 远程服务器上安装了 tomcat 8。我的目标是运行一个名为geoserver 的网络应用程序 在那个tomcat服务器上。所以在我的/var/lib/tomcat8/webapps 目录中,我创建了一个名为geoserver/ 的新目录,并在该目录中上传了名为geoserver.war 的.war 文件。

然后我进入/var/lib/tomcat8/conf(这实际上是一个符号链接,将我重定向到/etc/tomcat8并编辑tomcat-users.xml文件,在<tomcat-users></tomcat-users>标签之间添加以下内容:

<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="*****" roles="admin-gui, manager-gui"/>

这让我可以访问 tomcat webapps manager 和 host-manager。在管理器中,我通过提供上下文路径和其他必需的 URL 部署了我的 geoserver.war 文件。之后,我可以在我的应用列表中看到/geoserver 正在成功运行。

但是当我尝试实际连接到地理服务器页面(在 MY_SERVER_IP:8080/geoserver)时,为了处理它,我收到 404 错误,说请求的资源 (/geoserver) 不可用.作为记录,默认提供的其他 web 应用程序(例如 /examples)运行良好。

我在互联网上找不到我的问题的答案,这就是为什么我来这里询问是否有人知道如何解决我的问题。我希望我的问题对于***来说不会太离题,如果只是让我知道,我会将其发布在另一个网站上。提前致谢,周末愉快!

编辑:当我尝试在我的 tomcat webapps 管理器中启动地理服务器时,这是 catalina.out 文件中写入的内容。

avr. 24, 2017 5:32:55 AM org.apache.catalina.core.ApplicationContext log
INFOS: No Spring WebApplicationInitializer types detected on classpath

以下部分由于某种原因重复了 5 次。

avr. 24, 2017 5:32:55 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class marktest.Config org.geoserver.GeoserverInitStartupListener
java.lang.UnsupportedClassVersionError: org/geoserver/GeoserverInitStartupListener : Unsupported major.minor version 52.0 (unable to load class org.geoserver.GeoserverInitStartupListener)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2476)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:853)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1263)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1146)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:520)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:501)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:120)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4753)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5256)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1265)
    at org.apache.catalina.manager.htmlManagerServlet.start(HTMLManagerServlet.java:673)
    at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:221)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:618)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1570)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1527)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

最后:

avr. 24, 2017 5:32:55 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Skipped installing application listeners due to previous error(s)
avr. 24, 2017 5:32:55 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
avr. 24, 2017 5:32:55 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/geoserver] startup failed due to previous errors

有些部分是用法语写的,我希望我的翻译足够准确。

【问题讨论】:

谁能帮我解决我的问题? 【参考方案1】:

geoserver.war 移动到/var/lib/tomcat8/webapps 并重新启动tomcat - 此时一切都应该正常工作。

如果失败,则需要检查的其他事项是:

    Java 1.8 安装了吗? GeoServer 需要这个 确保没有其他程序正在使用端口 8080 Tomcat8 用户对/var/lib/tomcat8/webapps/geoserver 具有读/写/执行权限 检查/var/log/tomcat8/catalina.out中的Tomcat日志文件 检查/var/lib/tomcat8/webapps/geoserver/data/logs/geoserver.log 中的 GeoServer 日志文件

【讨论】:

非常感谢您的回答。实际上,我自己发现我的 geoserver.war 文件在错误的位置,并将其移至 /var/lib/tomcat8/webapps 目录。但是,它仍然无法正常工作,所以我将尝试回答您的清单:1. 是 2. 我在 Windows 命令提示符下运行了netstat -anb,但在输出中没有找到使用端口 8080 的任何内容 3. 是4. 我实际上是想用谷歌搜索我在那个文件中得到的错误,我会用它来编辑我的问题,你很可能会比我解释得更好 5. 这个文件在我的服务器上不存在。我应该创建它吗? tomcat 安装后不使用 java8 就我而言,我遇到了类似的情况,就是我使用的是 Java 7。下载并指定 Java 8 解决了这个问题

以上是关于在 tomcat 8 上部署地理服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何在windows server 2008服务器上部署tomcat环境

linux 环境下tomcat中部署jfinal项目

jenkins部署war包到远程服务器的tomcat

一个Tomcat部署多个项目引起的冲突

url在tomcat 8服务器上重写Angular 4

在 Tomcat 8.0.30 上启用 CORS