Mongo 数据库:无法连接 Laravel Homestead

Mongo DB: Failed to connect on Laravel Homestead

我需要创建一个新的 Laravel 项目并且我需要使用 Mongo 数据库作为数据库服务器。根据 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。 Homestead:8.4.0 Mongo数据库shell:v3.6.3

稍后编辑

虚拟机启动后我执行了这条命令:

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 数据库没有安装?!即使我添加了标志。现在我需要弄清楚每次启动 VM 时如何添加它。

经过数小时的搜索,我设法解决了我的问题,因此我将 post 进行修复。 因为我没有找到任何可以帮助我的东西,所以我开始检查 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

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

和运行 vagrant reload --provision,这与@NicuVlad的建议相同,但更容易一些。