我在腾讯租了一个云服务器,公网IP是119.29.138.107。
我在 start_gateway.php 里把0.0.0.0改成119.29.138.107然后在尝试运行,就出现了Error。
PHP Warning: stream_socket_server(): unable to connect to tcp://119.29.138.107:8282 (Cannot assign requested address) in /home/kong/GatewayWorker/Workerman/Worker.php on line 1383
Warning: stream_socket_server(): unable to connect to tcp://119.29.138.107:8282 (Cannot assign requested address) in /home/kong/GatewayWorker/Workerman/Worker.php on line 1383
PHP Fatal error: Uncaught exception 'Exception' with message 'Cannot assign requested address' in /home/kong/GatewayWorker/Workerman/Worker.php:1385
Stack trace:
#0 /home/kong/GatewayWorker/Workerman/Worker.php(522): Workerman\Worker->listen()
#1 /home/kong/GatewayWorker/Workerman/Worker.php(418): Workerman\Worker::initWorkers()
#2 /home/kong/GatewayWorker/start.php(32): Workerman\Worker::runAll()
#3 {main}
thrown in /home/kong/GatewayWorker/Workerman/Worker.php on line 1385
但是0.0.0.0或者内网则可以,并且设置0.0.0.0后,可以通过学校的电脑访问。
请问一下这是为什么?是腾讯云的问题还是我Linux设置的问题?还是什么别的原因?
谢谢。:D
还有一个小建议:
网站发表问题下面的“浏览模式”经常被误认为是编辑框,然后按一下Blackspace就整个页面都倒退了,体验不是很好。
参考手册,http://doc3.workerman.net/faq/workerman-start-fail.html
简单的说119.29.138.107不是你服务器的IP,无法监听。
你可以运行
ip addr
看下你服务器ip是多少,如果对服务器ip有疑问,可以去问下腾讯云的客服。感谢你的建议,不过有个预览框体验会更好一些。
谢谢你的答复!
[root@VM_214_74_centos GatewayWorker]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:1e:dd:ba brd ff:ff:ff:ff:ff:ff
inet 10.104.214.74/18 brd 10.104.255.255 scope global eth0
valid_lft forever preferred_lft forever
这个的意思是只有内网IP吗?但是我用监听0.0.0.0确实可以被外网访问到。
不客气
如果对服务器ip有疑问,可以去问下腾讯云的客服。
遇到了同样的问题,写给未来同样遇到Cannot assign requested address问题的人。
当内网ip,0.0.0.0测试可以通过但是换成公网就不可以,请参照以下步骤进行检查:
1.ip要填对,公网ip
2.( 测试时)云服务器上,安全组配置要把端口允许的ip设为0.0.0.0/0或者其他IP
系统防火墙,也是要配置规则的,百度怎么配置就好了,测试时可以直接关掉。
系统默认防火墙是打开的,所以目测题主和我一样问题出在了系统防火墙这里。
遇到过同样的问题,后来工单咨询阿里云得知如果是阿里云专有网络的话,那么你的服务器的外网ip实际上不属于你这台服务器,这个ip实际上类似一个代理设备,客户端发的请求先到这个代理上,然后转发到你的真实服务器。由于这个ip不属于你这台服务器,所以监听不了,启动会报错。
如果是阿里云的经典网络就没问题,ip是真的你所在服务器的网卡上。
估计腾讯云也是类似的问题。
实际上没必要监听本机外网ip,直接监听0.0.0.0就好了,省事,移植性也好,不会给自己留坑。
专有网络不行,要把client和worker部署在一个内网里