整套项目部署(IHCC为例)

发布时间:2022-07-02 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了整套项目部署(IHCC为例)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

目录
    @H_304_6@IHCC项目部署
    • 环境准备
    • 文件准备
    • 文件方式配置及启动
      • 还原数据库
      • 配置启动nacos
      • 配置后端所有模块
        • rabbitmq配置
      • 启动后端模块
      • 配置启动nginx
  • 其他
    • APM相关设置

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
@R_777_995@ 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中设备预设:用于拓扑管理中的设备绑定

脚本宝典总结

以上是脚本宝典为你收集整理的整套项目部署(IHCC为例)全部内容,希望文章能够帮你解决整套项目部署(IHCC为例)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。