node.js - 在我自己的服务器上安装 TextBelt

标签 node.js git redis npm

我想将 TextBelt(一个开源 cURL SMS API)安装到我自己的 Amazon EC2 Web 服务器并使用它发送短信。但是,我不确定如何正确地解决这个问题。

我使用 git 将所有文件克隆到名为 /var/www/textbelt 的目录中。然后,我使用 npm 安装 package.json 文件中列出的所有依赖项,并按照 this 答案中提供的说明创建符号链接(symbolic link)。我看到“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)。需要注意的一件事是,我目前在 /var/www/ 中有 textbelt 文件夹,但 Web 文档根目录位于 /var/www/html/。我认为我不必实际将该文件夹移动到文档根目录,这是正确的吗?我需要如何继续?

最佳答案

事实证明答案比我想象的要简单得多。我的安装没有任何问题,但端口 9090 没有在我的防火墙中打开。打开此端口立即解决了问题。

关于node.js - 在我自己的服务器上安装 TextBelt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25212073/

相关文章:

linux - 通过 git 推送文件后如何在 Openshift 服务器上使文件可执行

git - 添加新的外部 Git 存储库连接 - Visual Studio Team Services

c# - 使用 StackExchange.Redis 库时对 Redis 的超时和缓慢请求

css - <img src ="*.svg"> 内联 SVG 以进行 CSS 编辑

javascript - .find() 不是 mongoose + nodejs 中的函数

git - Jenkins 稀疏 checkout : only content of directory

c# - 使用接口(interface)时未触发方法

javascript - 如何处理包含传感器读数和时间戳的对象数组,并验证传感器具有特定值的次数和时间?

node.js - Azure 移动服务( Node 后端)__updatedAt 属性在编辑后不会自动设置

c++ - Redis 性能问题