如何在 Ubuntu 14.04 LTS 中安装 Tomcat7?

Jua*_*cia 9 tomcat7 software-installation 14.04

如果我apt-get install tomcat7正在安装损坏的 tomcat7。一个简单的 startup.sh 会给我错误,而不是固定时说 tomcat 已经启动但没有显示在 localhost:8080 中。shutdown.sh 会给我错误,甚至抛出 Java 异常。这在以前的一些 Ubuntu 版本中没有发生,在那里它只是工作。所以,看起来最近没有维护的tomcat包。

当我测试我的 Web 应用程序时,我可以从 Eclipse(顺便说一下它也没有得到正确维护)让它工作。但是,有些事情我需要在独立的 tomcat 安装中进行测试。到目前为止,谷歌还没有帮助。

你们中有没有人设法在 Ubuntu 14.4LTS 中正确安装 tomcat7?如果是这样,你能指出我正确的方向吗?

编辑:

这是一些日志。

启动tomcat:

$ sudo /usr/share/tomcat7/bin/startup.sh 
Using CATALINA_BASE:   /usr/share/tomcat7
Using CATALINA_HOME:   /usr/share/tomcat7
Using CATALINA_TMPDIR: /usr/share/tomcat7/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar
Tomcat started.
Run Code Online (Sandbox Code Playgroud)

浏览到localhost:8080(和http://127.0.0.1:8080, http://127.0.0.1, http://[my network ip here]):

Oops! Google Chrome could not connect to localhost:8080
Run Code Online (Sandbox Code Playgroud)

停止 tomcat 也会失败:

$ sudo /usr/share/tomcat7/bin/shutdown.sh 
Using CATALINA_BASE:   /usr/share/tomcat7
Using CATALINA_HOME:   /usr/share/tomcat7
Using CATALINA_TMPDIR: /usr/share/tomcat7/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar
Jul 03, 2014 7:15:55 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat7/common/classes], exists: [false], isDirectory: [false], canRead: [false]
Jul 03, 2014 7:15:55 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat7/common], exists: [false], isDirectory: [false], canRead: [false]
Jul 03, 2014 7:15:55 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat7/server/classes], exists: [false], isDirectory: [false], canRead: [false]
Jul 03, 2014 7:15:55 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat7/server], exists: [false], isDirectory: [false], canRead: [false]
Jul 03, 2014 7:15:55 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat7/shared/classes], exists: [false], isDirectory: [false], canRead: [false]
Jul 03, 2014 7:15:55 PM org.apache.catalina.startup.ClassLoaderFactory validateFile
WARNING: Problem with directory [/usr/share/tomcat7/shared], exists: [false], isDirectory: [false], canRead: [false]
Jul 03, 2014 7:15:55 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Catalina.stop: 
java.io.FileNotFoundException: /usr/share/tomcat7/conf/server.xml (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:146)
    at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:466)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:370)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:457)
Run Code Online (Sandbox Code Playgroud)

use*_*885 8

我在一个新的容器上试过这个:

sudo apt-get install tomcat7
sudo dpkg-reconfigure tomcat7
Run Code Online (Sandbox Code Playgroud)

在我的情况下,它似乎解决了这个问题。

编辑:dpkg-reconfigure 将用默认的数据包管理器配置替换 tomcat7 的自定义配置,或者,在给定的情况下,它将显示一个菜单进行自定义。


oOp*_*gEo 3

我相信您的 CATALINA_BASE 不正确,它超出了 /var/lib/tomcat7 目录,并且 CATALINA_HOME 就您声明变量的方式而言是正确的。将 CATALINA_HOME 和 CATALINA_BASE 以及 JAVA_HOME 和 JRE_HOME 添加到 /etc/default/tomcat7。该可执行文件通知 tomcat servlet 在 servlet 启动时如何设置环境。

也可以考虑将它们放在/etc/profile中,然后将它们导出到/etc/bash.bashrc中(即export CATALINA_HOME)。仅当且仅当您的网站没有用户登录或注册时才应执行此操作。如果不导出变量,它们仍然会在本地声明。

要全局声明变量,如果您是管理员(组 4,您可能还需要考虑将 syslog 移动到组 37、清除 rsyslog 并保持日志守护进程运行,以便保留强制访问控制),可以考虑在你的主目录中创建一个 ~/.bash_completion 或 ~/.bash_expert 文件,其中包含如下内容:

# ~/.bash_expert in regards to servlet alias
if [ -f /etc/bash_completion.d/.tomservlet ]; then
    . /etc/bash_completion.d/.tomservlet
fi
export CATALINA_HOME
export CATALINA_BASE
export JRE_HOME
export JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

然后在 /etc/bash_completion.d/.tomservlet 中创建 .tomservlet 文件并添加以下内容:

CATALINA_HOME=/usr/share/tomcat7
CATALINA_BASE=/var/lib/tomcat7
JAVA_HOME=/usr/lib/jvm/jdk1.7.0
JRE_HOME=$JAVA_HOME:/jre
Run Code Online (Sandbox Code Playgroud)

完成后,将以下行添加到 ~/.bashrc

if [ -f "$HOME/.bash_expert" ];then
    . "$HOME/.bash_expert"
fi
Run Code Online (Sandbox Code Playgroud)

然后获取 ~/.bashrc 文件,如下所示:

:~$ source .bashrc
Run Code Online (Sandbox Code Playgroud)

无论发生哪种类型的客户端交互,都应该以安全的方式解决您的问题。(不要让我这么认为,你永远不知道火星人潜伏在网络空间中,有时这可能是一个可怕的领域)。

PS 我之前指的是 oracle-sun jdk7 或者我猜它只是 Oracle Jdk7,所以如果您使用 Open Jdk,请根据需要替换它,如果使用 oracle,请返回到 /etc/init.d/tomcat 文件并更改openjdk 到您的版本,其中脚本引用“$OPENJDK”。这还假设您从存储库安装。

祝你好运,愿你的雄猫发出咕噜声!