我是Ubuntu和node express的新手。但是我已经掌握了足够的知识,我可以使用Forever设置一个静态Web服务器,并在其旁边运行REST API。我还成功安装了Samba,直接从我的Windows机器上编辑文件。
大约一个月前,我启动并运行了我的静态网站。它有一个表单,它对REST API服务执行jQuery POST。使用Forever,我运行了两个节点进程,一个用于静态网站服务,另一个用于API服务,BOTH在同一端口80上进行侦听。
一个月前一切正常,我可以加载静态网站,然后提交表单,我会通过我的API服务收到我的电子邮件通知。但大约一周前,一切都在下降,包括我的Samba文件共享。登录到我的服务器,'forever list'为空。好的,所以我认为服务器必须在我不知情的情况下重新启动。然后我再次启动我的服务:
root@xxxxx:~/www/web/ourwedding# forever start staticserver.js
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: staticserver.js
root@xxxxx:~/www/web/ourwedding# forever start apiserver.js
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: apiserver.js
我永远跑到列表:
root@xxxxx:~/www/web/ourwedding# forever list
info: Forever processes running
data: uid command script forever pid id logfile uptime
data: [0] IKkB /usr/bin/nodejs staticserver.js 469 471 /root/.forever/IKkB.log 0:0:0:26.307
data: [1] APxV /usr/bin/nodejs apiserver.js 479 481 /root/.forever/APxV.log STOPPED
我看到错误并去看看:
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at errnoException (net.js:901:11)
at Server._listen2 (net.js:1039:14)
at listen (net.js:1061:10)
at Server.listen (net.js:1135:5)
at EventEmitter.app.listen (/root/www/web/ourwedding/node_modules/express/lib/application.js:595:24)
at Object.<anonymous> (/root/www/web/ourwedding/apiserver.js:69:18)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3
error: Forever detected script exited with code: 8
然后我花了几个小时试图弄清楚发生了什么。从我到目前为止发现的那个错误是因为我在同一个端口上运行这两个服务......但它之前工作正常吗?我必须在同一个端口上运行它们,因为我正在对同一个域进行AJAX POST。
我尝试过的事情:
我没有尝试的事情:
我想我只是想知道我是否会疯狂,或者我是否在一个月前做了一些我不能记住的事情,这让我可以在同一个端口上运行这两项服务。
欢迎任何帮助或建议。
谢谢。
答案 0 :(得分:0)
唉......答案是: 我的记忆是垃圾: - )
我决定将两个服务合二为一,当我查看代码时,我注意到我已将它们合并在一起!我是个白痴。感谢那些试图提供帮助的人,但在这种情况下肯定是用户错误。
如前所述,EADDRINUSE被抛出,因为两个服务都试图在同一个端口上侦听......我只是认为我已经解决了它而没有合并我的文件。