Mongo DB:无法在Laravel Homestead上连接

时间:2019-06-03 10:18:22

标签: laravel mongodb homestead

我需要创建一个新的Laravel项目,并且需要使用Mongo DB作为数据库服务器。遵循Homestead文档后,我将其添加到了 Homeasted.yaml 文件中:

mongodb: true

根据我在日志中看到的内容,创建了mongo数据库:

homestead-7: Running: script: Creating Mongo Database: homestead

但是在此之后,我收到了此消息:

    homestead-7: Running: script: Creating Mongo Database: homestead
    homestead-7: MongoDB shell version v3.6.3
    homestead-7: connecting to: mongodb://127.0.0.1:27017/homestead
    homestead-7: 2019-06-03T10:01:52.103+0000 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
    homestead-7: 2019-06-03T10:01:52.104+0000 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
    homestead-7: connect@src/mongo/shell/mongo.js:251:13
    homestead-7: @(connect):1:6
    homestead-7: exception: connect failed
The SSH command responded with a non-zero exit status.

根据我在互联网上发现的信息,可能是mongo服务未启动。我重新启动了该框,但这次未进行设置,但结果相同。命令:

vagrant@homestead:~$ mongo

我还发现了一些解决方案,这些解决方案涉及更改Ubutu O.S上的某些文件,但在我的情况下,由于该框将作为一个新实例启动,因此将无法正常工作。

有人知道如何解决此问题吗?预先感谢!

Laravel版本:5.8。 宅基地:8.4.0 MongoDB Shell:v3.6.3

最新编辑

VM启动后,我执行了以下命令:

sudo apt-get install mongodb

安装后,我可以执行“ mongo ”命令:

MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-use

奇怪,所以实际上未安装Mongo DB?即使我添加了标志。现在,我需要弄清楚每次启动VM时如何添加它。

2 个答案:

答案 0 :(得分:0)

经过数小时的搜索,我设法解决了问题,因此我将发布修复程序。 因为找不到任何可以帮助我的东西,所以我开始检查Homestead脚本以了解Mongo的安装方式,并在 homestead.rb 中找到了这一行:

# Install MongoDB If Necessary
if settings.has_key?('mongodb') && settings['mongodb']
  config.vm.provision 'shell' do |s|
    s.name = 'Installing MongoDb'
    s.path = script_dir + '/install-mongo.sh'
  end
end

所以我搜索了名为“ install-mongo.sh ”的代码,发现这种情况:

if [ -f /home/vagrant/.mongo ]
then
    echo "MongoDB already installed."
    exit 0
fi

因此,仅当“ /home/vagrant/.mongo”文件不存在时,才不会每次都安装Mongo DB。在这一点上,我意识到也许Mongo无法安装,但已写入此文件。

因此解决方案是销毁Vagrant框并从头开始重新创建它:

vagrant destroy
vagrant up --provision

答案 1 :(得分:0)

在Homestead.yaml中的功能下:添加-mongodb: true

并运行vagrant reload --provision,它与@NicuVlad的建议相同,但有点简单。