- 删除php的相关包及配置
sudo apt-get autoremove php7*
- 删除关联
sudo find /etc -name "*php*" |xargs rm -rf
- 清除dept列表
sudo apt purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " "`
- 检查是否卸载干净(无返回就是卸载完成)
dpkg -l | grep php7.0
Ubuntu彻底删除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
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
EOS Configuration 参数详解
Eos = require('eosjs')
// Default configuration (additional options below)
config = {
chainId: null, // 32 byte (64 char) hex string
keyProvider: ['PrivateKeys...'], // WIF string or array of keys..
httpEndpoint: 'http://127.0.0.1:8888',
expireInSeconds: 60,
broadcast: true,
verbose: false, // API activity
sign: true
}
eos = Eos(config)
- chainId hex - 您要连接的区块链的唯一ID。这是有效交易签名所必需的。chainId通过 get_info API调用提供。通过其初始起源块识别链。签署的所有交易仅对具有此chainId的区块链有效。出于安全原因验证chainId。
- keyProvider
[array<string>|string|function]
- 提供用于签署事务的私钥。如果找到多个私钥,get_required_keys
则调用API 以发现要使用的签名密钥。如果提供了函数,则为每个事务调用此函数。 - httpEndpoint
string
- 提供链API的nodeosd服务器的http或https位置。从浏览器使用eosjs时,请记住在nodeosd或代理服务器中配置相同的源策略。对于测试,access-control-allow-origin = *
可以使用nodeosd配置。对于冷存储(无网络)配置,请将此值设置为null。 - expireInSeconds
number
- 事务到期前的秒数。时间基于nodeosd的时钟。可能出现错误的未到期交易是到期日到期之前的责任,此时间应该是短暂的。 - broadcast
[boolean=true]
- 将交易发布到区块链。使用false获取完全签名的事务。 - verbose
[boolean=false]
- 详细日志记录,例如API活动。 - debug
[boolean=false]
- 低级调试日志记录(序列化)。 - sign
[boolean=true]
- 使用私钥签署交易。保留未签名的交易避免了提供私钥的需要。 - mockTransactions(高级)
mockTransactions: () => null // 'pass', or 'fail'
pass
- 不要广播,总是假装交易有效fail
- 不要广播,假装交易失败null|undefined
- 照常广播
transactionHeaders
(高级) - 手动计算事务头。这可能是提供的,因此eosjs不需要对nodeos进行与头相关的API调用。用于冷藏等环境。每个事务都会调用此回调。这里记录了标题eosjs-api#headers。transactionHeaders: (expireInSeconds, callback) => {callback(null/*error*/, headers)}
- logger 默认日志记录配置。
logger: { log: config.verbose ? console.log : null, error: console.error // null to disable }
关闭所有错误记录:
config.logger = {error: null}