Mac OS 80 端口占用问题的解决方法
使用Mac OS进行web开发时,会遇到80端口已经被占用的情况。
解决这个问题可以通过以下几个步骤:
1、使用 lsof -P -i tcp:port 查看端口进程,
例如: lsof -P -i tcp:8080
yg-mac:~ homer$ lsof -P -i tcp:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME eclipse 607 homer 171u IPv6 0x8cb9ac6aa821e285 0t0 TCP localhost:50632->localhost:8080 (CLOSE_WAIT) java 1403 homer 45u IPv6 0x8cb9ac6aaca41d45 0t0 TCP *:8080 (LISTEN)
查看当前占用8080端口的进程,如果有就kill掉。
高亮显示端口号:
lsof -P -i tcp:8080 | grep 8080 // 端口
或
lsof -P -i tcp:8080 | grep -i "listen" // 推荐
2、关闭mac自带apache的启动
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
打开mac自带apache的启动
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
3、最常见的一条,mac禁止了普通用户访问1024以下的端口,包括80端口
想要通过80端口访问则需要通过端口转发,命令如下:
sudo ipfw add fwd 127.0.0.1,1081 tcp from any to 127.0.0.1 80 in
大致意思是做端口转发,80端口打到1081上,这样web服务都指向了nginx的1081(相当于原来的80端口)
老版本OS X使用ipfw端口转发,但新版本 OSX Yosemite (10.10.3) 以后,已经无法使用ipfw,而是换成了pf
pf 转发步骤:
1. 新建 com.pow
vim /etc/pf.anchors/com.pow
rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8088 rdr pass on lo0 inet proto tcp from any to any port 80 -> 127.0.0.1 port 8088
或
rdr on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8088
其中,lo0为ifconfig时查询到的网卡的名字 80是tomcat端口,8088为转发的端口
注意: 在段落末尾一定要加换行,否则会报syntax error错误。
2. pfctl 命令检测配置文件
sudo pfctl -vnf /etc/pf.anchors/com.pow
3. 配置 pf.conf
vim /etc/pf.conf
添加内容如下红色字体:
#
# com.apple anchor point
#
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr-anchor "pow"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
load anchor "pow" from "/etc/pf.anchors/com.pow"
转发端口配置
1. 手动临时设置转发端口:
sysctl -w net.inet.ip.forwarding=1
2. 永久文件设置转发端口
sudo vim /etc/sysctl.conf
添加内容:
net.ip.forwarding=1 net.inet6.ip6.forwarding=1
执行命令使生效:
sysctl -p // mac os x 下不生效,无此命令...
3. 查看生效转发端口
sudo sysctl -a | grep forward
yg-mac:Java homer$ sudo sysctl -a | grep forward net.inet.ip.forwarding: 1 net.inet6.ip6.forwarding: 0
说明: 1 - 表示生效, 0 - 表示未生效
4. 生效配置
sudo pfctl -evf /etc/pf.anchors/com.pow // OSX Yosemite以后版本
或
sudo pfctl -f /etc/pf.conf // OSX Yosemite以前版本
5. 开机启动
sudo pfctl -e // 开启开机启动
sudo pfctl -d // 关闭开机启动
ipfw 命令(OSX Yosemite 10.10.3 以前版本有的命令):
ipfw (Internet Protocol FireWall)
a、查看规则:
$ sudo ipfw list
00100 fwd 127.0.0.1,1081 tcp fromany to 127.0.0.1 dst-port 80 in
65535 allow ip from any to any
b、删除规则:
sudo ipfw delete 100
c、新增规则:
sudo ipfw add fwd 127.0.0.1,1081tcp from any to 127.0.0.1 80 in
Mac 开启远程登录端口号
Mac Pro 系统,默认是关闭了ssh远程登录的端口号连接,需要开启才可以ssh连接
1)打开偏好设置 ——> 共享
2)勾选远程登录——>所有用户,如下图
参考推荐:
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2017-12-19 19:30:32
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
纯技术文档啊,应该收录高
虽然我不用macos,但必须为作者的分享专研精神点赞