1. 程式人生 > 其它 >整套專案部署(IHCC為例)

整套專案部署(IHCC為例)

目錄

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資料夾的各個子資料夾中

  1. 前端檔案:~/ihcc
  2. 後端檔案:~/jar
  3. nacos檔案:~/nacos
  4. 資料檔案:~/backupfile/ry-cloud20210823.tar、ry-config20210823.tar
  5. 啟動指令碼檔案:~/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

檔案方式配置及啟動

  1. 配置資料庫
  2. 配置啟動nacos
  3. 配置後端模組:此操作在nacos管理介面操作
  4. 啟動後端模組
  5. 配置啟動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則需要進行以下的預設操作,例如拓撲管理功能

  1. APM模板預設

    1 必須包含一個分組為IHCC,根節點為IHCC的模板,根據當時的需求,此模板用於拓撲結構的根節點
    2 除了根節點對應的拓撲結構的其他層級模板,為了拓撲管理的模板選擇及同步的操作
    
  2. APM中配置DataHub:在APM的系統配置中增加Datahub租戶配置

  3. Datahub中裝置預設:用於拓撲管理中的裝置繫結