我需要创建一个新的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时如何添加它。
答案 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的建议相同,但有点简单。