Skip to content

Commit

Permalink
更新一些脚本
Browse files Browse the repository at this point in the history
  • Loading branch information
deepraining committed Sep 2, 2022
1 parent d2c7904 commit 547c18b
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 36 deletions.
34 changes: 17 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

### pro-*:watchJava

用于监听 Java 文件变动,然后自动编译到 `build` 目录下(有些集成开发工具已经自带这个功能)
本地开发时,用于监听 Java 文件变动,然后自动编译到 `build` 目录下(有些集成开发工具已经自带这个功能),自动刷新应用

(配合 `spring-boot-devtools` 一起用)

Expand All @@ -61,7 +61,7 @@ rm -rf .git
git init
```

创建数据库与表结构(可以自行修改)
创建数据库与表结构(数据表文件在 `sql` 目录下,可以自行修改)

```
# 本地环境:默认 flyway.conf 配置文件
Expand All @@ -73,49 +73,49 @@ flyway migrate -configFiles=flyway-prod.conf
# 如果你需要配置更多的环境,可以自己添加
```

执行自动生成 Mybatis 模型文件的命令
执行自动生成 `Mybatis` 模型文件的命令

```
./gradlew pro-mbg:run
```

## 运行项目

`pro-demo` 为例:
`pro-admin` 为例:

执行本地开发调试 `pro-demo` 子项目的命令,然后在浏览器中打开 `http://127.0.0.1:9000`
执行本地开发调试 `pro-admin` 子项目的命令,然后在浏览器中打开 `http://127.0.0.1:9000`

```
./gradlew pro-demo:bootRun
./gradlew pro-admin:bootRun
```

如果集成开发工具不支持监听 Java 文件变动并自动编译的功能,可以运行下面的命令

```
./gradlew pro-demo:watchJava -t
./gradlew pro-admin:watchJava -t
```

开发完毕之后执行构建(可以使用 shell 脚本把已经构建好的 html 文件复制到 `resources/templates` 目录下)

```
./gradlew pro-demo:build
./gradlew pro-admin:build
```

## 部署项目

`pro-demo` 为例:
`pro-admin` 为例:

在服务器上,找个合适的地方创建 `serverDirName` 目录
在服务器上,找个合适的地方创建 `serverDirName` 目录`serverDirName` 为使用者自定义目录)

把本地 `pro-demo/build/libs/*.jar, bin/*.sh` 上传到 `serverDirName` 目录,并按实际需要修改 `run.sh, rerun.sh` 中 SERVER_ENV 与 FILE_NAME 变量的值
把本地 `pro-admin/build/libs/*.jar, bin/*.sh` 上传到 `serverDirName` 目录,并按实际需要修改 `run.sh, select.sh``SERVER_ENV``ARCHIVE_NAME` 变量的值

```
- serverDirName/
- run.sh # 运行、停止、重启、查看程序
- rerun.sh # 运行最新版本的 jar 文件
- libs 
- sbs-demo-2020.0501.1001.jar
- sbs-demo-2020.0501.1101.jar
- select.sh # 运行最新版本的 jar 文件
- libs
- sbs-admin-2020.0501.1001.jar
- sbs-admin-2020.0501.1101.jar
- ...
```

Expand All @@ -142,11 +142,11 @@ spring:

## 配置文件与 jar 文件分开部署(yml 文件不打包进 jar 文件)

你可以把配置文件部署到 `~/.sbs-demo/application*.yml`,就可以覆盖 `src/main/resources/application*.yml` 的配置.
你可以把配置文件部署到 `~/.sbs-admin/application*.yml`,就可以覆盖 `src/main/resources/application*.yml` 的配置

## Docker 部署

参看 [pro-demo Dockerfile](./pro-demo/Dockerfile).
参看 [pro-admin Dockerfile](./pro-admin/Dockerfile)

## 参考项目

Expand Down
10 changes: 5 additions & 5 deletions bin/build.sh
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
#!/bin/bash

# Usage: sh build.sh
# 因为在开发服务器上经常更新代码,所以每次都用持续集成构建就不太方便
# 因为在开发服务器上会经常更新代码,所以每次都用持续集成构建就不太方便
# 一个解决方案是增量更新代码到服务器上,使用此脚本在服务器上构建

set -e

# 构建目录
BUILD_DIR='build-project'
# 项目名称
BUILD_DIR='project'
# 子项目名称
PROJECT_NAME='pro-main'

main(){
Expand All @@ -29,8 +29,8 @@ main(){
echo "sh: cd ../"
cd ../

echo 'sh: sh rerun.sh'
sh rerun.sh
echo 'sh: sh select.sh'
sh select.sh
}

main
25 changes: 21 additions & 4 deletions bin/run.sh
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
#!/bin/bash

# Usage: sh run.sh [start|stop|restart|status]
FILE_NAME=starter
APP_NAME="${FILE_NAME}.jar"
# Usage: sh run.sh [start|stop|restart|status|version]
# 运行项目的脚本

# Server env (spring.profiles.active)
SERVER_ENV=prod
# jar归档文件基础名称,配置在 build.gradle 中的 archivesBaseName
ARCHIVE_NAME=starter
# 实际运行的应用名称
APP_NAME="${ARCHIVE_NAME}.jar"
# 版本文件(会将正在运行的版本号放在这个文件中)
VERSION_FILE='version.txt'

usage() {
echo "Usage: sh $0 [start|stop|restart|status]"
echo "Usage: sh $0 [start|stop|restart|status|version]"
exit 1
}

Expand Down Expand Up @@ -54,6 +60,14 @@ restart(){
start
}

version(){
if [ -f $VERSION_FILE ]; then
cat $VERSION_FILE
else
echo "No version found"
fi
}

case "$1" in
"start")
start
Expand All @@ -67,6 +81,9 @@ case "$1" in
"restart")
restart
;;
"version")
version
;;
*)
usage
;;
Expand Down
22 changes: 15 additions & 7 deletions bin/rerun.sh → bin/select.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
#!/bin/bash

# Usage: sh rerun.sh [index]
# [index]: 运行最近的第几个jar文件,默认是1
FILE_NAME=starter
APP_NAME="${FILE_NAME}.jar"
# 版本文件
# Usage: sh select.sh [index]
# [index]: 选择运行最近的第几个jar文件,默认是1
# 可以用于回滚应用

set -e

# jar归档文件基础名称,配置在 build.gradle 中的 archivesBaseName
ARCHIVE_NAME=starter
# 实际运行的应用名称
APP_NAME="${ARCHIVE_NAME}.jar"
# 版本文件(会将正在运行的版本号放在这个文件中)
VERSION_FILE='version.txt'

index=0
Expand All @@ -18,18 +24,20 @@ fi

main(){
if [ $index -lt 1 ]; then
echo 'No jar file selected to run'
return 1
fi
jarFilesCount=`ls libs/${FILE_NAME}-*.jar|wc -l|sed 's/ //g'`
jarFilesCount=`ls libs/${ARCHIVE_NAME}-*.jar|wc -l|sed 's/ //g'`
if [ $jarFilesCount -eq 0 ]; then
echo 'No jar files found under libs directory'
return 1;
fi
if [ $index -gt $jarFilesCount ]; then
echo "[index] should be 1-$jarFilesCount"
return 1
fi

jarFile=`ls libs/${FILE_NAME}-*.jar|tail -${index}|head -1`
jarFile=`ls libs/${ARCHIVE_NAME}-*.jar|tail -${index}|head -1`

echo "sh: cp ${jarFile} ${APP_NAME}"
cp $jarFile $APP_NAME
Expand Down
6 changes: 3 additions & 3 deletions sql/V2020.0501.1__Init.sql
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
-- ----------------------------
-- Generally speaking, if in China, you should append string `default-time-zone = '+08:00'`
-- to `/etc/mysql/mysql.conf.d/mysqld.cnf` config file.
-- Thus set mysql timezone to `UTC+0800`,
-- for `CST` timezone will cause problem of more or less several hours.
-- Thus set mysql timezone to `UTC+0800`, to fix that
-- `CST` timezone will cause problem of more or less several hours.
-- ----------------------------

-- ----------------------------
-- 一般而言,需要在 `/etc/mysql/mysql.conf.d/mysqld.cnf` 尾部
-- 加上 `default-time-zone = '+08:00'`
-- 设定数据库时区为 UTC+0800,CST 时区会导致时间差问题
-- 设定数据库时区为 UTC+0800,因为CST 时区会导致时间差问题
-- ----------------------------

-- ----------------------------
Expand Down

0 comments on commit 547c18b

Please sign in to comment.