您正在查看: Surou 发布的文章

thinkPhp5 连接 EOS中MongoDb

由于需要使用PHP开发api thinkPhp5连接EOS的mongo db数据,所以有此文
部署好PHP环境,放置好thinkPhp5项目后,修改数据库配置
编辑/var/www/application/database.php

return [
    'type'            =>  '\think\mongo\Connection',
    'hostname'        => '127.0.0.1',
    'database'        => 'eosmain',
    'username'        => '', //eos 环境部署的mongo db默认没有用户名和密码,只能本地访问
    'password'        => '',
    'hostport'        => '27017',

推荐文章:

Ubuntu彻底删除PHP7.0

  1. 删除php的相关包及配置
    sudo apt-get autoremove php7*
  2. 删除关联
    sudo find /etc -name "*php*" |xargs  rm -rf 
  3. 清除dept列表
    sudo apt purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`
  4. 检查是否卸载干净(无返回就是卸载完成)
    dpkg -l | grep php7.0

php 安装apache2 + php7.0并支持 MongoDB扩展支持

由于要做个EOS浏览器,展示MongoDb的数据so...

开始安装PHP运行环境

安装apache2

sudo apt-get install apache2

安装php7

sudo apt-get install php7.0

安装apache2 php7 module

sudo apt-get install libapache2-mod-php7.0

测试apache工作是否是正常


下面开始安装mongo-php-driver

从github获取最新版本mongo-php-driver的下载地址
开始下载

root@iZ2zea5mjpcmz9m17k56daZ:~# wget https://github.com/mongodb/mongo-php-driver/releases/download/1.5.1/mongodb-1.5.1.tgz

下载完毕后解压

root@iZ2zea5mjpcmz9m17k56daZ:~# tar -zxf mongodb-1.5.1.tgz 

进入安装目录

root@iZ2zea5mjpcmz9m17k56daZ:~# cd mongodb-1.5.1/

开始编译

root@iZ2zea5mjpcmz9m17k56daZ:~/mongodb-1.5.1# phpize
Configuring for:
PHP Api Version:         20151012
Zend Module Api No:      20151012
Zend Extension Api No:   320151012

如果提示The program 'phpize' is currently not installed先执行安装

root@iZ2zea5mjpcmz9m17k56daZ:~/mongodb-1.5.1# phpize
The program 'phpize' is currently not installed. You can install it by typing:
apt install php7.0-dev
root@iZ2zea5mjpcmz9m17k56daZ:~/mongodb-1.5.1# apt-get install php7.0-dev

继续执行编译

./configure
make && make install

修改当前使用php配置文件,添加mongodb.so扩展配置

vim /etc/php.ini
extension=mongodb.so

重启php-fpm服务

sudo service php7.0-fpm restart & service appache2 restart

在/var/www/html/中新建test.php进行测试

<?php
// http://php.net/manual/en/class.mongodb-driver-manager.php
$manager = new MongoDB\Driver\Manager();
echo '<pre>';
var_dump($manager);
echo '</pre>';
exit;

查看网址此文件返回如下,及配置完成

object(MongoDB\Driver\Manager)#1 (2) {
  ["uri"]=>
  string(20) "mongodb://127.0.0.1/"
  ["cluster"]=>
  array(1) {
    [0]=>
    array(11) {
      ["host"]=>
      string(9) "127.0.0.1"
      ["port"]=>
      int(27017)
      ["type"]=>
      int(0)
      ["is_primary"]=>
      bool(false)
      ["is_secondary"]=>
      bool(false)
      ["is_arbiter"]=>
      bool(false)
      ["is_hidden"]=>
      bool(false)
      ["is_passive"]=>
      bool(false)
      ["tags"]=>
      array(0) {
      }
      ["last_is_master"]=>
      array(0) {
      }
      ["round_trip_time"]=>
      int(-1)
    }
  }
}

  • 查看当前php使用的php.ini
    终端输入 php --ini查看Loaded Configuration File

  • 打开PHP Error输出
    打开当前使用 php.ini 修改 display_errors = On

  • PHP log目录 /var/log/apache2

  • 查看PHP版本 php -v

  • 查看PHP扩展目录 php -i | grep extension_dir

  • 相关推荐:Ubuntu彻底删除PHP7.0
    mongodb_and_php7

EOS v1.1.0 开启eosio::mongo_db_plugin 支持

今天更新了 v1.1.0 主线已经支持了eosio::mongo_db_plugin (EOSIO 1.1.0 Release Notes)

v1.1.0之前的版本请参考 (EOS enable mongodb

  • eos代码更新到 v1.1.0分支,编译代码。
  • 修改config.ini配置文件,添加如下两行:
    plugin = eosio::mongo_db_plugin
    mongodb-uri = mongodb://localhost:27017/eosmain

    其中,eosmain是要写入的MongoDB数据库名。

好了,万事俱备,开始启动
进入~/opt/mongodb/bin目录,启动MongoDB服务。

cd ~/opt/mongodb/bin
./mongod

服务启动和关闭mongodb命令如下:

service mongod start
service mongod stop

这时MongoDB服务会默认监听27017端口,如下图所示。


新开一个小窗,重启nodeos,需要加上-–replay-blockchain,以使历史交易数据同步到MongoDB。

如果没有意外的话,此时MongoDB应该开始写入相关记录了。

执行mongo程序(sudo apt-get install mongodb-clients)进入MongoDB控制台,查询相应数据库和记录,如下图。


mongo exception in initAndListen: NonExistentPath: Data directory /data/db not found., terminating

原因是,mongod默认启动dbpath为/data/db,本机没有这个目录

解决方法:创建一个db目录,并添加到mongod启动参数

mkdir /root/.local/share/mongo/db
mongod --dbpath /root/.local/share/mongo/db