EOS智能合约开发(十九)Ubuntu 安装 Mongodb及问题汇总

本文详细介绍MongoDB的两种安装方法:通过apt-get和.tar.gz二进制包安装,涵盖数据目录配置、服务启动与管理、问题解决及卸载过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上篇文章,我们讲到了,使用EOS保存数据使用MongoDB插件,那么我们今天看看MongoDB是如何安装的。我参考了MongoDB官方文档,介绍两种方式安装,供大家参考。
方式一:从apt-get安装

  1. 添加mongodb签名到APT
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
    
  2. 创建/etc/apt/sources.list.d/mongodb-org-4.0.list文件并写入命令
    echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
    
  3. 更新软件源列表
    sudo apt-get update
    
  4. 安装mongodb(默认是安装稳定版)
    sudo apt-get install -y mongodb-org
    
  5. 或者安装指定版本:
    sudo apt-get install -y mongodb-org=4.0.1 mongodb-org-server=4.0.1 mongodb-org-shell=4.0.1 mongodb-org-mongos=4.0.1 mongodb-org-tools=4.0.1
    

方式二:从 .tar.gz 二进制包安装
6. 下载最新安装包
官网下载地址:https://www.mongodb.com/download-center?jmp=nav#community

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1404-3.2.9.tgz
  1. 解压
tar -zxvf mongodb-linux-x86_64-ubuntu1404-3.2.9.tgz
  1. 重命名并移动到安装目录(可自定义)

    sudo mv mongodb-linux-x86_64-ubuntu1404-3.2.9/ /usr/local/mongodb   # 将解压包拷贝到指定目录进行安装
    
  2. 创建 mongo 的数据目录
    MongoDB 默认的数据目录是 /data/db/ ,就直接使用默认的。

    sudo mkdir -p /data/db    #创建数据存储目录
    sudo chmod 755 /data/*    #赋予目录权限
    
  3. 启动

    mongod    #启动服务端
    mongo    #启动客户端
    

配置MongoDB
控制的配置文件在:/etc/mongodb.conf
控制脚本在:/etc/init.d/mongodb
MongoDB实例会把数据存放在:/var/lib/mongodb
日志存放在:/var/log/mongodb
我们需要限制Mongodb使用内存大小,如下配置:
打开/etc/mongod.conf
增加如下:

...
storage:
  dbPath: /data/mongodb
  journal:
    enabled: true
storage :
   wiredTiger :
      engineConfig :
         cacheSizeGB : 4
...

默认由mongodb用户运行。
如果显示目录不存在的话,需要运行下列命令指定文件夹:

```
mongod --dbpath /var/lib/mongodb
```

如果想要切换用户运行MongoDB的话,需要设置 /var/lib/mongodb 、 /var/log/mongodb两个目录的权限
启动、停止、重启

```
sudo service mongodb start
sudo service mongodb stop
sudo service mongodb restart
```

通过mongodb shell测试安装结果

```
mongodb
```

卸载MongoDB
停止MongoDB

```
sudo service mongod stop
```

移除包文件

```
sudo apt-get purge mongodb-org*
```

删除存放数据的目录

```
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
```

曾经我们要定义一个系统启动时自启动服务的方式是在/etc/init.d 目录下写一个脚本来执行,现在在ubuntu的服务模式下,我们可以丢弃那种方式,服务模式的命令是service,而现在的ubuntu系统推崇使用的systemctl命令,他俩的使用方法的区别就在于参数的顺序。

  • 定义一个配置文件mongod.conf
  • 定义一个服务文件,放置在/etc/systemd/system/

参考文档
MongoDB官方文档:https://docs.mongodb.com/getting-started/shell/tutorial/install-mongodb-on-ubuntu/
Ubuntu下MongoDB 安装教程及简单操作:http://www.linuxidc.com/Linux/2016-07/133254.htm

如果我们在启动mongoDb过程中发现如下问题:

Failed to start mongod.service: Unit not found

解决办法如下:
服务模式启动mongodb
我们也可以使用ubuntu系统的服务模式。
1、创建配置文件:

sudo vim   /etc/systemd/system/mongodb.service

2、在里面追加文本:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
 
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
 
[Install]
WantedBy=multi-user.target

3、保存,退出
4、启动服务

sudo systemctl start mongodb
sudo systemctl status mongodb

显示如下:

eos@eos-VirtualBox:~$ sudo systemctl start mongodb
eos@eos-VirtualBox:~$ sudo systemctl status mongodb
● mongodb.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/etc/systemd/system/mongodb.service; disabled; vendor preset: enabled)
   Active: active (running) since 二 2019-06-11 11:03:32 CST; 13s ago
 Main PID: 1610 (mongod)
   CGroup: /system.slice/mongodb.service
           └─1610 /usr/bin/mongod --quiet --config /etc/mongod.conf

6月 11 11:03:32 eos-VirtualBox systemd[1]: Started High-performance, schema-free document-oriented database.

mongoDB遇到的一些问题
service mongodb start 失败

status显示failed

eos@eos-VirtualBox~ # service mongod start
eos@eos-VirtualBox~ # service mongod status
● mongod.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2017-08-15 12:03:51 CEST; 2s ago
     Docs: https://docs.mongodb.org/manual
  Process: 26942 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=100)
 Main PID: 26942 (code=exited, status=100)
 
Aug 15 12:03:50 machine systemd[1]: Started High-performance, schema-free document-oriented database.
Aug 15 12:03:51 machine systemd[1]: mongod.service: Main process exited, code=exited, status=100/n/a
Aug 15 12:03:51 machine systemd[1]: mongod.service: Unit entered failed state.
Aug 15 12:03:51 machine systemd[1]: mongod.service: Failed with result 'exit-code'.

修复方法:

cd 到/var/lib/mongodb 文件夹下(我也不知道为什么非要cd到这个文件夹下,但是事实证明需要到这个目录下才行)

chown -R mongodb:mongodb /var/lib/mongodb

然后重启mongodb服务。

修改mongodb数据文件
修改配置文件

sudo vim /etc/mongo.conf

修改如下配置

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  #dbPath: /var/lib/mongodb
  dbPath:  /media/eos/hdd/mongodb  //修改为指定位置
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  #path: /var/log/mongodb/mongod.log
  path: /media/eos/hdd/mongodblog/mongod.log //修改为指定位置

首先用mongodb启动mongo 指定数据库文件后,带上–repair参数

mongodb --dbpath /media/eos/hdd/mongodb  --repair

显示如下:

eos@eos-B250M-D2V:/media/eos/hdd$ sudo mongod -dbpath /media/eos/hdd/mongodb --repair
2019-08-16T14:58:51.211+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-08-16T14:58:51.215+0800 I CONTROL  [initandlisten] MongoDB starting : pid=21206 port=27017 dbpath=/media/eos/hdd/mongodb 64-bit host=eos-B250M-D2V
2019-08-16T14:58:51.215+0800 I CONTROL  [initandlisten] db version v4.0.1
2019-08-16T14:58:51.215+0800 I CONTROL  [initandlisten] git version: 54f1582fc6eb01de4d4c42f26fc133e623f065fb
2019-08-16T14:58:51.215+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2g  1 Mar 2016
2019-08-16T14:58:51.215+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2019-08-16T14:58:51.215+0800 I CONTROL  [initandlisten] modules: none
2019-08-16T14:58:51.215+0800 I CONTROL  [initandlisten] build environment:
2019-08-16T14:58:51.215+0800 I CONTROL  [initandlisten]     distmod: ubuntu1604
2019-08-16T14:58:51.215+0800 I CONTROL  [initandlisten]     distarch: x86_64
2019-08-16T14:58:51.215+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2019-08-16T14:58:51.215+0800 I CONTROL  [initandlisten] options: { repair: true, storage: { dbPath: "/media/eos/hdd/mongodb" } }
2019-08-16T14:58:51.216+0800 I STORAGE  [initandlisten] Detected data files in /media/eos/hdd/mongodb created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2019-08-16T14:58:51.216+0800 I STORAGE  [initandlisten]
2019-08-16T14:58:51.216+0800 I STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine

恭喜你,安装成功。可以,配置节点连接EOS了。

2018年11月10整理于深圳
2019年06月11修改与深圳

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值