缺少 MongoDB 3.2.6 初始化脚本

缺少 MongoDB 3.2.6 初始化脚本

我关注了方向通过 apt-get 安装 MongoDB。验证时出现了问题,但在 StackExchange 上跟踪后发现这是签名过程中的一个已知问题,因此我重新运行了该程序,但apt-get install mongodb没有使用-y标志。安装成功了,至少看起来如此。但当我尝试启动服务时,发生了以下情况:

$ sudo service mongod start
[sudo] password for mark: 
Failed to start mongod.service: Unit mongod.service not found.
$ sudo service mongod status
● mongod.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)

果然,该文件/etc/init.d/mongod不存在。安装说明明确指出提供了此文件:

mongodb-org 包包含各种初始化脚本,包括初始化脚本 /etc/init.d/mongod。

该文件确实存在于 GitHub 上的源代码中。所以我可以继续。但我想知道为什么成功安装的软件包中缺少一个关键的配置文件。(称我为完美主义者。)

我的 Ubuntu 版本是 16.10,它不受官方支持。我认为这不可能是原因。发布版本真的是罪魁祸首吗?还是安装未签名的软件包是个错误?还是软件包本身有问题?还是这里发生了其他事情?

答案1

我错了。问题在于版本不兼容。似乎安装后脚本默默失败了,这就是为什么丢失的文件不存在的原因。

解决方案与这个问题,这表明运行这个脚本

我对脚本做了一些小改动,以适应 MongoDB 3.2.6 默认文件位置的更改。(这些更改并非绝对必要。我只是不喜欢繁琐的东西。)以前,数据文件位于/data/db/。默认位置现在是/var/lib/mongodb/,旧位置不再使用。所以我删除了脚本中引用该路径的行。

Ubuntu 现在默认使用 systemd 而不是 Upstart,因此/var/run/mongodb/不再需要。我只是注释掉了这些行,而不是删除它们。如果您出于某种原因仍在使用 Upstart,则需要取消注释引用此路径的三行。

更新后的脚本如下所示:

# enable_mongo.sh

echo '[Unit]
Description=High-performance, schema-free document-oriented database
After=syslog.target network.target

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod -f /etc/mongod.conf

[Install]
WantedBy=multi-user.target' > /lib/systemd/system/mongod.service

# Setup the required directories
# mkdir -p /var/run/mongodb/
mkdir -p /var/log/mongodb/
mkdir -p /var/lib/mongodb/

# chown mongodb:mongodb /var/run/mongodb/
chown mongodb:mongodb /var/log/mongodb/
chown mongodb:mongodb /var/lib/mongodb/

# chmod 0755 /var/run/mongodb/
chmod 0755 /var/log/mongodb/
chmod 0755 /var/lib/mongodb/

# Start the new service and enable it on boot
systemctl --system daemon-reload
systemctl enable mongod.service

echo "Starting"
systemctl start mongod.service

相关内容