viabtc_exchange_server icon indicating copy to clipboard operation
viabtc_exchange_server copied to clipboard

Centos安装viabtc_exchange_server

Open lealife opened this issue 6 years ago • 15 comments

适用于 Centos 6.0+/7.0+. (为什么要写到issue中, 因为可以讨论)

1. 安装依赖

1.1 yum安装依赖

yum install -y libev-devel
yum install mpdecimal # 可能不需要了
yum install mpdecimal-devel
yum install mariadb-devel -y # libmysqlclient-dev没有, 只能用这个了
yum install zlib-static
yum install libcurl-devel

1.2. 安装 jansson

wget http://www.digip.org/jansson/releases/jansson-2.7.tar.gz
tar -xzvf jansson-2.7.tar.gz
cd  jansson-2.7
./configure --prefix=/usr
make && make install

查看是否安装成功:

> whereis libjansson
libjansson: /usr/lib/libjansson.la /usr/lib/libjansson.a /usr/lib/libjansson.so

1.3. 安装 kafka lib

$ wget https://github.com/edenhill/librdkafka/archive/v0.11.3.tar.gz -O librdkafka-0.11.3.tar.gz
$ tar -xzxf librdkafka-0.11.3.tar.gz
$ cd librdkafka-0.11.3
$ ./configure
$ make
$ make install

2. 编译viabtc_exchange_server

本项目与官方的viabtc_exchange_server不同在于修改编译命令以适配于Centos, 其它源码都一样. 下载链接: https://github.com/lealife/viabtc_exchange_server/archive/master.zip

依次进入各个文件夹编译

cd depends/hiredis
make
 
cd network
make
 
cd utils
make

cd accesshttp
make

cd accessws
make

cd alertcenter
make

cd marketprice
make

cd matchengine
make

cd readhistory
make

如果编译都成功, 恭喜你, 已经成功了99%.

如果编译出现失败, 请看本文的"问题"部分.

3. Mysql配置

3.1 创建数据库

sql/中的3个文件请依次执行, init_trade_history.sh 里需要修改相应的数据库配置

  • create_trade_history.sql
  • create_trade_log.sql
  • init_trade_history.sh

Tips: 可以在mysql客户端执行sql文件, 也可以使用mysql命令, 如: mysql -h localhost -u root -p xxx < create_trade_history.sql

3.2 修改数据库配置

  • 修改 matchengine/config.json中的 db_log, db_history数据库配置
  • 修改 readhistory/config.json中的db_history数据库配置

4. 启动

4.1 启动 Redis

请自行安装Redis. 启动它(必须要使用sentinel):

cd  redis目录
redis-server ./redis.conf &
redis-sentinel ./sentinel.conf &

4.1 创建日志文件夹

mkdir -p /var/log/trade/

4.2 启动

cd matchengine
./restart.sh

cd ../alertcenter
./restart.sh

cd ../readhistory
./restart.sh

cd ../accesshttp
./restart.sh

cd ../accessws
./restart.sh

cd ../marketprice
./restart.sh

5. 测试

curl http://localhost:8080 -d '{"method": "market.list", "params": [], "id": 1516681174}'

更多接口测试可以安装 https://github.com/djpnewton/viaxchtest 非常方便

6. kafka安装与运行

kafka还没运行呢! 但暂时不影响步骤5的接口测试. 接下来要安装kafka和运行它. 大家可以搜索下, 很多资料!! 在Centos中安装kafka, 如 https://blog.csdn.net/wisgood/article/details/51497329

联系方式

成品展示: http://118.25.251.201/

需要技术支持或二次开发或问题讨论请加我微信 lealife, 备注 via btc,

问题

问题1 libmysqlclient找不到

解决: 可以尝试安装新版 mariadb: https://blog.csdn.net/default7/article/details/74795766

问题2 marketprice build出错

/usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o): In function `rd_kafka_sasl_cyrus_close':
/home/paymatch/down/librdkafka-0.11.3/src/rdkafka_sasl_cyrus.c:409: undefined reference to `sasl_dispose'
/usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o): In function `rd_kafka_sasl_cyrus_recv':
/home/paymatch/down/librdkafka-0.11.3/src/rdkafka_sasl_cyrus.c:74: undefined reference to `sasl_client_step'
/home/paymatch/down/librdkafka-0.11.3/src/rdkafka_sasl_cyrus.c:100: undefined reference to `sasl_errdetail'
/home/paymatch/down/librdkafka-0.11.3/src/rdkafka_sasl_cyrus.c:112: undefined reference to `sasl_getprop'
/home/paymatch/down/librdkafka-0.11.3/src/rdkafka_sasl_cyrus.c:116: undefined reference to `sasl_getprop'
/home/paymatch/down/librdkafka-0.11.3/src/rdkafka_sasl_cyrus.c:120: undefined reference to `sasl_getprop'

解决: 在makefile后加 -lsasl2 参考: https://stackoverflow.com/questions/49457353/undefined-reference-to-sasl-x-when-build

lealife avatar May 18 '18 07:05 lealife

tx~

qyvlik avatar May 23 '18 02:05 qyvlik

Thanks!!

iiuazz avatar May 23 '18 10:05 iiuazz

centos 7安装,编译matchengine报 cannot find -lmysqlclient问题,安装了 mariadb-devel,但是还是没有任何作用 错误: /usr/bin/ld: cannot find -lmysqlclient collect2: error: ld returned 1 exit status make: *** [matchengine.exe] Error 1

dengdaisky520 avatar Jun 12 '18 08:06 dengdaisky520

试试安装 mysql-dev @dengdaisky520

qyvlik avatar Jun 12 '18 08:06 qyvlik

安装了rh-mysql56-mysql-devel-5.6.40-1.el7.x86_64,在https://centos.pkgs.org/7/centos-sclo-rh/rh-mysql56-mysql-devel-5.6.40-1.el7.x86_64.rpm.html 上下载的,但是还是无法编译,还是这个问题。 /usr/bin/ld: cannot find -lmysqlclient collect2: error: ld returned 1 exit status make: *** [matchengine.exe] Error 1,请问你是用的那个版本的mysql-dev,发个地址吧。3Q @qyvlik

dengdaisky520 avatar Jun 12 '18 10:06 dengdaisky520

whereis libmysqlclient 结果我看看

lealife avatar Jun 13 '18 03:06 lealife

image

auqf avatar Aug 15 '18 08:08 auqf

gcc -Wall -Wno-strict-aliasing -Wno-uninitialized -g -rdynamic -std=gnu99 -c -o rh_reader.o rh_reader.c -I ../network -I ../utils -I ../depends gcc -Wall -Wno-strict-aliasing -Wno-uninitialized -g -rdynamic -std=gnu99 -c -o rh_config.o rh_config.c -I ../network -I ../utils -I ../depends gcc -Wall -Wno-strict-aliasing -Wno-uninitialized -g -rdynamic -std=gnu99 -c -o rh_main.o rh_main.c -I ../network -I ../utils -I ../depends gcc -Wall -Wno-strict-aliasing -Wno-uninitialized -g -rdynamic -std=gnu99 -c -o rh_server.o rh_server.c -I ../network -I ../utils -I ../depends gcc -g -rdynamic -o readhistory.exe rh_reader.o rh_config.o rh_main.o rh_server.o -L ../utils -lutils -L ../network -lnetwork -L ../depends/hiredis -Wl,-Bstatic -ljansson -lmysqlclient -lrdkafka -lz -lhiredis -Wl,-Bdynamic -lm -lpthread -ldl -lmpdec -lssl -lcrypto -lev -lcurl /usr/bin/ld: cannot find -lmysqlclient collect2: error: ld returned 1 exit status

eliomain avatar Aug 28 '18 09:08 eliomain

whereis libmysqlclient libmysqlclient:

no result

eliomain avatar Aug 28 '18 09:08 eliomain

centos下安装找不到 libmysqlclient, 建议安装新版 mariadb https://blog.csdn.net/default7/article/details/74795766

lealife avatar Aug 28 '18 09:08 lealife

一、安装librdkafka 首先在github上下载librdkafka源码,解压后进行编译; cd librdkafka-master chmod 777 configure lds-gen.py  ./configure make make install 在make的时候,如果是64位Linux会报下面这个异常 /bin/ld:librdkafka.lds:1: syntax error in VERSION script 只要Makefile.config第46行里面的WITH_LDS=y这一行注释掉就不会报错了。

注释掉:#WITH_LDS=y,然后再make

最终头文件和库文件会分别安装在

/usr/local/include/librdkafka /usr/local/lib

cnflyne avatar Nov 18 '18 06:11 cnflyne

yum install mpdecimal # 可能不需要了

utils/ut_decimal.h 第9行有:# include <mpdecimal.h>

所以这个库还是必须要的

cnflyne avatar Nov 18 '18 06:11 cnflyne

关于#libmysqlclient 写下我的解决办法

1、查找相关库,有两个: ` $ sudo yum whatprovides libmysqlclient*

mysql-libs-5.1.73-8.el6_8.i686

mysql-libs-5.1.73-8.el6_8.x86_64 `

2、安装: yum install mysql-libs

3、此时libmysqlclient安装在 /usr/lib64/mysql 目录下,编译时指定该目录即可。修改makefile文件: 在 -lmysqlclient 后面添加 -L/usr/lib64/mysql 即可

4、OK,run it

cnflyne avatar Nov 18 '18 15:11 cnflyne

Hi, marketprice gives an error: ./marketprice.exe: init message fail: -361: Connection refused

nsahinbay avatar Aug 18 '20 14:08 nsahinbay

make -C accesshttp 时出错,Ubuntu18怎么弄啊?谁来帮帮我help me /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/libev.a(ev.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: 最后的链结失败: 输出不可表示的节

beifangche11 avatar Dec 17 '20 03:12 beifangche11