整套專案部署(IHCC為例)
阿新 • • 發佈:2021-10-22
目錄
IHCC專案部署
本次部署方式採用執行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
環境準備
- 安裝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
#進入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.12.1
#建立本地對映目錄及檔案
mkdir -p /ihcc/elasticsearch/config
mkdir -p /ihcc/elasticsearch/data
mkdir -p /ihcc/elasticsearch/plugins
echo "http.host: 0.0.0.0">>/ihcc/elasticsearch/config/elasticsearch.yml
#資料夾賦權
chmod -R 777 /ihcc/elasticsearch/
#啟動,注意這裡需要增加--privileged=true,也就是讓docker有root許可權啟動容器
docker run --name elasticsearch -p 9200:9200 \
-p 9300:9300 \
--privileged=true \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /ihcc/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /ihcc/elasticsearch/data:/usr/share/elasticsearch/data \
-v /ihcc/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.12.1
#驗證是否成功
http://192.168.80.111:9200/
# Docker啟動容器自啟
docker update elasticsearch --restart=always
安裝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配置
MQ的配置各個模組有些差異
#建立特定的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中裝置預設:用於拓撲管理中的裝置繫結