由于一直从事着支付的相关开发,所以在github上找了一个开源的支付项目来学习,本篇博客用来记录搭建xxPay的全过程和坑。
运行环境:
win10 64位
idea
mysql
activemq
java 1.8以上
mysql安装:
参考博客:
https://www.cnblogs.com/xsmile/p/7753984.html
https://blog.csdn.net/codingforhaifeng/article/details/80675498
进入到mysql的bin目录(需要用管理员运行),执行mysqld --initialize-insecure的时候,报了一个错误:msvcp140.dll,无法继续执行代码。解决办法参考:https://zhidao.baidu.com/question/750269134284399172.html,需要去微软官方下载VC++2015运行库,安装一下,再重新执行mysqld --initialize-insecure。
启动mysql(需要用管理员运行)
设置root密码
登录mysql,打开cmd,
mysql -u root -p 登录root用户,会提示输入密码
create database xxpaydb; 创建数据库
show databases; 显示一下,看有没有创建成功
CREATE USER ‘xxpay‘@‘localhost‘ IDENTIFIED BY ‘xxpay‘; 创建用户和密码 xxpay/xxpay
grant all on xxpaydb.* to ‘xxpay‘@‘localhost‘; 授权用户操作xxpaydb,all代表所有的操作都可以
exit 推出root用户
mysql -u xxpay -p 登陆xxpay用户
show databases; 显示一下可以用的数据库,这个时候是可以看到xxpaydb的,没有授权前,是看不到的。
use xxpaydb; 使用xxpaydb数据库
source E:\code\idea-workspace\xxpay-master\init_db.sql; 执行创建表的sql文件
show tables; 看一下表是否创建成功
select *from information_schema.processlist; 查看一下数据库的url,项目配置文件中要用到
参考链接:
https://www.cnblogs.com/sos-blue/p/6852945.html
https://www.cnblogs.com/jiangxiaobo/p/7089345.html
activemq安装:
这个还是蛮简单的,需要有Java的运行环境就行了。首先是去官网下载:http://activemq.apache.org/components/classic/download/,根据你的平台选择相应的版本,我的是windows的,下载后然后解压,进入目录apache-activemq-5.15.9-bin\apache-activemq-5.15.9\bin\win64,直接双击activemq.bat,一般没有什么问题。然后在浏览器中输入http://localhost:8161/admin/,用户名admin,密码admin,就可以查看相关的队列信息了。
idea编译项目:
在idea项目的Terminal中输入mvn clean package -Dmaven.test.skip=true,一段时间后,显示如下:
可以看到各个模块都可以编译成功,但是离运行还差很多,因为有很多参数要配置,而且我们也没有可以部署的服务器,只能在本地运行,不管怎么说,至少可以先跑一跑一些程序。OK,那就开始吧。
上面编译成功后,会生成相应的jar包,我们把相关的jar包都拷到一个目录下,然后依次运行:
java -ms512m -mx512m -Xmn128m -Djava.awt.headless=true -XX:MaxPermSize=64m -jar xxpay-server.jar &
先启动服务,这个启动完成后,可以访问Eureka的网址:http://localhost:2000/。
再运行java -ms512m -mx512m -Xmn128m -Djava.awt.headless=true -XX:MaxPermSize=64m -jar xxpay-config.jar &,运行后,再eureka服务注册中心会增加这个服务xxpay-config,如下:
部署service的时候,报了Unable to load authentication plugin ‘caching_sha2_password‘,需要执行以下命令:
ALTER USER ‘xxpay‘@‘localhost‘ IDENTIFIED BY ‘xxpay‘ PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER ‘xxpay‘@‘localhost‘ IDENTIFIED WITH mysql_native_password BY ‘xxpay‘; #更新一下用户的密码
FLUSH PRIVILEGES; #刷新权限
问题:java.sql.SQLException: Unknown system variable ‘tx_isolation‘
解决方法:mysql-connector-java的版本太低,用的是5.1.43,升级为8.0.11.
问题:You must configure either the server or JDBC driver (via the serverTimezone
解决方法:mssql url后面加上&serverTimezone=UTC,设置一下时区。
mysql驱动改为com.mysql.cj.jdbc.Driver
需要在项目module:xxpay-dal的pom.xml中添加如下依赖:
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>1.1</version>
</dependency>
注意版本要高一点,否则会报错。这中间遇到各种各样的坑,一度想要放弃,不过最终还是慢慢地调试出来了。这步做完,会把service服务器注册到服务中心。
接着是web和gateway的启动,启动方法类似,启动完后,再看一下服务注册中心:
部署xxpay-mgr和xxpay-shop项目,部署方法类似上面的,先启动mgr,启动后,http://localhost:8092/,可以看到相关网页。
原文:https://www.cnblogs.com/fxl-njfu/p/10942082.html