分类 随笔 下的文章

前提:
1、已启动区块链网络,并安装实例化安装链码
2、docker ps 可查看已启动的服务

服务器地址: ssh IP地址 -l root

fabric-samples 和 test-network所在目录:
/usr/local/src/hyperleger/fabric/scripts
/usr/local/src/hyperleger/fabric/scripts/fabric-samples
创建stupid工作空间,与fabric-samples同级目录:

mkdir stupid-workspace

stupid源码下载:

 git clone https://github.com/18640869382/stupid.git

go版本查询:go version
golang代理:

export GO111MODULE=on
export GOPROXY=https://goproxy.cn

进入stupid文件夹内构建:cd stupid
编译二进制:go build
stupid位置:

/usr/local/src/hyperleger/fabric/scripts/stupid-workspace1/stupid

参数配置文件:cat config.json
执行测试命令:./stupid config.json 500
其中500为要发送的交易数
注意:需要把peer0.org1.example.com 跟orderer.example.com写到本机的hosts文件中
参数内容:
{
"peer_addr": "peer0.org1.example.com:7051",
"orderer_addr": "orderer.example.com:7050",
"channel": "mychannel",
"chaincode": "basic",
"args": [ "GetAllAssets"],
"mspid": "Org1MSP",
"private_key": "/usr/local/src/hyperleger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore/priv_sk",
"sign_cert": "/usr/local/src/hyperleger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts/Admin@org1.example.com-cert.pem",
"tls_ca_certs": ["/usr/local/src/hyperleger/fabric/scripts/fabric-samples/test-network/organizations/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem","/usr/local/src/hyperleger/fabric/scripts/fabric-samples/test-network/organizations/ordererOrganizations/example.com/tlsca/tlsca.example.com-cert.pem"],
"num_of_conn": 20,
"client_per_conn": 40
}

参数说明:
"peer_addr": peer节点地址与端口
"orderer_addr":orderer节点地址与端口
"channel": 通道名称
"chaincode": 链码名称,区块链内指定的,不是文件名称
"args": 合约方法,
"mspid": MSP的ID,
"private_key”:私钥文件 ,
"sign_cert":签名证书文件 ,
"tls_ca_certs": peer证书、orderer证书,
"num_of_conn": client端与peer端、orderer端之间所建立的grpc连接数
"client_per_conn": 指向一个peer发送交易提案的客户端数目
测试结果:
2021-06-17T03:15:40.png
结果中的 Tx 10可以修改,在 fabric 下 configtx.yaml 文件中的出块策略
Max Message Count: The maximum number of messages to permit in a batch
2021-06-17T03:15:54.png
路径:
/usr/local/src/hyperleger/fabric/scripts/fabric-samples/test-network/configtx/configtx.yaml

查看容器的已挂载目录

查看容器ID和名称:
docker ps ###查看当前启动的容器信息
2021-01-28T02:54:54.png
查看某一个容器已经挂载的目录:
docker inspect 5406191cda6f | grep Mounts -A 20 ###通过容器ID查看
docker inspect jenkins | grep Mounts -A 20 ###通过容器名称查看
2021-01-28T02:49:39.png
2021-01-28T02:50:21.png

docker给已经启动容器添加新的挂载目录

查看启动容器的配置文件:
docker stop ###停止容器
cd /var/lib/docker/containers ###进入containers文件
ls ###查看containers目录下,目标容器详细ID
cd /var/lib/docker/containers/容器ID ###结合docker ps命令查询的ID可知哪一个是查询容器的详细id
如下图可找到对应配置文件进行修改。

2021-01-28T03:29:36.png

docker日志存储位置
在Linux系统中docker启动后日志存储在/var/lib/docker/containers/容器ID/目录中,启动一个容器后,容器ID目录中会生成如下文件:
5406191cda6fbc9fb7765c0b8aa31e075e8854900fab1f61917bab3c07f4af7a-json.log checkpoints config.v2.json hostconfig.json hostname hosts mounts resolv.conf resolv.conf.hash
2021-01-28T03:47:52.png
每个容器的日志默认都会以 json-file 的格式存储于/var/lib/docker/containers/<容器id>/<容器id>-json.log 下,不过并不建议去这里直接读取内容,因为容器的日志则可以通过 docker logs命令来访问,而且可以像 tail -f 一样,使用 docker logs -f 来实时查看。如果使用 Docker Compose,则可以通过 docker-compose logs <服务名> 来查看。

  1. 生成本机的SSH 密钥 (通常包含在 '~/.ssh/id_rsa.pub' 文件中,并以 'ssh-rsa' 开头)

cd ~/.ssh/ ###进入~/.ssh/文件
打开电脑终端,进入~/.ssh/文件查看是否存在id_rsa.pub和id_rsa文件。
若存在,表明之前已生成过SSH rsa密钥,可重新生成或使用现有密钥。
若没有或重新生成,输入以下命令生成密钥。
ssh-keygen -t rsa -C "email@example.com" ###其中邮箱地址为你在gitlub上个人信息邮箱地址保持一致。

一直选择回车键即可,若为重新生成,则当询问是否rewrite时,需要输入yes。生成完成后,可输入以下命名查看并复制公钥。
cat id_rsa.pub ###查看rsa公钥,前提:需先进入~/.ssh/文件

  1. 粘贴SSH公钥到gitlab

登录gitlab,将第一步中生成的SSH 公钥地址粘贴到SSH key,粘贴您的 SSH 公钥
2021-01-21T08:29:45.png

3.验证本地连接是否ok
git config --global user.name "name" ###配置gitlab用户名
git config --global user.email "email@example.com" ###配置gitlab邮箱
ssh -T ssh://git@gitlab.com ###检查本地连接是否OK
2021-01-21T09:14:29.png
如果连接OK,既可以拉取和上传代码。

4.ssh方式或http方式拉取项目代码
git clone ssh://git@gitlab.com:30022/name/projectname.git ###使用ssh拉取,需完成上面的1、2、3步
git clone http://gitlab.com/name/projectname.git ###使用http方式拉取
cd projectname ###进入克隆下来的工程文件
2021-01-21T09:10:53.png

5.更新上传代码相关命令
若之前拉取过工程,更改了内容,上传新的内容命令如下:
git add . ###将项目的文件添加到仓库中
git commit -m "更新信息" ###提交到远程仓库,双引号内写入更新信息
git pull 或 git pull origin master ###拉取最新代码,指定分支
git push 或 git push -u origin master ###上传最新代码,指定分支
2021-01-21T09:12:34.png
若未拉取过工程,需上传本地已存在的文件,代码命令如下:
cd existing_folder ###进入已存在的文件
git init ###初始化git仓库
git remote add origin git@gitlab.com:name/projectname.git ###添加关联远程仓库地址
git add . ###上面已解释
git commit -m "Initial commit" ###上面已解释
git push -u origin master ###上面已解释

若更新仓库地址使用命令:git remote set-url origin git@gitlab.com:name/projectname.git
若删除仓库地址使用命令:git remote remove origin git@gitlab.com:name/projectname.git
查看关联的远程仓库使用命令:git remote -v

⚠️注:截图中涉及地址为内网地址。

Jenkins自带的插件服务器在国内下载奇慢无比,于是乎需要更换为Jenkins国内源镜像进行加速。

废话少说,上步骤:

1、登录管理员账号
2、点击系统管理 - 系统配置 - 插件管理
3、点击“高级”Tab,找到最后一项“升级站点”
4、将URL输入框内容更换为清华源

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

现在更新插件,进度条应该是嗖一下就完了,哈哈~

Linux下敲docker命令抱一下错误:
FATA[0000] Get http:///var/run/docker.sock/v1.18/images/json: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?

解决办法:
sudo chmod -R 777 /var/run/docker.sock

1、删除低版本驱动

sudo apt purge nvidia*

2、把显卡驱动加入PPA

sudo add-apt-repository ppa:graphics-drivers
sudo apt update

3、查找适合自己的闭源驱动

ubuntu-drivers devices

回显如下:

test@lamsfun:~/download$ ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias :         pci:v000010DEd00001C82sv000010DEsd000011BFbc03sc00i00
vendor   : NVIDIA Corporation
model    : GP107 [GeForce GTX 1050 Ti]
driver   : nvidia-driver-390 - third-party free
driver   : nvidia-driver-435 - distro non-free
driver   : nvidia-driver-415 - third-party free
driver   : nvidia-driver-410 - third-party free
driver   : nvidia-driver-440 - third-party free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

4、选择最新推荐的版本安装

sudo apt install nvidia-driver-440

5、重启系统

sudo reboot

1、下载Python最新版本3.8文件
2、编译脚本:

#!/bin/bash
COMPILE_ROOT=`pwd`
ANDROID_NDK_ROOT=~/ndk/android-ndk-r20
ANDROID_GCC_ROOT=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64
ANDROID_GCC_PATH=${ANDROID_GCC_ROOT}/bin

BUILD_PATH=${COMPILE_ROOT}/build
OUT_PATH=${COMPILE_ROOT}/out

OPENSSL_PATH=${COMPILE_ROOT}/thirdparty/libressl-2.7.4/out
OPENSSL_LIB_PATH=${COMPILE_ROOT}/thirdparty/libressl-2.7.4/out/lib

CROSS_COMPILER=aarch64-linux-android-
CROSS_COMPILER_CLANG=aarch64-linux-android28-

#prepare
mkdir -p ${BUILD_PATH}
mkdir -p ${OUT_PATH}
export PATH=${ANDROID_NDK_ROOT}:${ANDROID_GCC_PATH}:$PATH

export ARCH="aarch64"
export CC="${CROSS_COMPILER_CLANG}clang -pie -fPIE" 
export CPP="${CROSS_COMPILER_CLANG}clang -E  -pie -fPIE"
export CXX="${CROSS_COMPILER_CLANG}clang++  -pie -fPIE"

export AS="${CROSS_COMPILER}as"
export LD="${CROSS_COMPILER}ld  -pie -fPIE"
export GDB="${CROSS_COMPILER}gdb"
export STRIP="${CROSS_COMPILER}strip"
export RANLIB="${CROSS_COMPILER}ranlib"
export OBJCOPY="${CROSS_COMPILER}objcopy"
export OBJDUMP="${CROSS_COMPILER}objdump"
export AR="${CROSS_COMPILER}ar"
export NM="${CROSS_COMPILER}nm"
export READELF="${CROSS_COMPILER}readelf"
export M4=m4
export TARGET_PREFIX=$CROSS_COMPILER
export CONFIG_SITE="config.site"
export CXXFLAGS="-D__ANDROID_API__=28 "

cd ${BUILD_PATH}

echo -e "ac_cv_file__dev_ptmx=yes\nac_cv_file__dev_ptc=no" > config.site

../configure --host=aarch64-linux-android  \
--host=aarch64-linux \
--build=x86_64-pc-linux-gnu \
--target=aarch64-linux-android \
LDFLAGS="-Wl,--allow-shlib-undefined -D__ANDROID_API__=28 -fPIC -L${OPENSSL_LIB_PATH}" \
CFLAGS="-D__ANDROID_API__=28  " \
CPPFLAGS="-D__ANDROID_API__=28" \
--enable-shared \
--enable-ipv6 \
--with-openssl=${OPENSSL_PATH} \
--prefix=${OUT_PATH}

make -j8 2>&1 |tee build.log
echo "-----------build success!-------------"

注意: 大家在使用时候注意自己的ndk所在路径,按自己的实际情况进行修改,我的ndk存放在自己的home目录下。

本文适用于解决openssl升级到1.1.0以上版本,导致shadowsocks2.8.2启动报undefined symbol: EVP_CIPHER_CTX_cleanup错误。

修改方法:

  1. 用vim打开文件:vim /usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py (该路径请根据自己的系统情况自行修改,如果不知道该文件在哪里的话,可以使用find命令查找文件位置)
  2. 跳转到52行(shadowsocks2.8.2版本,其他版本搜索一下cleanup)
  3. 进入编辑模式
  4. 将第52行libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)

改为libcrypto.EVP_CIPHER_CTX_reset.argtypes = (c_void_p,)

  1. 再次搜索cleanup(全文件共2处,此处位于111行),将libcrypto.EVP_CIPHER_CTX_cleanup(self._ctx)

改为libcrypto.EVP_CIPHER_CTX_reset(self._ctx)

  1. 保存并退出
  2. 启动shadowsocks服务:service shadowsocks start 或 sslocal -c ss配置文件目录

问题解决