我正在尝试通过此配置[conf/server.xml]在 Ubuntu 14.04 中将 Tomcat 的端口更改为 80:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
到:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
我收到此错误:
13-Oct-2015 18:09:10.626 SEVERE [main] org.apache.coyote.AbstractProtocol.init Failed to initialize end point associated with ProtocolHandler ["http-nio-80"]
java.net.SocketException: Permission denied
我做错了什么?或者缺少了什么?
谢谢...
答案1
要在 Ubuntu/Unix 中在 1024 以下的端口上运行 Tomcat,该服务需要 root 权限。而这肯定不是你想要的。
使用端口重定向iptables
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
答案2
使用 authbind 启动 tomcat 服务,这将允许用户启动小于 1024 的端口,我们不需要重定向或 iptables。
sudo apt-get 安装 authbind -y
安装 Authbind 软件
sudo chmod -R 755 /etc/authbind
group 应该是用户组。
sudo chown -Rh root:group /etc/authbind
之后运行以下命令
cd /etc/authbind/byuid
举个例子,假设用户 ID 是 2000,您可以使用您的用户 ID 号
须藤回显'0.0.0.0/0:1,1023'> 2000
该文件应归用户和组所有。
sudo chown :2000
sudo chmod 700 2000
在 tomcat 启动文件 $CATALINA_BASE/startup.sh 中添加以下行
export JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
使用 Authbind service startup.sh 启动 tomcat
评论以下行
#$CATALINA_HOME/bin/startup.sh
添加 This End 作为文件结尾
AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c "
$AUTHBIND_COMMAND $CATALINA_HOME/bin/startup.sh
现在您应该能够以少于 1024 个端口的用户身份启动 tomcat 服务。