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

相關內容