我按照指示通过 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)
Run Code Online (Sandbox Code Playgroud)
果然,该文件/etc/init.d/mongod不存在。安装说明明确说明提供了此文件:
mongodb-org 包包含各种初始化脚本,包括初始化脚本 /etc/init.d/mongod。
该文件确实存在于 GitHub 上的源代码中。所以我可以继续。但我想知道为什么成功安装的软件包中缺少关键配置文件。(称我为完全主义者。)
我的 Ubuntu 版本是 16.10,它不受官方支持。我不认为这可能是原因。真的要怪发行版吗?还是安装未签名的软件包是错误的?还是包裹本身坏了?还是这里发生了其他事情?
我只是错了。版本不兼容是问题所在。似乎安装后脚本无声无息地失败了,这就是丢失文件不存在的原因。
根据对 MongoDB 3.2.6 的默认文件位置的更改,我对脚本进行了细微更改。(这些更改并不是绝对必要的。我只是不喜欢 cruft。)以前,数据文件位于/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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13148 次 |
| 最近记录: |