You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

250 lines
6.9 KiB

2 years ago
# 部署到服务器
## 前端部署
环境要求
- nodeJs v12.xx
- npm v6.xx
1. 获取源代码
```shell script
$ git clone https://github.com/jetlinks/jetlinks-ui-antd.git
```
2. 使用npm打包,并将打包后的文件复制到项目的docker目录下(命令在项目根目录下执行)
```shell script
npm install
npm run-script build
cp -r dist docker/
```
### 使用docker部署前端
1. 构建docker镜像
```bash
docker build -t registry.cn-shenzhen.aliyuncs.com/jetlinks/jetlinks-ui-antd ./docker
```
2. 运行docker镜像
```bash
docker run -it --rm -p 9000:80 -e "API_BASE_PATH=http://xxx:8848/" registry.cn-shenzhen.aliyuncs.com/jetlinks/jetlinks-ui-antd
```
::: tip 注意
环境变量`API_BASE_PATH`为后台API根地址. 由docker容器内进行自动代理. 请根据自己的系统环境配置环境变量: `API_BASE_PATH`
:::
### 使用nginx部署
1. 复制`dist`目录下到文件到`/usr/share/nginx/html`
2. 添加nginx配置文件
nginx配置参考:
```conf
server {
listen 80;
# gzip config
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
root /usr/share/nginx/html;
include /etc/nginx/mime.types;
location / {
index index.html;
}
location ^~/jetlinks/ {
proxy_pass http://jetlinks:8844/; #修改此地址为后台服务地址
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 1;
proxy_buffering off;
chunked_transfer_encoding off;
proxy_cache off;
proxy_send_timeout 30m;
proxy_read_timeout 30m;
client_max_body_size 100m;
}
}
```
## 后端部署
### 使用docker部署后端
1. 使用maven命令将项目打包
在代码根目录执行:
```shell script
mvn clean package -Dmaven.test.skip=true
```
2. 使用docker构建镜像
::: tip 注意
请自行准备docker镜像仓库,此处以registry.cn-shenzhen.aliyuncs.com阿里云私有仓库为例。
:::
```shell script
$ cd ./jetlinks-standalone
$ docker build -t registry.cn-shenzhen.aliyuncs.com/jetlinks/jetlinks-standalone:latest .
```
3. 推送镜像
```bash
$ docker push registry.cn-shenzhen.aliyuncs.com/jetlinks/jetlinks-standalone:latest
```
4. 创建docker-compose文件
```bash
version: '2'
services:
redis:
image: redis:5.0.4
container_name: jetlinks-ce-redis
# ports:
# - "6379:6379"
volumes:
- "redis-volume:/data"
command: redis-server --appendonly yes --requirepass "redispassword"
environment:
- TZ=Asia/Shanghai
elasticsearch:
image: elasticsearch:6.8.11
container_name: jetlinks-ce-elasticsearch
environment:
ES_JAVA_OPTS: -Djava.net.preferIPv4Stack=true -Xms1g -Xmx1g
transport.host: 0.0.0.0
discovery.type: single-node
bootstrap.memory_lock: "true"
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping.unicast.hosts: elasticsearch
volumes:
- elasticsearch-volume:/usr/share/elasticsearch/data
# ports:
# - "9200:9200"
# - "9300:9300"
kibana:
image: kibana:6.8.11
container_name: jetlinks-ce-kibana
environment:
ELASTICSEARCH_URL: http://elasticsearch:9200
links:
- elasticsearch:elasticsearch
ports:
- "5602:5601"
depends_on:
- elasticsearch
postgres:
image: postgres:11-alpine
container_name: jetlinks-ce-postgres
volumes:
- "postgres-volume:/var/lib/postgresql/data"
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: jetlinks
POSTGRES_DB: jetlinks
TZ: Asia/Shanghai
ui:
image: registry.cn-shenzhen.aliyuncs.com/jetlinks/jetlinks-ui-antd:latest
container_name: jetlinks-ce-ui
ports:
- 9000:80
environment:
- "API_BASE_PATH=http://jetlinks:8848/" #API根路径
volumes:
- "jetlinks-volume:/usr/share/nginx/html/upload"
links:
- jetlinks:jetlinks
jetlinks:
image: registry.cn-shenzhen.aliyuncs.com/jetlinks/jetlinks-standalone:latest
container_name: jetlinks-ce
ports:
- 8848:8848 # API端口
- 1883-1890:1883-1890 # 预留
- 8000-8010:8000-8010 # 预留
volumes:
- "jetlinks-volume:/application/static/upload" # 持久化上传的文件
- "jetlinks-protocol-volume:/application/data/protocols"
environment:
# - "JAVA_OPTS=-Xms4g -Xmx18g -XX:+UseG1GC"
- "TZ=Asia/Shanghai"
- "hsweb.file.upload.static-location=http://127.0.0.1:8848/upload" #上传的静态文件访问根地址,为ui的地址.
- "spring.r2dbc.url=r2dbc:postgresql://postgres:5432/jetlinks" #数据库连接地址
- "spring.r2dbc.username=postgres"
- "spring.r2dbc.password=jetlinks"
- "spring.redis.host=redis"
- "spring.redis.port=6379"
- "spring.redis.password=redispassword"#生产环境请配置redis密码
# 生产环境下请配置es的密码,或者关闭公网访问
- "spring.data.elasticsearch.client.reactive.endpoints=elasticsearch:9200"
# - "spring.data.elasticsearch.client.reactive.username=admin"
# - "spring.data.elasticsearch.client.reactive.password=admin"
# - "spring.reactor.debug-agent.enabled=false" #设置为false能提升性能
# - "jetlinks.device.storage.enable-last-data-in-db=true" # 开启记录最新数据到数据库,但是会降低吞吐量
- "logging.level.io.r2dbc=warn"
- "logging.level.org.springframework.data=warn"
- "logging.level.org.springframework=warn"
- "logging.level.org.jetlinks=warn"
- "logging.level.org.hswebframework=warn"
- "logging.level.org.springframework.data.r2dbc.connectionfactory=warn"
links:
- redis:redis
- postgres:postgres
- elasticsearch:elasticsearch
depends_on:
- postgres
- redis
- elasticsearch
volumes:
postgres-volume:
redis-volume:
elasticsearch-volume:
jetlinks-volume:
jetlinks-protocol-volume:
```
::: tip 注意:
jetlinks docker镜像版本更新和源代码根目录下文件pom.xml中的版本号同步。
:::
6.运行docker-compose文件
```shell script
docker-compose up -d
```
### jar包方式
1.使用maven命令将项目打包,在代码根目录执行:
```shell script
./mvnw clean package -Dmaven.test.skip=true
```
2.将jar包上传到需要部署的服务器上。
jar包文件地址: `jetlinks-standalone/target/jetlinks-standalone.jar`
3.使用java命令运行jar包
```bash
$ java -jar jetlinks-standalone.jar
```
::: tip 注意
请根据情况调整jvm参数等信息.
:::