start.sh说明
start.sh 用于编译、复制、启动、停止和查看 shoptnt 后端服务。脚本建议放在 shoptnt 源码根目录下执行。
一、使用前准备
源码和配置中心建议按以下目录放置:
/opt/source
├── shoptnt
│ └── start.sh
└── config
├── application.yml
└── application-dev.yml
如果使用默认配置,脚本会自动查找 /opt/source/shoptnt/../config,也就是 /opt/source/config。
启动前需要先修改配置中心文件:
cd /opt/source/config
vim application-dev.yml
请根据实际环境配置 MySQL、Redis、Elasticsearch、RabbitMQ 等连接信息。
二、首次部署
进入源码目录:
cd /opt/source/shoptnt
执行安装启动命令:
bash start.sh
该命令会完成以下操作:
- 使用 Maven 编译源码。
- 将各服务 JAR 包复制到
/opt/server。 - 启动本机 Config Server。
- 依次启动后端服务。
- 检查每个服务端口是否启动成功。
脚本默认运行目录是 /opt/server,如果不传 --server-dir,JAR 包和日志都会放在这里。
默认情况下,脚本会按以下配置执行:
| 配置项 | 默认值 |
|---|---|
| 启动动作 | install |
| 配置目录 | 源码同级 config 目录,例如 /opt/source/config |
| 运行目录 | /opt/server |
| 配置环境 | dev |
| Config Server 地址 | http://127.0.0.1:8888 |
只有需要修改默认目录、环境或配置中心地址时,才需要额外传入参数,例如:
bash start.sh install --config-dir /opt/source/config --server-dir /opt/server --profile dev
三、常用命令
1. 编译并启动全部服务
bash start.sh
# 或
bash start.sh install
适合首次部署,或者代码更新后重新编译部署。
2. 跳过 Maven 编译
bash start.sh install --skip-build
适合源码已经编译过,只需要重新复制 target 目录中的 JAR 并启动服务。
3. 只启动已部署的 JAR
bash start.sh start
适合服务器重启后,直接使用 /opt/server 中已有的 JAR 启动服务。
4. 停止全部服务
bash start.sh stop
5. 停止指定服务
bash start.sh stop buyer-api
6. 重启全部服务
bash start.sh restart
7. 重启指定服务
bash start.sh restart buyer-api
8. 查看运行状态
bash start.sh status
9. 查看服务日志
bash start.sh logs buyer-api
四、服务名和端口
| 服务名 | 默认端口 | 说明 |
|---|---|---|
config-server | 8888 | 配置中心 |
base-api | 7001 | 基础接口 |
buyer-api | 7002 | 买家端接口 |
seller-api | 7003 | 商家端接口 |
manager-api | 7004 | 管理端接口 |
consumer | 6000 | 消费者服务 |
sba-server | 7006 | Spring Boot Admin |
停止、重启、查看日志时,服务名必须使用上表中的名称。
五、参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
--config-dir | 自动查找源码同级 config 目录 | 指定配置中心目录,例如 /opt/source/config |
--server-dir | /opt/server | 指定 JAR 和日志的运行目录 |
--profile | dev | 指定配置环境,对应 application-dev.yml |
--version | 8.0 | 指定运行 JAR 的版本名称 |
--label | master | 指定配置中心 label |
--config-uri | http://127.0.0.1:8888 | 指定 Config Server 地址 |
--without-config-server | 不启用 | 不启动本机 Config Server,改用外部 Config Server |
--skip-build | 不启用 | install 时跳过 Maven 编译 |
如果部署的不是 dev 环境,例如使用 prod 环境,需要确保配置目录中存在对应文件:
/opt/source/config/application-prod.yml
启动命令示例:
bash start.sh install --profile prod --config-dir /opt/source/config
六、使用外部 Config Server
如果 Config Server 不在当前服务器启动,需要加上 --without-config-server,并指定外部 Config Server 地址:
bash start.sh install \
--without-config-server \
--config-uri http://10.0.0.11:8888
脚本会通过 --config-uri 检查配置中心是否可访问,然后再启动各 API 服务。
七、日志目录
默认日志目录:
/opt/server/logs
常见日志文件:
/opt/server/logs/config-server.log
/opt/server/logs/base-api.log
/opt/server/logs/buyer-api.log
/opt/server/logs/seller-api.log
/opt/server/logs/manager-api.log
/opt/server/logs/consumer.log
/opt/server/logs/sba-server.log
如果启动失败,优先查看对应服务日志:
bash start.sh logs manager-api
八、常见问题
1. 提示没有找到配置项目
检查 /opt/source/config 是否存在,并确认包含以下文件:
application.yml
application-dev.yml
也可以启动时手动指定配置目录:
bash start.sh install --config-dir /opt/source/config
2. Config Server 启动超时
先查看配置中心日志:
bash start.sh logs config-server
重点检查配置文件格式、配置目录路径、端口 8888 是否被占用。
3. 服务启动超时
查看对应服务日志,例如:
bash start.sh logs buyer-api
重点检查 MySQL、Redis、Elasticsearch、RabbitMQ 等中间件地址是否正确。
4. 修改过运行目录后,状态或日志查不到
status、stop、restart、logs 默认读取 /opt/server。如果启动时使用了自定义运行目录,后续命令需要带上环境变量:
SERVER_DIR=/data/shoptnt/server bash start.sh status
SERVER_DIR=/data/shoptnt/server bash start.sh logs buyer-api