整套项目部署(IHCC为例)
| 版本 | 编辑人 | 编辑内容 | 日期 |
|---|---|---|---|
| 0.1 | xxx | 手动环境安装、配置及部署初版 | 2021-09-01 |
目录
手动项目部署
本次部署方式采用执行jar文件的形式,运行环境安装配置采用的docker方式进行,后期需根据情况自行安装设定,数据库文件中包含部分测试中的数据信息,后期需清理。
#在所有的设置好的前提下每次开机只需要启动nacos及后台服务
#1 启动nacos
sh /ihcc/files/nacos/bin/startup.sh -m standalone
#2 启动后台所有服务
cd /ihcc/files/sh
sh ihcc.sh start
#另开窗口查看启动日志,在启动命令同级目录,运行日志在启动脚本的下级目录logs中
tail -f nohub.out
文件准备
根据实际部署需要准备部署文件:
- 数据库全备份文件:ry-cloudxxxxxxxx.tar,ry-configxxxxxxxx.tar
- 前端发布文件:ihcc
- 后端所有服务jar包:ihcc-xxx.jar
- nacos启动文件:nacos
- 后端启动脚本:ihcc.sh,ihcc-one.sh
环境准备
- 安装JDK
- 安装Postgre数据库
- 安装redis
- 安装MQ
- 安装ElasticSearch
- 安装Nginx
安装JDK
# 安装openjdk1.8(推荐安装1.8和openjdk11)
sudo yum install java-1.8.0-openjdk*
#配置环境变量
打开/etc/profile,添加如下信息,下面 JAVA_HOME,JRE_HOME 为自己JDK的实际路径,自行修改。
#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
#重新加载 /etc/profile 文件,使配置生效
source /etc/profile
#查看版本(安装成功后可查看到对应版本)
java -version
安装Docker
#需要的安装包
yum install -y yum-utils
#设置镜像的仓库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #默认是国外的
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #推荐使用阿里云的
#更新yum软件包索引
yum makecache fast
#安装Docker docker-ce社区 ee企业版
yum install docker-ce docker-ce-cli containerd.io
#启动Docker
systemctl start docker
systemctl enable docker
#使用docker version 查看是否安装成功
#阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://stltrtm2.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
安装Postgre数据库
#下载镜像,版本指定
docker pull postgres:10.15
#创建本地映射目录
mkdir -p /ihcc/postgresql/data
#启动
docker run --name postgres -e POSTGRES_PASSWORD=Ab@123456 -p 5432:5432 -v /ihcc/postgresql/data:/var/lib/postgresql/data -d postgres:10.15
# 进入容器
docker exec -it postgres /bin/bash
# 进入文件夹
cd /usr/lib/postgresql/9.6/bin
# 进入postgresql,默认的postgres用户
psql -Upostgres
#此时可以用客户端连接工具进行测试是否连接成功
# Docker启动容器自启
docker update postgres --restart=always
安装Redis
#下载镜像
docker pull redis
#创建本地映射目录
mkdir -p /ihcc/redis/conf
mkdir -p /ihcc/redis/data
#从官方下载redis,更新配置文件redis.conf部分配置项
bind 127.0.0.1 #注释掉这部分,使redis可以外部访问
daemonize no#用守护线程的方式启动
requirepass 你的密码#给redis设置密码
appendonly yes#redis持久化 默认是no
tcp-keepalive 300 #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300
#将文件放到映射目录/ihcc/redis/conf/redis.conf
#创建Redis容器并启动
sudo docker run -p 6379:6379 --name redis -v /ihcc/redis/conf/redis.conf:/etc/redis/redis.conf -v /ihcc/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
#无配置文件将配置信息写在启动命令中
sudo docker run -p 6379:6379 --name redis2022 -v /ihcc/redis/conf/redis.conf:/etc/redis/redis.conf -v /ihcc/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass "Ab@123456"
#进入Redis容器
### 通过 Docker 命令进入 Redis 容器内部
docker exec -it redis /bin/bash
docker exec -it redis bash
### 进入 Redis 控制台
redis-cli
### 添加一个变量为 key 为 name , value 为 hing 的内容
> set name hing
### 查看 key 为 name 的 value 值
> get name
### 或者也可以直接通过Docker Redis 命令进入Redis控制台 (上面两个命令的结合)
docker exec -it redis redis-cli
## 进入Redis容器,通过密码进入Redis控制台
docker exec -it redis /bin/bash
redis-cli -h 127.0.0.1 -p 6379 -a Ab123456
# Docker启动容器自启
docker update redis --restart=always
安装RabbitMQ
#下载镜像,指定版本,该版本包含了web控制页面
docker pull rabbitmq:management
#创建本地映射目录
mkdir -p /ihcc/rabbitmq
##启动
#方式一:默认guest 用户,密码也是 guest
docker run -d --hostname my-rabbit --name rabbit -v /ihcc/rabbitmq:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:management
#方式二:设置用户名和密码
docker run -d --hostname my-rabbit --name rabbit -v /ihcc/rabbitmq:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_VHOST=my-vhost -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management
#访问ui页面
http://localhost:15672/
# Docker启动容器自启
docker update rabbit --restart=always
安装ElasticSearch
#下载镜像,版本指定
docker pull elasticsearch:7.14.2
#创建本地映射目录及文件
mkdir -p /data/elasticsearch/config
mkdir -p /data/elasticsearch/data
mkdir -p /data/elasticsearch/plugins
echo "http.host: 0.0.0.0">>/data/elasticsearch/config/elasticsearch.yml
#文件夹赋权
chmod -R 777 /data/elasticsearch/
#启动,注意这里需要增加--privileged=true,也就是让docker有root权限启动容器
docker run --name elasticsearch -p 9200:9200 \
-p 9300:9300 \
--privileged=true \
--restart=always \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.14.2
#验证是否成功
http://192.168.80.111:9200/
curl 127.0.0.1:9200/_cat/nodes
# Docker启动容器自启
docker update elasticsearch --restart=always
增加权限认证
官方插件 X-Pack:X-Pack 插件在 docker 镜像中默认已安装,不过 X-Pack 中的 Security 模块需要付费才能使用,所以弃用这个插件
社区插件 Readonly REST:Readonly REST 是 Elasticsearch 原生 REST API 的高性能权限控制插件。
- 官网地址:https://readonlyrest.com/
- Github 地址:https://github.com/sscarduzio/elasticsearch-readonlyrest-plugin
- 文档地址:https://github.com/beshu-tech/readonlyrest-docs/blob/master/elasticsearch.md
#下载相应版本的readonlyrest插件
注意:这里选择免费版本,指定版本为7.14.2,输入一个邮箱地址。点击GET IT NOW,就会收到一封邮件。
#将邮件中下载的插件zip文件解压到挂载目录/data/elasticsearch/plugins中
readonlyrest-1.35.1_es7.14.2.zip
#配置文件挂载目录/data/elasticsearch/config/下新建文件readonlyrest.yml文件
readonlyrest:
access_control_rules:
- name: "Require HTTP Basic Auth"
type: allow
auth_key: 用户名:密码
#移除容器重新运行
docker run --name elasticsearch -p 9200:9200 \
-p 9300:9300 \
--privileged=true \
--restart=always \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-e "xpack.security.enabled=false" \
-v /data/elasticsearch/config/readonlyrest.yml:/usr/share/elasticsearch/config/readonlyrest.yml \
-v /data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.14.2
#不使用账号密码
curl 127.0.0.1:9200/_cat/nodes
#使用账号密码
curl -u 账号:密码 127.0.0.1:9200/_cat/nodes
安装kibana
只用于开发者,生产环境无需关注
#下载镜像指定版本
docker pull kibana:7.14.2
#创建挂载目录并授权
mkdir -p /data/kibana/config/
mkdir -p /data/kibana/plugins/
chmod -R 777 /data/kibana/
#将readonlyrest插件解压后的文件readonlyrestkbn放到plugins目录下,unzip解压
readonlyrestkbn
#config目录下编写配置文件kibana.yml
server.name: kibana
server.port: 5601
server.host: "0"
elasticsearch.hosts: [ "http://172.22.24.199:9200" ]
elasticsearch.username: "elastic"
elasticsearch.password: "Ab123456"
xpack.graph.enabled: false
xpack.ml.enabled: false
xpack.monitoring.enabled: true
xpack.security.enabled: false
xpack.watcher.enabled: false
telemetry.enabled: false
#运行容器
docker run -d \
--name=kibana \
--restart=always \
--privileged=true \
-v /data/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-v /data/kibana/plugins/:/usr/share/kibana/plugins/ \
kibana:7.14.2
#最重要的步骤 Patch Kibana core files解决启动成功但是无法访问的问题
exec -it kibana /bin/bash #进入容器
node/bin/node plugins/readonlyrestkbn/ror-tools.js patch #Patch操作
#重启kibana
docker restart kibana
安装Nginx
#下载镜像
docker pull nginx
#启动测试容器
sudo docker run --name nginx-test -p 8081:80 -d nginx
#创建本地映射目录
mkdir -p /ihcc/nginx/html /ihcc/nginx/logs /ihcc/nginx/conf
#查看
docker ps
#拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录
sudo docker cp f77f78d2228d:/etc/nginx/nginx.conf /ihcc/nginx/conf
#启动
sudo docker run -d -p 80:80 --name nginx -v /ihcc/nginx/html:/usr/share/nginx/html -v /ihcc/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /ihcc/nginx/logs:/var/log/nginx --privileged=true nginx
#测试页面
vim /ihcc/nginx/html/index.html
#内容
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试</title>
</head>
<body>
<h1>hello</h1>
<p>这是一个测试页面</p>
</body>
</html>
#测试访问是否部署成功
http://192.168.80.111:8080/
#停止并移除测试容器
docker stop nginx-test
docker rm nginx-test
# Docker启动容器自启
docker update nginx --restart=always
文件放置
准备好的文件放在/ihcc/files文件夹的各个子文件夹中
- 前端文件:~/ihcc
- 后端文件:~/*.jar
- nacos文件:~/nacos
- 数据文件:~/backupfile/ry-cloud20210823.tar、ry-config20210823.tar
- 启动脚本文件:~/sh/ihcc.sh、ihcc-one.sh
以下操作开发人员需要使用命令,其他无需关注:
#前端打包
npm install
npm run build:prod
#后端打包
mvn clean compile
mvn clean package
#数据库文件备份,从其他服务器备份数据库文件
pg_dump -h 172.22.24.139 -U postgres -p 5432 -F t -f /home/apiserver/postgres-data/ry-cloud20210823.tar ry-cloud
pg_dump -h 172.22.24.139 -U postgres -p 5432 -F t -f /home/apiserver/postgres-data/ry-config20210823.tar ry-config
#nacos打包,文件在distribution目录下
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U -Drat.skip=true
配置及启动
- 配置数据库
- 配置启动nacos
- 配置后端模块:此操作在nacos管理界面操作
- 启动后端模块
- 配置启动nginx
还原数据库
#将准备好的数据库文件进行还原
#首先将数据文件放到待还原服务器的挂载目录下
/ihcc/postgresql/data/backupfile/
#进入容器
docker exec -it postgres /bin/bash
#还原,首先创建空的待还原的数据库,之后进行还原的操作,执行的目录为容器内部的目录
nohup pg_restore -h 192.168.80.111 -U postgres -d ry-cloud /var/lib/postgresql/data/backupfile/ry-cloud20210823.tar
nohup pg_restore -h 192.168.80.111 -U postgres -d ry-config /var/lib/postgresql/data/backupfile/ry-config20210823.tar
#查看还原信息
tail-f nohup.out
配置启动nacos
#文件位置/ihcc/files/nacos/
#更新配置文件application.properties,数据源相关配置为上边安装的数据库地址
db.url.0=jdbc:postgresql://192.168.80.111:5432/ry-config?useSSL=false
db.user=postgres
db.password=Ab@123456
#启动
sh /ihcc/files/nacos/bin/startup.sh -m standalone
#查看启动日志
tail -f /ihcc/files/nacos/logs/start.out
#访问页面,用户名/密码 nacos/nacos
http://192.168.80.111:8848/nacos
#备注:执行.sh脚本时出现$’\r’: 未找到命令,是因为命令直接从windows 复制过来导致的
yum install dos2unix
dos2unix **.sh 进行转换
配置所有后端模块
#此部分的所有模块的配置都在nacos中进行变更
http://192.168.80.111:8848/nacos
#所有模块的数据库、redis、es、文件路径配置、图片地址配置相同
ihcc-auth-dev.yml
ihcc-file-dev.yml
ihcc-gateway-dev.yml
ihcc-imobile-dev.yml
ihcc-logger-dev.yml
ihcc-apm-dev.yml
ihcc-adapter-dev.yml
ihcc-system-dev.yml
ihcc-gen-dev.yml
#数据库
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://192.168.80.111:5432/ry-cloud?useSSL=false
username: postgres
password: Ab@123456
#redis
redis:
host: 192.168.80.111
port: 6379
password: Ab123456
#es
addressIsIP: true
hosts: 192.168.80.111:9200
#文件路径
file:
domain: http://192.168.80.111:9204
path: /ihcc/files/uploadFile
prefix: /statics
#图标地址配置
icons:
url: http://192.168.80.111/
suffix: .svg
rabbitmq配置
#Q的配置各个模块有些差异
#创建特定的host,并将此配置信息通知iMobile用于用户及角色信息的同步
需要创建Virtual Hosts:/iMobile
创建用户:iMobile/Ab@123456
赋予Virtual Hosts为/iMobile的permissions权限为iMobile用户
#ihcc-logger-dev.yml、ihcc-adapter-dev.yml配置一致
rabbitmq:
host: 192.168.80.111
port: 5672
username: admin
password: admin
virtual-host: /
#ihcc-system-dev.yml
rabbitmq:
host: 192.168.80.111
port: 5672
username: iMobile
password: Ab@123456
virtual-host: /iMobile
启动后端模块
#jar包所在位置
/ihcc/files/jar/
#启动文件所在位置
/ihcc/files/sh/
#启动文件中需要修改jar包所在位置及nacos地址
export JAR_BASIC_PATH=/ihcc/files/jar
export nacos_addr=192.168.80.111:8848
#启停所有后端服务
sh /ihcc/files/sh/ihcc.sh start
sh /ihcc/files/sh/ihcc.sh stop
#服务的单独启停,以单独system为例
sh /ihcc/files/sh/ihcc-one.sh start system
sh /ihcc/files/sh/ihcc-one.sh stop system
配置启动nginx
#前端文件位置
/ihcc/nginx/html/ihcc
#配置文件位置
/ihcc/nginx/conf/nginx.conf
#修改配置文件,在http{}中增加server{}配置
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
add_header Access-Control-Allow-Origin '*';
root /usr/share/nginx/html/ihcc/;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location ^~ /resources/ {
root /usr/share/nginx/html/resources/;
index index.html index.htm;
}
location /statics {
root /ihcc/files/uploadFile/;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.80.111:8080/;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
#重启nginx
docker restart nginx
#页面访问成功则结束所有配置
http://192.168.80.111/
注意事项
APM相关设置
若在实际应用中用到APM则需要进行以下的预设操作,例如拓扑管理功能
-
APM模板预设
1 必须包含一个分组为IHCC,根节点为IHCC的模板,根据当时的需求,此模板用于拓扑结构的根节点 2 除了根节点对应的拓扑结构的其他层级模板,为了拓扑管理的模板选择及同步的操作 -
APM中配置DataHub:在APM的系统配置中增加Datahub租户配置
-
Datahub中设备预设:用于拓扑管理中的设备绑定
首页展示项目主目录的配置
system模块中进行配置
#其中“**仪表板中心**”为dashboard菜单目录名称。
homepage.dashboard.menuname: 仪表板中心

浙公网安备 33010602011771号