Skip to content

一、环境信息

  • 数据库/中间件环境信息
名称版本IP地址备注
Nginx1.28.0172.22.33.213docker部署
Mysql8.0.36172.22.33.213docker部署
Redis7.4.3172.22.33.213docker部署
Jenkins2.504.2172.22.33.201docker部署
Gitlab-ce17.1.1172.22.33.203RPM包部署
sonarqube-community25.4.0.105899172.22.33.207docker部署
  • 服务器信息
服务器名称(机器配置)IP地址操作系统备注
web前端+中间件 (8c16g200g)172.22.33.213OpenEuler 22.03 LTS SP4Docker20.10.24,Docker-compose2.10.2
后端微服务01 (8c16g100g)172.22.33.214OpenEuler 22.03 LTS SP4JDK17
后端微服务02 (8c16g100g)172.22.33.215OpenEuler 22.03 LTS SP4JDK17

二、环境部署

2.1 基础环境搭建

WARNING

基础环境 依赖docker 和 docker-compose 组件, 安装教程可参考: https://doc.srebro.cn/zh/home/openeuler/docker

2.1.1 部署Nginx

bash
mkdir -p /home/application/nginx/{conf,dist}
bash
cat > /home/application/nginx/conf/pig-ui.conf <<'EOF'

# 定义七层负载均衡上游服务组
upstream backend {
        server 172.22.33.214:9999;
        server 172.22.33.215:9999;
}

server {
    listen 80;
    server_name localhost;

    # Gzip 压缩配置
    gzip on;
    gzip_static on;
    gzip_min_length 1k;
    gzip_comp_level 4;
    gzip_proxied any;
    gzip_types text/plain text/xml text/css;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    # 前端资源路径
    root /data/;

    location ^~/api/ {
        proxy_pass http://backend/;  # 引用上游服务组
        proxy_connect_timeout 60s;
        proxy_read_timeout 120s;
        proxy_send_timeout 120s;

        # 代理头信息(保持原有配置)
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto http;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header from "";
    }


    # 敏感路径屏蔽
    location ~* ^/(actuator|swagger-ui|v3/api-docs|swagger-resources|webjars|doc.html) {
        return 403;
    }
}
EOF
yaml
cat > /home/application/nginx/docker-compose.yaml <<'EOF'
services:
  nginx:
    image: docker.cnb.cool/srebro/docker-images-chrom/nginx:1.28.0
    #image: nginx:1.28.0
    container_name: nginx
    restart: always
    ports:
      - "80:80"
    volumes:
      - /home/application/nginx/conf/pig-ui.conf:/etc/nginx/conf.d/default.conf  # 挂载自定义配置文件
      - /home/application/nginx/dist:/data # 挂载数据目录
    networks:
      - srebro

networks:
  srebro:
    driver: bridge  # 指定网桥模式
EOF
bash
docker-compose up -d

# 查看容器运行状态
docker logs -f nginx
  • 查看容器运行状态

2.1.2 部署Mysql

bash
mkdir -p /home/application/mysql/data
yaml
cat > /home/application/mysql/docker-compose.yaml <<'EOF'
services:
  mysql:
    restart: always
    #image: mysql:8.0.38
    image: docker.cnb.cool/srebro/docker-images-chrom/mysql:8.0.38
    container_name: mysql
    networks:
      - srebro
    volumes:
      - /home/application/mysql/data:/var/lib/mysql  # 挂载数据目录
      - /etc/localtime:/etc/localtime:ro
    environment:
      MYSQL_ROOT_PASSWORD: "srebro"
      TZ: 'Asia/Shanghai'
    ports:
      - 3306:3306
    command: --explicit_defaults_for_timestamp=true
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-u", "root", "-psrebro"]
      interval: 30s
      timeout: 10s
      retries: 3

networks:
  srebro:
    driver: bridge # 指定网桥模式
EOF
bash
docker-compose up -d

# 查看容器运行状态
docker logs -f mysql
  • 查看容器运行状态

2.1.3 部署Redis

bash
mkdir -p /home/application/redis/{data,logs}
yaml
cat > /home/application/redis/docker-compose.yaml <<'EOF'
services:
  redis:
    image: docker.cnb.cool/srebro/docker-images/redis:7.4.3
    container_name: redis
    networks:
      - srebro
    restart: always
    command: redis-server --requirepass srebro --port 6379 --appendonly yes --dbfilename dump.rd --dir /data --timeout 0 --save 900 1 --save 300 10 --save 60 10000  ##设置redis密码
    environment:
      TZ: 'Asia/Shanghai' 
    volumes:
      - /home/application/redis/data:/data
      - /home/application/redis/logs:/logs
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 6379:6379
    healthcheck:
      test: ["CMD", "redis-cli", "-h", "127.0.0.1", "-p", "6379", "-a", "srebro", "ping"]   ##设置redis密码
      interval: 30s
      retries: 3
      start_period: 30s
      timeout: 10s


networks:
  srebro:
    driver: bridge
EOF
bash
docker-compose up -d

# 查看容器运行状态
docker logs -f redis
  • 查看容器运行状态

2.1.4 部署JDK17

bash
# 安装openjdk17
wget https://mirrors.nju.edu.cn/openjdk/17.0.2/openjdk-17.0.2_linux-x64_bin.tar.gz

# 解压jdk17
tar -zxvf openjdk-17.0.2_linux-x64_bin.tar.gz -C /home/application/

# 删除压缩包
rm -rf openjdk-17.0.2_linux-x64_bin.tar.gz

# 配置环境变量
cat >> /etc/profile << 'EOF'
export JAVA_HOME=/home/application/jdk-17.0.2
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib
EOF
source /etc/profile

# 验证jdk
java -version
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
bash
# 安装openjdk17
wget https://mirrors.nju.edu.cn/openjdk/17.0.2/openjdk-17.0.2_linux-x64_bin.tar.gz

# 解压jdk17
tar -zxvf openjdk-17.0.2_linux-x64_bin.tar.gz -C /home/application/

# 删除压缩包
rm -rf openjdk-17.0.2_linux-x64_bin.tar.gz

# 配置环境变量
cat >> /etc/profile << 'EOF'
export JAVA_HOME=/home/application/jdk-17.0.2
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib
EOF
source /etc/profile

# 验证jdk
java -version
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)

2.1.5 部署其他环境

Details

2.2 部署前准备

2.2.1 准备源码包并上传gitlab

  • 下载pig-ui前端代码
bash
git clone https://gitee.com/log4j/pig-ui.git
  • gitlab创建前端项目

代码库地址: http://code.srebro.cn/opforge/cicd-demo-pig-ui.git

  • 上传前端代码到gitlab

  • 下载pig后端代码
bash
git clone https://gitee.com/log4j/pig.git
  • gitlab创建后端项目

代码库地址: http://code.srebro.cn/opforge/cicd-demo-pig-backend.git

  • 上传后端代码到gitlab

2.2.2 初始化数据库

TIP

支持的数据库版本: mysql5.7.8+(支持8) 默认字符集: utf8mb4 默认排序规则: utf8mb4_general_ci

数据库SQL文件在 后端pig代码根目录下db 目录

bash
-- 业务核心数据库
source db/pig.sql;
-- nacos配置数据库
source db/pig_config.sql;

2.2.3 修改 Nacos 数据库源地址

找到后端代码根目录下 pig-register/src/main/resources/application.properties,修改数据库连接信息

yaml
db.url.0=jdbc:mysql://${MYSQL_HOST:172.22.33.213}:${MYSQL_PORT:3306}/${MYSQL_DB:pig_config}?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
db.user=root
db.password=srebro

最近更新

采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 运维小弟