# fota-manager
**Repository Path**: jctecho/fota-manager
## Basic Information
- **Project Name**: fota-manager
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 2
- **Created**: 2020-08-13
- **Last Updated**: 2023-09-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# SDK要求
jdk: 1.8 (不支持更高版本,因为javax相关包在之后版本被移除,本项目有依赖)
node: 项目自带node, 本地对应版本可以安装:
```text
v12.16.1
v6.13.4
```
# 编译操作
在项目根路径执行:`mvn clean package`
版本文件在根路径下的:`target/version` 中,直接上传`version`目录下的所有文件到服务器;
默认配置需要上传到服务器位置:`/home/app/fota`;
否则请修改配置文件;
***注:编译webui可能出现问题,请编辑pom,搜索`node_modules`, 并放开注释***
# 启动操作
webui和资源服务器需要安装 nginx, 通过 `openresty` 来安装
nginx依赖 `nginx-lua-module`, 下载的时候通过子请求去记录日志
## nginx安装说明
```shell
# 安装openresty:https://github.com/openresty/openresty
# 文档:https://openresty.org/en/linux-packages.html
# install some prerequisites needed by adding GPG public keys (could be removed later)
sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates
# import our GPG key:
wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
# add the our official APT repository:
echo "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main" \
| sudo tee /etc/apt/sources.list.d/openresty.list
# to update the APT index:
sudo apt-get update
sudo apt-get -y install openresty
# 不安装推荐模块
sudo apt-get -y install --no-install-recommends openresty
# 配置环境变量
export NGINX_HOME=/usr/local/openresty/nginx
export PATH=$NGINX_HOME/sbin:$PATH
nginx -v
echo "start nginx"
nginx -c /usr/local/nginx/conf/nginx.conf
```
## 整体启动
整体启动执行命令:`sh start_app.sh`
不启动管理服务:`sh start_app.sh x`
## fota-manager-server
启动除了修改`application.yml`中数据源相关配置外,还有以下需要注意
1. `fota-manager-server`启动,需要修改 `application.yml` 中 `fota.config.path`参数来配置外置配置文件加载的根路径
2. 对于自定义参数,可以参考jar包中 `META-INF/additional-spring-configuration-metadata.json`文件的描述
启动命令:`java -jar fota*.jar`; 请进入jar目录再执行该命令
### 配置文件参数说明:
参数大多数情况可以适用默认值,当自定义服务器位置时,请注意修改参数7;
1. `fota.token.expire`:用户token过期时间,默认值:1800s;
2. `fota.token.refresh-time`: 用户token刷新时间,默认值:300s;
3. `fota.token.random-salt`: 用户token计算是否加入随机盐(随机变量),默认值:true;
4. `fota.token.salt`: 用户token计算使用的固定变量(当`fota.token.random-salt`时生效),默认值:fota-manager-auto-salt;
5. `fota.appname`: 应用名称;
6. `fota.config.path`: 配置文件根路径(默认情况日志路径也依赖该路径,可自行修改)
7. `fota.static.log-time`: 统计监控日志输出时间, 默认值:1分钟;
8. `fota.db.storage-period`: fota日志的消费线程的入库周期,根据该值或者限定的最大批量值来进行入库,默认值:30秒;
9. `fota.db.batch-count`: fota日志消费线程批量入库时每批次数量,默认值:500;
## fota-manager-ui
需要修改 `nginx/nginx.conf`文件中 `root` 节点的值,改为`index.html`所在目录
同时保证环境中安装了nginx, 并且配置了全局环境变量
通过nginx启动即可,自定义启动,参考nginx配置文件:`nginx/nginx.conf`
查询nginx情况:
```shell
> ps -ef|grep nginx
> kill $pid
```
## fota-version-server
需要修改配置源相关信息
需要配置关联下载资源服务器的ip和端口
启动命令:`java -jar fota*.jar`
### 配置参数说明:
1. `fota.app-name`: 应用名称;
2. `fota.file-timeout`: 上传文件临时保存时间,超时自动删除, 默认值:10分钟;
3. `fota.cron-list`: 定时任务配置列表;
4. `fota.server-info`: 资源服务器信息;
5. `fota.server-info.key`: 资源服务器的唯一标识;
6. `fota.server-info.name`: 资源服务器的显示名称;
7. `fota.server-info.domain`: 资源服务器的服务器域名或ip:port;
8. `fota.server-info.root-path`: 资源服务器的服务器工程根路径;
9. `fota.server-info.source-path`: 资源服务器的资源存放地址;
10. `fota.server-info.context-path`: 资源服务器的应用上下文;
## 部署整体流程
说明:命令不一定完成正确,表意;
1. clone源码:git clone ssh://gituser@192.168.1.251:/~/wewins_fota_server
2. 安装java环境:jdk8;安装maven;
3. 进入源码根路径,执行maven编译命令:`mvn clean package`;
4. 编译完成后,进入版本存放目录:`cd target/version`,每一个子项目均在独立的目录中;
5. 修改各子项目自定义配置参数,`application.yml`可修改`profile`;针对修改的profile再进行各个配置文件的修改;参数说明见上述章节;
6. 上传版本到服务器:`scp ./** user@remote_host:/home/app/fota`;
7. 管理服务器需要安装`mysql`,`redis`,`java8`,`nginx(openresty)`; 资源服务器需要安装`java8`,`nginx(openresty)`;均需要配置环境变量;
8. 进入服务器项目根路径:`cd /home/app/fota`;
9. 执行启动脚本:`sh start_app.sh`, 参数说明:
```text
-p 设置下载服务器激活的profile信息, 默认激活为china; 比如:要读取application-xx.yml文件,则输入: "-p xx"
-s 设置要启动的服务,默认启动所有;可选参数:all(启动所有),m(启动管理),v(启动下载服务)
```
*注:如果修改了应用上下文及服务器根路径,需要自行核对配置文件中的路径是否正确,nginx的配置文件中基准路径也请自行校准;否则会导致启动异常!!*
*注2:资源服务器的`redis`参数配置,使用管理服务器启动的`redis`,否则会导致资源服务器无法正常注册、下载日志无法正确入库以及webui删除版本时,无法清理升级包*