我正在尝试在新的 CentOS 7 虚拟机上安装 tomcat。我成功安装了apache httpd,当我在网络中的另一台计算机上的Web浏览器中输入虚拟机的ip时,能够获得apache测试页面。但是当我输入时收到以下错误消息systemctl start tomcat:
Job for tomcat.service failed. See 'systemctl status tomcat.service' and 'journalctl -xn' for details.
Run Code Online (Sandbox Code Playgroud)
以下是安装 java 和 tomcat 的完整命令历史:
我首先使用本教程中的说明安装 java ,因为 tomcat 说明(下面的第二个块)希望我使用 openjdk,而我需要使用真正的 java:
//Install Java
# cd /opt/
# yum install wget
# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jdk-8u60-linux-x64.tar.gz"
# tar xzf jdk-8u60-linux-x64.tar.gz
# cd /opt/jdk1.8.0_60/
# alternatives --install /usr/bin/java java /opt/jdk1.8.0_60/bin/java 2
# alternatives --config java
(Select the version you want)
# …Run Code Online (Sandbox Code Playgroud) 我已经根据本文中的信息创建了一个 systemd 服务来运行 tomcat 应用程序。这篇文章的简短版本建议避免使用 shell 脚本包装器,并使用适当的环境和命令行直接执行 java。
这是整个 systemd 服务(替换了应用程序名称):
[Unit]
Description=MyApp Tomcat Container
[Service]
EnvironmentFile=/opt/myapp/environment
ExecStart=/usr/bin/env ${JAVA_HOME}/bin/java $JAVA_OPTS $CATALINA_OPTS \
-classpath ${CLASSPATH} \
-Dcatalina.base=${CATALINA_BASE} \
-Dcatalina.home=${CATALINA_HOME} \
-Djava.endorsed.dirs=${JAVA_ENDORSED_DIRS} \
-Djava.io.tmpdir=${CATALINA_TMPDIR} \
-Djava.util.logging.config.file=${CATALINA_BASE}/conf/logging.properties \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
org.apache.catalina.startup.Bootstrap start
ExecStop=/usr/bin/env $JAVA_HOME/bin/java $JAVA_OPTS \
-classpath $CLASSPATH \
-Dcatalina.base=$CATALINA_BASE \
-Dcatalina.home=$CATALINA_HOME \
-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS \
-Djava.io.tmpdir=$CATALINA_TMPDIR \
-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
org.apache.catalina.startup.Bootstrap stop
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
据我所知,这很有效。服务正确启动、停止和报告状态。我遇到的问题是由journalctl以下人员报告的日志:
# journalctl -u myapp.service --since today
Sep 14 00:26:00 myserver.domain.com env[654]: MyApp:2015-09-14 00:26:00: …Run Code Online (Sandbox Code Playgroud) CentOS 7 Web 服务器有 tomcat 在 apache httpd 反向代理后面提供 war 文件。当 WAR 文件都是服务器端代码时,这非常有效。但是,当客户端代码(在本例中为 AngularJS)与服务器端代码一起包含在 war 文件中时,apache httpd 2.4domain3.com在 Web 浏览器中键入时,会针对应用程序中核心 html 文件的每个依赖项抛出以下代理错误:
[proxy:error] AH00898: DNS lookup failure for: resources returned by /res$
Run Code Online (Sandbox Code Playgroud)
为了确认这是 apache 错误而不是 tomcat 错误,我在 firewalld 中为该应用程序打开了 8084 端口,然后加载domain3.com:8084以找到该应用程序运行完美,包括其客户端 AngularJS 代码。
当请求domain3.com被输入到 Web 浏览器时,为了使 apache httpd 2.4 能够为战争中包含的客户端应用程序提供包含,需要进行哪些配置更改?
此类domain3.com事务的完整 httpd 日志是:
[Tue Nov 03 14:31:57.662516 2015] [proxy:error] [pid 9332] [client client.ip.addr:57369] AH00898: DNS lookup failure for: server.ip.addr:8013resources returned by /res$ …Run Code Online (Sandbox Code Playgroud) 我有一个安装了 Apache Tomcat 7.0 的 RHEL7 服务器,在最近更新到 RHEL7.1 之后,所有到 ${catalina.base}/logs/catalina.out 的日志记录都停止了。但是我在 journalctl 中收到日志。
如果我输入 journalctl -u tomcat 我会得到日志。有什么方法可以让我也将日志记录到 catalina.out 吗?
cat /usr/share/tomcat/logs/catalina.out
no output
journalctl -u tomcat
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
Aug 20 10:07:14 server.example.com server[26435]: at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
Aug 20 10:07:14 server.example.com server[26435]: at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
...
Run Code Online (Sandbox Code Playgroud) 我正在使用 Oracle Java 1.8.0_91-b14(不是openjdk)在 Ubuntu 16.04 上设置 Tomcat 8.0.35,以便在对我们的 Microsoft SQL 数据库进行身份验证时使用 Kerberos 身份验证。我遇到的问题是,在kinit使用适当的开关以适当的用户身份运行后:
sudo -u tomcat8 kinit -k -t /etc/tomcat8/tomcat8.keytab HTTP/linux-test2.our.domain.local@OUR.DOMAIN.LOCAL
Run Code Online (Sandbox Code Playgroud)
我在 Tomcat 的 localhost 日志中收到此错误:
Caused by: GSSException: No valid credentials provided (Mechanism level: Fail to create credential. (63) - No service creds)
Caused by: KrbException: Fail to create credential. (63) - No service creds
Run Code Online (Sandbox Code Playgroud)
当我跑
sudo -u tomcat8 klist
Run Code Online (Sandbox Code Playgroud)
我得到了预期的回应:
root@linux-test2:/home/tbourne# sudo -u tomcat8 klist
Ticket cache: FILE:/tmp/krb5cc_111
Default principal: HTTP/linux-test2.our.domain.local@OUR.DOMAIN.LOCAL
Valid starting …Run Code Online (Sandbox Code Playgroud) 最近我安装了一个 apache tomcat 8。我的 tomcat-users.xml 包含这个:
<tomcat-users>
<role rolename="admin-gui"/>
<user username="tomcat" password="pass1234" roles="admin-gui"/>
</tomcat-users>
Run Code Online (Sandbox Code Playgroud)
我也想为此用户启用打开管理器应用程序和服务器状态。谁可以帮我这个事 ?
我正在查看名为 DSpace 的 Tomcat 6 web 应用程序的文档,特别是关于在标准端口上运行运行 DSpace(http:// 为 80,https:// 为 443)
我正在尝试使用“方法 1”,它使用 iptables 将流量从端口 80 和 443 重定向到 8080 和 8443,以便摆脱:8080url 中的 。
这些是文档给出的命令:
/sbin/iptables -t nat -I PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 8080
/sbin/iptables -t nat -A OUTPUT -p tcp -d _[server_ip_address|server_ip_address]_ --dport 80 -j REDIRECT --to-port 8080
/sbin/iptables -t nat -I PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-ports 8443
Run Code Online (Sandbox Code Playgroud)
我认为第二行需要更改一些内容,特别是该部分-d _[server_ip_address|server_ip_address]_- 但我不确定是什么。我已经阅读了该man页面,iptables …
我已将 Tomcat 安装为服务。
它CATALINA_HOME和CATALINA_BASE是一样的:
-Dcatalina.base=/usr/share/tomcat7 -Dcatalina.home=/usr/share/tomcat7
Run Code Online (Sandbox Code Playgroud)
我在下一行添加了setenv.sh脚本/usr/share/tomcat7/bin:
$ cat /usr/share/tomcat7/bin/setenv.sh
#!/usr/bin/env bash
export JAVA_OPTS="-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.port=9090 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Djava.rmi.server.hostname=54.***.***.65"
Run Code Online (Sandbox Code Playgroud)
但是 Tomcat 的行为仍然没有变化 - 没有打开新端口,没有新选项是ps aux | grep java:
# netstat -anp | grep 9090 | wc -l
0
# ps aux | grep java
tomcat 32063 96.6 23.5 1904000 399872 ? Sl 09:04 3:07 /usr/lib/jvm/jre/bin/java -Xms512M -Xmx1024M -javaagent:/usr/share/tomcat7/newrelic/newrelic.jar -classpath :/usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/usr/share/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat7/temp -Djava.util.logging.config.file=/usr/share/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap …Run Code Online (Sandbox Code Playgroud) 我认为之前没有人问过我的问题(无论如何都没有问过,如果有,抱歉)。我在 CentOS 7 上使用 Tomcat 7。
在我的 tomcat/bin/setenv.sh 文件中,我设置了:
export TEST="test"
Run Code Online (Sandbox Code Playgroud)
然后我通过运行 tomcat/bin/startup.sh 通过终端启动 tomcat
然后我运行(不是在脚本中,而是在执行 Tomcat 启动脚本后在终端中运行):
echo $TEST
Run Code Online (Sandbox Code Playgroud)
我的问题:我应该能够“回显”变量 TEST 吗?我是否应该能够看到 TEST 变量已设置为我想要的(测试)?
在设置为for的CentOS 7服务器中,我收到一条错误消息,表明无法与. 如何解决此错误,以便 httpd 提供由 tomcat 生成的内容?apache httpd 2.4ssl reverse proxytomcathttpdtomcat
该ssl_error_log说:
[Tue Dec 16 20:20:15.007630 2014] [proxy:error] [pid 12784] (111)Connection refused: AH00957: HTTP: attempt to connect to 127.0.0.1:8080 (localhost) failed
[Tue Dec 16 20:20:15.007727 2014] [proxy:error] [pid 12784] AH00959: ap_proxy_connect_backend disabling worker for (localhost) for 60s
[Tue Dec 16 20:20:15.007752 2014] [proxy_http:error] [pid 12784] [client client.ip.address:48100] AH01114: HTTP: failed to make connection to backend: localhost
Run Code Online (Sandbox Code Playgroud)
我已经阅读了该catalina.out文件,它清楚地表明tomcat在我运行 …