我想将TextBelt(一个开源的cURL SMS API)安装到我自己的Amazon EC2 Web服务器上,并使用它来发送短信。但是,我不确定如何正确地解决这个问题。
我使用git
将所有文件克隆到名为/var/www/textbelt
的目录中。然后,我使用npm
安装package.json
文件中列出的所有依赖项,并根据this answer中提供的说明创建了符号链接。我看到“scripts”文件夹中有一个bash脚本start.sh
,所以我进入它并运行sh start.sh
。然后我收到以下消息:
nohup: appending output to ‘/home/ec2-user/nohup.out’
当然,我检查了日志,看到了这个:
^[[0;31mError: Cannot find module '/var/www/textbelt/scripts/app.js'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
由于某种原因,start.sh
错误地引用了app.js
路径。我通过将app.js
更改为../app.js
来解决此问题,并再次尝试。这是我的完整输出:
^[[0;42m hotnode ^[[m ^[[0;32mnode process restarted^[[m
^[[0;31mconnect.multipart() will be removed in connect 3.0
^[[m
^[[0;31mvisit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives
^[[m
^[[0;31mconnect.limit() will be removed in connect 3.0
^[[m
Listening on 9090
^[[0;31m
^[[m
^[[0;31mevents.js:72
^[[m
^[[0;31m throw er; // Unhandled 'error' event
^[[m
^[[0;31m ^[[m
^[[0;31m ^[[m
^[[0;31m ^[[m
^[[0;31m ^[[m
^[[0;31m ^[[m
^[[0;31m ^[[m
^[[0;31m ^[[m
^[[0;31m ^[[m
^[[0;31m ^[[m
^[[0;31m ^[[m
^[[0;31m ^[[m
^[[0;31m ^[[m
^[[0;31m ^[[m
^[[0;31m ^[[m
^[[0;31m^^[[m
^[[0;31m
^[[m
^[[0;31mError: Redis connection to localhost:6379 failed - connect ECONNREFUSED
at RedisClient.on_error (/var/www/textbelt/node_modules/redis-url/node_modules/redis/index.js:196:24)
at Socket.<anonymous> (/var/www/textbelt/node_modules/redis-url/node_modules/redis/index.js:106:14)
at Socket.emit (events.js:95:17)
at net.js:440:14
at process._tickCallback (node.js:419:13)
^[[m
在谷歌搜索“Redis连接到...失败”后,我发现this回答表明解决方案是通过键入redis-server
来启动Redis服务器。但是,我收到以下错误:
-bash: redis-server: command not found
这表明redis安装不正确。但是,在查看我的node_modules
文件夹后,我发现里面确实有一个redis-url
文件夹,(我假设)意味着依赖项已正确安装?我是否必须在服务器范围内进行安装?
我有点被困在这里。
总的来说,我不确定我是否正朝着正确的方向前进。安装和启动TextBelt API以使其正常运行的正确方法是什么。
更新:好吧,所以我发现我必须另外安装redis
服务器。重新启动所有内容,日志现在看起来很好:
^[[0;42m hotnode ^[[m ^[[0;32mnode process restarted^[[m
^[[0;31mconnect.multipart() will be removed in connect 3.0
^[[m
^[[0;31mvisit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives
^[[m
^[[0;31mconnect.limit() will be removed in connect 3.0
^[[m
Listening on 9090
但是,我认为实际发送短信需要进一步配置。例如,我尝试使用cURL使用我的服务器发送消息,就像我http://textbelt.com一样:
$ curl http://my.ip/text \
-d number=5551234567 \
-d "message=I sent this message for free with textbelt.com"
但是这不起作用(我得到的只是我的404未找到页面的HTML)。需要注意的一点是,我目前在textbelt
中有/var/www/
文件夹,但是网络文档根目录在/var/www/html/
中。我不认为我必须将文件夹实际移动到文档根目录,这是正确的吗?我该如何继续?
答案 0 :(得分:2)
事实证明,答案比我想象的要简单得多。我的安装没有任何问题,但是我的防火墙中的端口9090没有打开。打开此端口可立即解决问题。