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

我已经注册了DirectAdmin的VPS,运行CentOS,我使用的是我从其他网站注册的域名。 我已经做了必要的configuration,使域显示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上运行一个基本的node.js应用程序,端口3000,似乎一切正常,但是当我在端口3000上访问我的域名或VPS IP时,服务器不响应。 我如何解决这个问题? 我是否需要在我的VPS上configuration端口以使服务器响应?

当在浏览器中未指定端口的情况下打开域时,如何configurationVPS以连接到节点应用程序,而不是显示默认的index.html页面?

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

编辑:我解决了MongoDB的问题,只需重新安装它。 我猜在安装过程中第一次出现了问题。

似乎你是非特权用户启动mongod,所以它不能打开日志文件。 您应该以系统服务的身份运行mongod服务,然后为用户提供访问权(检查db.addUser文档)。

要在生产环境中运行Node.js,最好使用https://github.com/nodejitsu/forever等工具,然后通过代理来代理请求。 你可以使用Apache,所以设置它来监听你的index.html到另一个端口,比如在ports.conf中说8080

  Listen 8080 

并添加一个虚拟redirect到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也&#x3002;

对于这部分问题:

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

您用来启动MongoDB的用户没有权限访问使用logpathconfiguration选项指定的日志文件。 您应该首先找出它正在运行的用户(通常是使用10gen RPM的mongod)。

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

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

您可能需要使用sudo或以root身份login才能修改权限(或者可能创build文件)。 假设它存在,那么你将需要改变所有权,如下所示:

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

另一个选项是在别处创build一个新的日志文件,并将logpath选项改为指向该文件。