Ubuntu 16.04 のソフトウェア センターから MongoDB をインストールしました。
mongodb 1:2.6.10-0ubuntu1
私は信じているこれ現在、MongoDB 2.6.10 が含まれています。
apache2 ローカルホスト セットアップでアプリケーションを実行していますが、mongod
システムが起動するたびに次のように手動で起動する必要があります。
mongod
自動的に起動するようにしたいです。
これを実現するための主な方法は 2 つあります。
update-rc.d mongodb defaults
から: https://askubuntu.com/a/89914/367134
その結果は次のようになります:
update-rc.d mongodb defaults
insserv: fopen(.depend.stop): Permission denied
しかし、これはエラーを生成しませんでした:
sudo update-rc.d mongodb defaults
「MongoDB 構成ファイル」を編集するという参照もいくつか見ましたが、構成ファイルが複数の場所にあるため、これが何を指すのかわかりません。
/etc/mongodb.conf
/etc/init/mongodb.conf
/etc/init.d/mongodb
そして、正しいファイルに移動した後、何を変更すればよいかわかりません。
で/etc/init/mongodb.conf
確認できます:
start on runlevel [2345]
stop on runlevel [!2345]
mongod
16.04 でシステム起動時に 確実に開始する正しい方法は何ですか?
私は読んでいますこれ、そして中を覗いてみる/etc/rc2.d
と、次のことがわかります。
S01mongodb@ --> /etc/init.d/mongodb
アップデート:
提案を実行した後:
sudo systemctl enable mongodb
再起動して実行すると、次のsystemctl status mongodb
結果が返されます。
* mongodb.service - An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2016-04-18 23:42:28 AEST; 7min ago
Docs: man:mongod(1)
Process: 655 ExecStart=/usr/bin/mongod --config /etc/mongodb.conf (code=exited, status=100)
Main PID: 655 (code=exited, status=100)
Apr 18 23:42:27 me-comp systemd[1]: Started An object/document-oriented database
Apr 18 23:42:28 me-comp systemd[1]: mongodb.service: Main process exited, code=exited, status=100/n/a
Apr 18 23:42:28 me-comp systemd[1]: mongodb.service: Unit entered failed state.
Apr 18 23:42:28 me-comp systemd[1]: mongodb.service: Failed with result 'exit-code'.
権限のトラブルシューティング
/var/lib/mongodb
= drwxr-xr-x mongodb mongodb
.
/var/log/mongodb
= drwxr-xr-x mongodb mongodb
.
/var/log/mongodb/mongodb.log
= -rw-r--r-- mongodb nogroup
.
/var/log/mongodb/mongod.log
= -rw-r--r-- mongodb mongodb
.
/data/db/mongod.lock
= -rwxrwxr-x me me
0 バイト。
/data
= drwxr-xr-x root root
.
/data/db
= drwxr-xr-x me root
.
設定ファイルの内容
/etc/mongodb.conf
:
# Where to store the data.
dbpath=/var/lib/mongodb
#where to log
logpath=/var/log/mongodb/mongodb.log
logappend=true
bind_ip = 127.0.0.1
#port = 27017 ...
答え1
インストール
これは私が最終的に使用した方法です (ユーザー Adam C のコメントより: mongodb の最新バージョンの使用)。私の場合はうまくいきましたが、私はこの件に関して専門家ではありません。
https://askubuntu.com/a/757385/367134
次に、サービス ファイルを作成する必要がありました。以下を参照してください。
https://askubuntu.com/a/694226/367134
そして、そのサービス ファイル内のパスを次のように編集します。
/etc/mongodb.conf
に:
/etc/mongod.conf
次に、次のコマンドを実行して、システム起動時に mongodb を起動します。
sudo systemctl enable mongodb
見る:
現在、mongodb は 16.04 システムの起動時に起動します。
古いMongoDBのアンインストール
前に私はそうしましたが、既存のインストールとディレクトリを削除する必要がありました。これは次のようにしました(主にhttps://askubuntu.com/a/497144/367134):
# go to /etc/apt/sources.list.d and remove any mongodb lists, then:
# sanity check - see what is installed
sudo dpkg -l | grep mongo
# remove all packages
sudo apt-get remove mongodb* --purge
sudo apt-get autoremove
# remove old directories
sudo rm -r -f /var/lib/mongodb/
sudo rm -r -f /var/log/mongodb/
答え2
開発中に、反対のこと、つまり、1 つのグローバル インストールではなく、個別に起動する複数のローカル分離インスタンスが必要になる場合もあります...
mongod --dbpath ./mongo_db_data/ --logpath ./mongo_logs/mongodb.log --port 12345
答え3
私にとってはただやるだけでsudo systemctl enable mongod
答え4
私の場合、DBパスの権限が間違っているためです。
chown mongodb:mongodb /var/lib/mongodb