如果不涉及代理、端口重定向、端口转发等,是否有任何本机方法可以绑定Resin(Java 服务器)到端口 80,在 Ubuntu 服务器上,而 Resin 由 root 启动,但随后作为非特权用户 (www-data) 运行?
这是在 Ubuntu 10.10 上,从 caucho apt 存储库运行 Resin。我知道如果我以 root 身份运行和操作 Resin,我可以让它使用端口 80,但你可以想象,这并不理想。
答案1
找到答案,下面的终端命令。这些命令假设您正在运行 Ubuntu 10,并且已通过其 apt 存储库安装了 Resin。在我的例子中,www-data 将运行 authbind,用户 ID 为 33,您将在下面看到:
# aptitude install authbind
# nano -w /etc/authbind/byuid/33
# chown www-data. /etc/authbind/byuid/33
# chmod 700 /etc/authbind/byuid/33
# nano -w /etc/init.d/resin
在编辑 /etc/init.d/resin 时,找到:
start)
在其下方,找到:
su $USER
删除该行,替换为:
su $USER -s /usr/local/bin/authbind --deep /bin/bash -c """$JAVA -jar $RESIN_HOME/lib/resin.jar $ARGS start""" 1>/dev/null 2>/dev/null
寻找:
stop)
在其下方,找到:
su $USER
删除该行,替换为:
su $USER -s /bin/bash -c """$JAVA -jar $RESIN_HOME/lib/resin.jar $ARGS shutdown""" 1>/dev/null 2>/dev/null
写入文件并退出(使用 CTRL+O、CTRL+X)
现在您需要编辑树脂配置:
# nano -w /etc/resin/resin.xml
确保您的 HTTP 端口设置为 80(我相信它是默认端口,因为 Resin 默认以 rot 形式运行),并确保文件中的以下两行也取消注释:
www-数据 www-数据
保存并退出(CTRL+O、CTRL+X)
现在启动 Resin:
# service resin start