在买的vps上想将tomcat6绑定到80端口上.
端口占用分析
但是提示我绑定失败,想起来自带的Apache Server占用了这个端口.
首先用
ps -ef | grep apache2查看Apache进程pid值.
然后用netstat -anp | grep pid查看他所占用的端口号. 确定它占用的是80端口.
更换Apache Server端口
于是我将Apache Server的端口修改为8081.
用: vi /etc/apache2/ports.conf打开这个文件,将Listen 后的端口号改成8081. 然后根据文件上面的提示说还需要修改000-default的文件中的端口号.
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
于是用vi /etc/apache2/sites-enabled/000-default.conf打开这个文件将<VirtualHost *:80>也改成<VirtualHost *:8081>
重启Apache Server
端口换好后重启一下Apache Server. 用apachectl -k restart重启之后, 再按照上面的方法找到他的进程再查看端口号,确定端口改过来之后用浏览器访问一下这个端口. 成功访问,并访问原来的80端口已经无法访问了.到此端口成功更换.
绑定Tomcat到80端口
上面把端口换好了, 这时候想着再将tomcat绑到80端口应该就可以解决了吧.
vi /var/lib/tomcat6/conf/server.xml 打开这个文件,输入数字71然后按下shift+g定位到71行(大概就是在71行的位置). 可以看到<Connector port="8080" protocol="HTTP/1.1"这样的标签, 将port后面的8080改成80就可以了.
改好了就重启tomcat, 输入命令: service tomcat6 restart,
但重启时依然报错说Java.net.BindException: Permission denied <null>:80. 于是网上找解决方法, 国内大部分人都说是非root用户登录无法绑定1024以下的端口号. 但我这里确实是以root用户登录的.
于是参考网上的文章,这里有个回答是这样子的:
说是可以在’/etc/default/tomcat’这个文件中改变AUTHBIND这个属性为yes然后重启服务器就可以允许绑定到1024以下的端口了.
按照他的说法用vi /etc/default/tomcat打开这个文件, 然后按下/进入指令模式后输入AUTHBIND查找这个property, 找到之后看到下面的一段内容
# If you run Tomcat on port numbers that are all higher than 1023, then you
# do not need authbind. It is used for binding Tomcat to lower port numbers.
# NOTE: authbind works only with IPv4. Do not enable it when using IPv6.
# (yes/no, default: no)
意思就是说如果你让tomcat运行的端口号高于1023那么不需要authbind这个东西, authbind是被用于绑定到低的端口号上去的. 注意: authbind仅在ipv4上工作, 当使用ipv6时不要开启它.
看完之后就好了, 我将authbind后面的no改为yes. 然后再次’service tomcat6 restart’重启tomcat发现已经不报错了.
我遇到的情况在这里已经得到解决了.