【问题标题】:Tomcat 8 running but refused to connectTomcat 8 正在运行但拒绝连接
【发布时间】:2018-06-19 00:50:18
【问题描述】:

我目前正在使用apt-get install tomcat8 安装的ubuntu 服务器上运行Tomcat8 的实例。我托管了一个应用程序,它在没有 SSL 证书的情况下运行良好。

最近我从 sslcertificate.com 买了一个 SSL 证书,然后跟着 https://support.comodo.com/index.php?/Knowledgebase/Article/View/638/0/certificate-installation-java-based-web-servers-tomcat-using-keytool 安装它。我能够将它打包在一起并配置server.xml文件。

server.xml 文件如下所示:

<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIEncoding="UTF-8"
           redirectPort="443"
            useIPVHosts="true"/>

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" keyAlias="tomcat" keystoreFile="myfile.jks" keystorePass="my_pass"/>

没有任何改变,服务器突然停止工作。当我尝试访问我的站点时,它说服务器拒绝连接。我试图删除我对server.xml 所做的更改,但它仍然拒绝连接。

我尝试了sudo lsof -i -P -n | grep LISTEN,这是输出:

sshd     1018    root    3u  IPv4  13571      0t0  TCP *:22 (LISTEN)
sshd     1018    root    4u  IPv6  13573      0t0  TCP *:22 (LISTEN)
mysqld   1083   mysql   19u  IPv4  16958      0t0  TCP 127.0.0.1:3306 
(LISTEN)
sshd     1351  ubuntu    9u  IPv6  13938      0t0  TCP [::1]:6010 (LISTEN)
sshd     1351  ubuntu   10u  IPv4  13939      0t0  TCP 127.0.0.1:6010 
(LISTEN)
sshd     2623  ubuntu    9u  IPv6  22382      0t0  TCP [::1]:6011 (LISTEN)
sshd     2623  ubuntu   10u  IPv4  22383      0t0  TCP 127.0.0.1:6011 
(LISTEN)
java     2721 tomcat8   62u  IPv4  21439      0t0  TCP 127.0.0.1:8005 
(LISTEN)

我不确定出了什么问题。任何帮助表示赞赏!

【问题讨论】:

  • 日志文件中的错误是什么?根据 lsof 输出,它似乎没有在 8080 或 80 上监听。如果您在端口 80 上运行它,则需要以 root 用户身份运行它。
  • 我会在serverfault.com问这个问题
  • 它以前是听 8080 的,但我改成 80 并且工作正常。错误日志说:09-Jan-2018 14:22:45.095 SEVERE [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["http-nio-80"] java.net.SocketException: Permission denied
  • 您是以 root 用户还是以用户 tomcat 或其他用户身份运行它?您需要以 root 用户身份运行它。

标签: java ubuntu tomcat ssl server


【解决方案1】:

问题已解决。

我四处搜索并找到了解决方案,它位于:https://wolfpaulus.com/java/tomcat-ssl/

服务器问题已通过以下命令修复:

sudo setcap cap_net_bind_service+ep /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

重新启动服务器,一切正常!

【讨论】:

    【解决方案2】:

    您的连接器配置使用端口 80 和 443,这两个端口都是特权端口。您需要以 root 身份运行 Tomcat 才能使其正常工作。否则,请切换到非特权端口,例如 8080 和 8443,它们是流行的选择。

    【讨论】:

    • 不要不*不*root 运行Tomcat。有一些方法可以使用 80 端口而不以root 运行。
    • 我明白了,这是否意味着我必须以 80 或 443 运行它?但不是两者都有?
    • 理想情况下,您应该在非特权端口上运行它。说 8080,然后是 8443。这样,您不需要进行前面描述的更改即可以用户 tomcat 运行它。然后在前面说一个负载均衡器,允许您通过 http 和 https 访问应用程序。
    • Christopher,他告诉我们这是以前的工作。所以,他似乎已经以 root 身份运行了 Tomcat。所以,要么他的问题是这次他试图用错误的用户运行它,要么他应该切换到非特权端口。
    猜你喜欢
    • 2020-07-06
    • 2014-03-26
    • 2015-12-10
    • 2020-09-02
    • 2016-07-09
    • 2017-11-15
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多