2017-02-08 46 views
0

有几个帖子与Mongodb 3.2有关,但是当我尝试安装3.4时,启动不会发生。相反,日志文件中会出现一个不寻常的错误(显示在列表的最后)。 这可能是因为安装了旧版本? 我做了一个apt-get删除和清除。 有人可以提出为什么会出现错误吗?64bit的Mongodb 3.4 Ubuntu 16.04 mongodb-27017.sock错误

我也跟着下面的步骤,所概述here

$ sudo apt-get remove mongodb* 
$ sudo apt-get purge mongodb* 
$ sudo rm -rf /usr/lib/mongodb 
$ sudo rm -rf /usr/log/mongodb 
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 
$ echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list 
$ sudo apt-get update 
$ sudo apt-get install -y mongodb-org 
.. 
.. 
E: There were unauthenticated packages and -y was used without --allow-unauthenticated 

$ sudo apt-get install mongodb-org # removed -y to get it going 
.. 
.. 


Setting up mongodb-org (3.4.2) ... 
$ sudo chown -R mongodb:mongodb /var/log/mongodb 
$ sudo chown -R mongodb:mongodb /var/lib/mongodb # modified ownership in view of what is stated on the mongodb installation note 

$ # created the following file 
$ cat /etc/systemd/system/mongod.service 
[Unit] 
Description=MongoDB Database Service 3.4 
Wants=network.target 
After=network.target 

[Service] 
User=mongodb 
Group=mongodb 
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf 
StandardOutput=syslog 
StandardError=syslog 

[Install] 
WantedBy=multi-user.target 

# startup 
$ sudo systemctl daemon-reload 
$ sudo service mongod start 

# nothing happens, I then viewed the log file and the following error appears: 
$ cat /var/log/mongodb/mongod.log 
2017-02-08T22:08:26.155+0000 I CONTROL [main] ***** SERVER RESTARTED ***** 
2017-02-08T22:08:26.159+0000 I CONTROL [initandlisten] MongoDB starting : pid=11384 port=27017 dbpath=/var/lib/mongodb 64-bit host=12g 
2017-02-08T22:08:26.159+0000 I CONTROL [initandlisten] db version v3.4.2 
2017-02-08T22:08:26.159+0000 I CONTROL [initandlisten] git version: 3f76e40c105fc223b3e5aac3e20dcd026b83b38b 
2017-02-08T22:08:26.159+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016 
2017-02-08T22:08:26.159+0000 I CONTROL [initandlisten] allocator: tcmalloc 
2017-02-08T22:08:26.159+0000 I CONTROL [initandlisten] modules: none 
2017-02-08T22:08:26.159+0000 I CONTROL [initandlisten] build environment: 
2017-02-08T22:08:26.159+0000 I CONTROL [initandlisten]  distmod: ubuntu1604 
2017-02-08T22:08:26.159+0000 I CONTROL [initandlisten]  distarch: x86_64 
2017-02-08T22:08:26.159+0000 I CONTROL [initandlisten]  target_arch: x86_64 
2017-02-08T22:08:26.159+0000 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log", quiet: true } } 
2017-02-08T22:08:26.178+0000 E NETWORK [initandlisten] Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted 
+0

我修改了袜子文件所有权如下'$ sudo的CHOWN的MongoDB:MongoDB中的/ tmp/MongoDB的-27017.sock'。一旦重新启动,日志文件现在指示:'2017-02-08T22:54:13.414 + 0000 I NETWORK [thread1]正在等待端口27017上的连接。该服务尚未开始。 – alortimor

回答

0

@mcgraddy,谢谢,这确实有帮助。创建目录并复制服务文件是答案。

$ sudo cp /etc/systemd/system/mongod.service /etc/systemd/system/mongodb.service 

$ sudo mkdir -p /data/db 
$ sudo chown -R $USER:$USER /data 

我必须更改/ data的所有权。 启动服务和查看状态显示一切运行如预期:

$ sudo service mongod start 
$ sudo systemctl status mongodb 
● mongodb.service - MongoDB Database Service 
    Loaded: loaded (/etc/systemd/system/mongodb.service; enabled; vendor preset: 
    Active: active (running) since Thu 2017-02-09 13:26:07 GMT; 9min ago 
Main PID: 1184 (mongod) 
    CGroup: /system.slice/mongodb.service 
      └─1184 /usr/bin/mongod --quiet --config /etc/mongod.conf 

Feb 09 13:26:07 systemd[1]: Started MongoDB Database Service. 
1
Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted 

这意味着mongod的过程是由root启动user.So你可以删除sock文件或运行此命令来解决这个问题问题:

sudo chown `whoami` /tmp/mongodb-*.sock 

确保端口分配应该是可访问,而不是阻止你的防火墙,然后就重启星期一上帝的过程。

控制台输出中的等待连接消息指示 mongod.exe进程正在成功运行。

您可以检出​​。

希望这会有所帮助。

+0

感谢您的建议,我现在在日志尾部看到'I NETWORK [thread1]正在等待端口27017上的连接',但是当我运行'sudo systemctl status mongodb'时,输出显示为●●mongodb。服务 加载:未找到(原因:没有这样的文件或目录) 有效:无效(死)'。你能建议它指的是哪个文件,因为安装没有问题? – alortimor

+1

@alortimor。检查你的配置文件,确保你已经创建了'/ data/db'文件夹,并运行'systemctl enable mongod.service' – McGrady