在运行 CentOS 的 VPS 上使用 mongoDB 运行 node.js 应用程序时出现问题

在运行 CentOS 的 VPS 上使用 mongoDB 运行 node.js 应用程序时出现问题

我已经使用 DirectAdmin 注册了一个 VPS,运行 CentOS,并且我正在使用从其他网站注册的域名。我已经完成了必要的配置,使域名显示 VPS 的默认页面。我还使用 CentOS 安装了 node.js 和 mongoDB,但我无法运行该应用程序。我为 MongoDB 设置了一个 .conf 文件,其中 bind_ip 设置为 VPS 的 IP,当我尝试在端口 27017 上运行 MongoDB 时,我收到以下消息:

service mongod start
Starting mongod:                                           [  OK  ]
bash: /var/log/mongodb/mongodb.log: Permission denied

我认为这是因为我没有对 VPS 进行任何授权,但我找不到如何进行授权。我做错了什么?

另外,我无法让 node.js 正常运行。当我在 CentOS 端口 3000 上运行基本的 node.js 应用程序时,一切似乎都很好,但是当我在端口 3000 上访问我的域名或 VPS IP 时,服务器没有响应。我该如何解决这个问题?我需要在我的 VPS 上配置端口才能使服务器响应吗?

当在浏览器上打开域名而不指定端口时,如何配置 VPS 以连接到节点应用程序,而不是显示默认的 index.html 页面?

我没有在 VPS 上配置 node.js 的经验,所以我的最后一个问题是:有没有关于在 VPS 上使用 MongoDB 运行 node.js 的教程?提前致谢。

编辑:我通过重新安装解决了 MongoDB 问题。我猜第一次安装时出了点问题。

答案1

似乎您以非特权用户身份启动 mongod,因此它无法打开日志文件。您应该将 mongod 服务作为系统服务运行,然后向用户提供访问权限(检查 db.addUser 文档)。

要在生产环境中运行 Node.js,最好建议使用类似以下工具:https://github.com/nodejitsu/forever然后通过代理代理请求。您可以使用 Apache 执行此操作,因此在 ports.conf 中将其设置为监听 index.html 的另一个端口,例如 8080

    Listen 8080

并添加一个虚拟重定向到 80 的应用程序,例如:

    <VirtualHost you.example.com:80>
        ProxyRequests off

        <Proxy *>
           Order deny,allow
           Allow from all
        </Proxy>
        <Location />
            ProxyPass http://localhost:3000/
            ProxyPassReverse http://localhost:3000/
        </Location>
    </VirtualHost>

也许你会因为这个设置而失去一些纯 Node 性能,所以看看https://github.com/nodejitsu/node-http-proxy还。

答案2

对于这部分问题:

bash:/var/log/mongodb/mongodb.log:权限被拒绝

您用于启动 MongoDB 的用户没有权限访问您使用指定的日志文件logpath 配置选项。您应该首先找出它以哪个用户身份运行(如果您使用的是 10gen RPM,通常是 mongod)。

然后查看日志文件的所有者:

ls -al /var/log/mongodb/mongodb.log

您可能需要使用sudo或以 root 身份登录来修改权限(或者创建文件)。假设它存在,那么您将需要更改所有权,如下所示:

chown mongod:mongod /var/log/mongodb/mongodb.log

另一个选择是在其他地方创建一个新的日志文件,并更改 logpath 选项以指向该文件。

相关内容