# 电子合同服务部署
# 安装JDK环境
参阅 安装JDK环境
# 字体配置
上传 chinese 目录到 /usr/share/fonts
清除字体缓存
fc-cache
fc-list
如果 fc 报找不到命令错误,执行以下命令
yum -y install fontconfig
# 创建目录
mkdir /cslc/econtract
mkdir /cslc/econtract/logs
将unitid-cslc-econtract.jar、jnilib 放入 /cslc/econtract 目录
# 服务脚本
cd /cslc/econtract
vi run.sh
脚本内容:
#!/bin/sh
APP_PATH=/cslc/econtract
API_NAME=unitid-cslc-econtract
JAR_NAME=$API_NAME\.jar
#PID 代表是PID文件
PID=application\.pid
# 环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${APP_PATH}/jnilib
cd $APP_PATH
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
exit 1
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#启动方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo ">>> ${JAR_NAME} is already running PID=${pid} <<<"
else
# ** 这里根据实际情况配置 8G系统内存建议配置 -Xms6g -Xmx6g
nohup java -XX:+UseG1GC -Xms6g -Xmx6g -Dspring.profiles.active=production -Dspring.config.location=$APP_PATH/application.yml -Duser.timezone=GMT+8 -Djava.security.egd=file:/dev/./urandom -jar $JAR_NAME >/dev/null 2>&1 &
echo $! > $PID
echo ">>> start $JAR_NAME successed PID=$! <<<"
fi
}
#停止方法
stop(){
#is_exist
pidf=$(cat $PID)
#echo "$pidf"
echo ">>> api PID = $pidf begin kill $pidf <<<"
kill $pidf
rm -rf $PID
sleep 2
is_exist
if [ $? -eq "0" ]; then
echo ">>> api 2 PID = $pid begin kill -9 $pid <<<"
kill -9 $pid
sleep 2
echo ">>> $JAR_NAME process stopped <<<"
else
echo ">>> ${JAR_NAME} is not running <<<"
fi
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo ">>> ${JAR_NAME} is running PID is ${pid} <<<"
else
echo ">>> ${JAR_NAME} is not running <<<"
fi
}
#重启
restart(){
stop
start
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
exit 0
** 可修改其中
-Xms6g -Xmx6g参数调整jvm内存 根据实际情况配置 8G系统内存建议配置 -Xms6g -Xmx6g
使用chmod +x run.sh授予可执行权限
# 配置
# 应用配置
新建配置文件
cd /cslc/econtract
vi application.yml
填写配置项:
server:
# ** 端口
port: 8600
logging:
level:
# 日志级别
root: INFO
cn:
unitid:
econtract: INFO
# ** 日志存放地址
file: /cslc/econtract/logs/econtract.log
management:
security:
enabled: false
spring:
application:
name: cslc-e-contract
profiles.active: production
aop.proxy-target-class: true
http:
multipart:
# 最大上传文件大小
max-file-size: 10MB
# 设置总上传的数据大小
max-request-size: 20MB
jackson:
default-property-inclusion: non_null
time-zone: Asia/Shanghai
redis:
# ** 请填写redis数据库
database: 0
# ** redis密码
password: Smart
# 集群配置
sentinel:
master: mymaster
# ** 节点配置
nodes: 172.16.3.151:26390,172.16.3.151:26391,172.16.3.151:26392
data:
# MONGODB
mongodb:
# 请填写mongodb数据库名字
database: mongo_cslc_econtract
# ** 请填写mongodb数据库连接地址
uri: mongodb://admin:Smart@172.16.3.151:27017,172.16.3.151:27019/admin
# Mongodb 配置
mongo:
socketTimeout: 30000
connectTimeout: 5000
maxWaitTime: 5000
maxConnectionsPerHost: 20
minConnectionsPerHost: 3
readConcern: majority
writeConcern: majority
readPreference: primaryPreferred
# JWT
jwt:
# 登录会话默认过期时间(分)
expire: 1440
# ** 私钥
private-key: |
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC2Lih4bCdWaVbJYRiwCvemcO+9
p0Y/euUEzozfh7pBlLEfGU1nGkdozNZxHGOSookQvwxN8P+vShSMWYU96eqddRkgiTA5aA0jeU4i
sLpBIxohjr9rySETBCubiYDQUAFQe0S2m/+CLtI0rrQpiVqjaIBcWbrkwufk7FImt5zdrQbxc6Qo
sZMN8JorL3QdqWvJ2pQkb43q361eGdUJ5n7Ioq5f8o3Q3KKq6Zok71K9DP5SYOEJ2F1osvqKVmDO
oISa2+g6jimBQLRqj2zmPVY/+YufWL//0ShUI3SJDrQd2OX7wrNDeys42M7j0DOXmqgSIR5yins2
dSs0LwLkK39FAgMBAAECggEATnwwP0EI6XdURkmoYx82deQtxJzt7Kc7RwjdM+e7XEl8zRMPf52Y
qhOlRvGeDCwttKM539I1tQTLOXPPrU67Hr615ohz2Cd1kZTPDq7obut6dH6VBRCPSSwAxW9FqXju
OAgDIFCwkRsuwDeLsmFURRXeRur5U1iMotkUw01TLUSE0vwCjxuS812kztA8wgB58UZ6rf4F7dEM
rUZw3hYfSODTQGglrErXLRV3TcgyBbs5eqMjqsw4RweFzyHKQwzBg9Jca80+NPFdQ1Y8rVHJqwcp
eLZSNJ9UYBF8K0l2j6qY7NObS+gAYef/HnDBrPatMoF9Cw7oOYUjdk1lIg+QwQKBgQDtV7xTZV+/
Ya2ifXbtFtXajoA54lOVNpPRdlKDFLo9bd8RfymRo5viPeQIg8hnykBBZ7JrjRJox2hqteY/AFHQ
QIbGMzy7bc9xEVNOmkqwox/iiuhfxRkrfIzXeSgFkgm+PWtlAEMg9WNHCbeQa3ge9qDKEikOiWFt
JS4XbYnniQKBgQDEgFa8r/giflvPSiefCLzKkwcd/n+sgYepN6rnEfYA6i+sUTRIwNxBxw1Tp1vD
MvJ21FWnNjt90mHbTFzlrvsCnVuINo+Fcv7HvWBQYyMg9DHqOAnIWOFJynXhE4ylpnASjMaKILvt
YGp6SJtiN+aZx7cZTv2Hp+WCcER5g2Qu3QKBgFKxiOo9ndiefdLph/AfTq9xivegBaMtet82LJWD
OUiB6YC9H4ygxoVTLwpQcBjJfQ3MxXt3kXx0TcswSWKWB+tZMBwKahSbs/UfJjlyxKc6jrdt0nzb
vWNLZ/8DNZCLS12/JJXyO3FWThrIJe7potaW83q0TR3Fe+59T8vV3ICRAoGBAJ5f5gi8N1ztxOeE
l/yI2UjYSbM2DQcnewS69ka45jKEjZnv9RjyQFPPsAENcVsZc+ysZMCZaEeXygErQfBpIKxR0ZUu
jGx9a7Xm/3qq/IQx7Q0ez1unryR/RpT64bAdPlTlG5v2mCDRReB7Jql57qVhH0UJsjOk8ck43Sem
65cNAoGBANqHgPDZXsgBLUQUjZ2+LoORmM+IaSE/mI7XCMZdbMXASYZFRrmawyhyM6hSmLYWclvU
19UZ3pwfCAEzQ9hD0u8DJ5DHpirgseHxOj+JWCst2piULRZY9mDR2KRAg+8EVrhV5BsmxD8o1K4C
Zo4jRL17eqcMBPve6SvOHaakN4ya
# 鉴权
auth:
manual-user-details: true
routes[0]:
uri: /bizadmin/**
type: admin
routes[1]:
uri: /bizadmin/auth/login/**
auth: false
jwt-header: Authorization
# ** 公钥
public-key: |
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAti4oeGwnVmlWyWEYsAr3pnDvvadGP3rl
BM6M34e6QZSxHxlNZxpHaMzWcRxjkqKJEL8MTfD/r0oUjFmFPenqnXUZIIkwOWgNI3lOIrC6QSMa
IY6/a8khEwQrm4mA0FABUHtEtpv/gi7SNK60KYlao2iAXFm65MLn5OxSJrec3a0G8XOkKLGTDfCa
Ky90HalrydqUJG+N6t+tXhnVCeZ+yKKuX/KN0NyiqumaJO9SvQz+UmDhCdhdaLL6ilZgzqCEmtvo
Oo4pgUC0ao9s5j1WP/mLn1i//9EoVCN0iQ60Hdjl+8KzQ3srONjO49Azl5qoEiEecop7NnUrNC8C
5Ct/RQIDAQAB
audit:
# 审计日志
enabled: true
routes[0]:
uri: /bizadmin/**
# 缓存配置
jetcache:
statIntervalMinutes: 60
areaInCacheName: false
local:
default:
type: caffeine
keyConvertor: fastjson
limit: 5000
remote:
default:
type: redis.lettuce4
keyConvertor: fastjson
valueEncoder: java
valueDecoder: java
# 缓存Redis连接池配置
poolConfig:
minIdle: 1
maxIdle: 3
maxTotal: 10
# ** Redis 连接配置 结构 redis-sentinel://<密码>@<节点,节点>/<数据库编号>?sentinelMasterId=<Redis集群名称>
uri: redis-sentinel://unitid123456@172.16.3.151:26390,172.16.3.151:26391,172.16.3.151:26392/1?sentinelMasterId=mymaster
ec:
# 运行模式 dev开发环境 demo 演示环境 production 生产环境
runMode: production
# 最小密码编号
minSecretKeyIndex: 0
# 最大密码编号
maxSecretKeyIndex: 99
# ** 电子合同公网地址
baseUrl: http://222.190.151.227:8650
# 一键登陆页面地址
loginPageUrl: ${ec.baseUrl}/auth/cslc-login
# ** 内部接口安全token
internalApiToken: 123456
# 是否发送邮件
sendEmail: true
# 发送电子邮件重试间隔
sendEmailRetryDelay: 3,30,60,600,3600
# FS
fs:
# ** FS服务请求地址
serverUrl: http://172.16.3.228:20128/spi/v1
# ** FS 创建的 app id
appKey: 5ed5b7e56b2f0700013aa15f
# ** FS 创建的 app 密钥
appSecret: 2WPE36Kbwrr0pqzrz4n1KXUx9feZLgdc
compress:
# 人像照片压缩
owner-photo: owner-photo
# 身份证图片压缩
owner-idcard: owner-idcard
timeout:
# 以下单位均为分钟
# 合同下载过期时间
contract-download: 30
# 签章文件下载过期时间
stamp-download: 30
# 签署文件下载过期时间
sign-download: 30
# 印章文件下载过期时间
seal-download: 30
# 合同模板下载过期时间
contract-template-download: 30
# 体彩pdf文件下载过期时间
cslc-pdf-download: 1440
bucket:
# 体彩 pdf文件 bucket 地址
cslc-contract: cslc-contract
# 体彩加密文件 bucket 地址
cslc-contract-encryption: cslc-contract-encryption
# 体彩基础 bucket 地址
cslc-common: cslc-common
# 体彩配置
cslc:
# 实名认证配置
realnameAuth:
# ** 体彩实名认证服务请求地址
url: http://localhost:8601
# ** 鉴权标识
userKey: 234efwerwe
# 实体渠道系统配置
ecapi:
# ** 体彩渠道服务请求地址
url: http://localhost:8601
# ** 系统安全认证标识
systemKey: dev
retry:
# 接口请求失败重试间隔
delay: 3,30,60,600,3600,7200
# 手写屏配置
handwriting-screen:
# ** 手写屏公网地址
base: http://222.190.151.227:8651
# 初始化页面路径
init-page-path: /init
# 签章服务配置
seal:
# ** 签章服务地址
url: http://172.16.3.213:24060/api
# 解析 excel 配置
excel:
# 多店门店信息excel表头配置
headerInfos[0]:
key: shopNo
title: 门店编码
headerInfos[1]:
key: terminalNo
title: 终端编码
headerInfos[2]:
key: cityDivision
title: 市级区划
headerInfos[3]:
key: countyDivision
title: 县级区划
headerInfos[4]:
key: addressStr
title: 销售场所地址
headerInfos[5]:
key: saleTypes
title: 销售种类
headerInfos[6]:
key: deposit
title: 押金(元)
headerInfos[7]:
key: earnestMoney
title: 保证金(元)
# 密码机配置文件
cd /cslc/econtract
vi swsds.ini
内容:
#SWXA密码设备接口配置文件
[ErrorLog]
level=2
logfile=swsds.log
maxsize=10
[HSM1]
ip=172.16.6.20
port=8008
passwd=11111111
[HSM2]
ip=172.16.6.21
port=8008
passwd=11111111
[Timeout]
connect=30
service=60
[ConnectionPool]
poolsize=10
修改[HSM1]部分 设置正确的 ip、port、password
修改[HSM2]部分 设置正确的 ip、port、password
# 命令
启动
./run.sh start
停止
./run.sh stop
重启
./run.sh restart
检查运行状态
./run.sh status