如果我apt-get install tomcat7
安装的是损坏的 tomcat7。简单的 startup.sh 会出错,修复后会显示 tomcat 已启动,但 localhost:8080 中没有任何显示。shutdown.sh 会出错,甚至会抛出 Java 异常。这在以前的 Ubuntu 版本中不会发生,它只是正常工作。因此,看起来 tomcat 包最近没有得到维护。
当我测试我的 Web 应用程序时,我可以从 Eclipse(顺便说一句,它也没有得到适当的维护)中使其运行。但是有些东西我需要在独立的 tomcat 安装中进行测试。到目前为止,Google 还没有提供帮助。
你们中有人在 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.
浏览至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
停止 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)
答案1
我在一个新容器里尝试了这个:
sudo apt-get install tomcat7
sudo dpkg-reconfigure tomcat7
就我的情况而言,这似乎解决了这个问题。
编辑:dpkg-reconfigure 将用默认的数据包管理器配置替换您对 tomcat7 的自定义配置,或者在给定的位置提供一个菜单来自定义。
答案2
我认为您的 CATALINA_BASE 不正确,它超出了 /var/lib/tomcat7 目录,而 CATALINA_HOME 就您声明变量的方式而言是正确的。将 CATALINA_HOME 和 CATALINA_BASE 与 JAVA_HOME 和 JRE_HOME 一起添加到 /etc/default/tomcat7。该可执行文件会在启动 servlet 时通知 tomcat servlet 环境的设置方式。
也可以考虑将它们放入 /etc/profile 中,然后将它们导出到 /etc/bash.bashrc(即导出 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
然后在 /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
完成后,将以下行添加到 ~/.bashrc
if [ -f "$HOME/.bash_expert" ];then
. "$HOME/.bash_expert"
fi
然后 source ~/.bashrc 文件,如下所示:
:~$ source .bashrc
并且无论发生何种类型的客户端交互,它都应该能以安全的方式解决您的问题。(不要责怪我,您永远不知道网络空间中潜伏着什么火星人,有时这可能是一个可怕的境界)。
PS 我之前指的是 oracle-sun jdk7,或者我猜它只是 Oracle Jdk7,因此如果您使用的是 Open Jdk,请根据需要替换它;如果使用 oracle,请返回到 /etc/init.d/tomcat 文件并将 openjdk 更改为您的版本,其中脚本引用“$OPENJDK”。这也假设您从存储库安装。
祝你好运,愿你的公猫发出呼噜声!!
答案3
从其网站下载官方 tomcat
wget http://mirrors.fe.up.pt/pub/apache/tomcat/tomcat-7/v7.0.54/bin/apache-tomcat-7.0.54.zip
解压
unzip apache-tomcat-7.0.54.zip
确保已安装 Java 并定义 JAVA_HOME
启动你的 tomcat。
答案4
安装 eclipse 和默认 jdk 和 git
$ sudo apt-get eclipse
$ sudo apt-get eclipse-jdt
$ sudo apt-get eclipse-pde
$ sudo apt-get eclipse-platform
$ sudo apt-get eclipse-rcp
$ sudo apt-get install default-jdk
$ sudo apt-get install ant git
我使用 ssh 是因为它是一个用于测试的虚拟机
1 下载文件“tomcat7.0 apache download”
$ wget http://apache.claz.org/tomcat/tomcat-7/v7.0.54/bin/apache-tomcat-7.0.54.tar.gz
2 提取
$ sudo tar -xvf apache-tomcat-7.0.54.tar.gz
3 创建目录
$ sudo mkdir /usr/local/tomcat7
4 将文件移动到目录
$ mv apache-tomcat-7.0.54 /usr/local/tomcat7
5 安装
$ cd /usr/local/tomcat7/apache-tomcat-7.0.54
$ sudo ln -s /var/lib/tomcat/conf conf
$ sudo ln -s /etc/tomcat7/policy.d/03catalina.policy/conf/catalina.policy
$ sudo ln -s /var/log/tomcat7 log
$ sudo chmor -R 777 /usr/local/tomcat7/apach*/conf
6 配置现在我们进入ubuntu桌面
Lunch eclipse => window => Preferences => Server => Runtime Envirenment
选择版本浏览目录 => 完成
$ cd ../../apach*/bin
$ ls -la
关掉它
$ sudo ./shutdown.sh
让我们做个测试
eclipse => file => new => other... => web project
doulble click it => right click web content => test.htm
<html>
<head>
<title> testing tomcat7 & eclipse</title>
</head>
<h2>Job's Done !</h2>
click on 'no servers are ....' => tomcat version => next => add to configured
menu => run => run as => fninish
localhost:8080/test/test.htm
localhost:8080/project name/page name