# 构架及搭建

# 后端技术栈

# 清单

编号 名称 版本 说明
1 Postgresql (opens new window) 13.4
2 Spring boot (opens new window) 2.6.2
3 Redis (opens new window)(中文 (opens new window)) 6.0.4

# 环境搭建

# Docker 环境

在 Centos 环境中搭建服务环境,由于 Centos 终止服务,使用 Centos 的派生版本 AlmaLinux (opens new window),使用的技术栈与 Centos 相同。

# 更新源为阿里
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
    -e 's|^# baseurl=https://repo.almalinux.org|baseurl=https://mirrors.aliyun.com|g' \
    -i.bak \
    /etc/yum.repos.d/almalinux*.repo

# 安装 阿里 epel
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*

# Step 2: 添加 Docker 软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

# 更新系统
sudo dnf update
# 安装 docker 依赖
dnf install -y yum-utils device-mapper-persistent-data lvssm2

# podman 与Docker 存在依赖冲突
sudo dnf remove podman buildah
yum makecache
yum -y install docker-ce

# 国内镜像
mkdir -p /etc/docker/
cat <<EOF >>.json 
{
  "registry-mirrors": [
    "https://cr.console.aliyun.com/",
    "http://registry.docker-cn.com",
    "http://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com",
    "http://ovfftd6p.mirror.aliyuncs.com"
  ],
  "insecure-registries": [
    "registry.docker-cn.com",
    "docker.mirrors.ustc.edu.cn",
    "192.168.0.6:8000"
  ],
  "debug": true,
  "experimental": true
}
EOF

# 启动Docker
systemctl start docker
systemctl enable docker

## 建立独立的网段
docker network create --subnet=172.16.0.0/16 docker-network
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

# Postgresql 安装

# 建立Postgresql容器
docker run --name postgres-server \
  -p 5432:5432 \
  --net docker-network --ip 172.16.0.2 \
  --restart=always \
  -v /data/docker/postgresql/data:/var/lib/postgresql/data:rw \
  -v /data/docker/postgresql/spring:/var/lib/postgresql/spring:rw \
  -e ALLOW_IP_RANGE="0.0.0.0/0" \
  -e POSTGRES_PASSWORD=abc123 \
  -e TZ=Asia/Shanghai  \
  -d  postgres
1
2
3
4
5
6
7
8
9
10
# 建立数据库
docker exec -i postgres-server bash <<UOF
su - postgres <<EOF
psql <<XOF
DROP DATABASE if exists "spring-dev";
DROP TABLESPACE if exists "space_spring_dev";
DROP USER if exists "spring-dev";
CREATE USER "spring-dev" with encrypted password 'spring-dev@123';
CREATE TABLESPACE "space_spring_dev" owner "spring-dev" LOCATION  '/var/lib/postgresql/spring';
CREATE DATABASE "spring-dev" 
  with owner "spring-dev" 
  ENCODING='UTF8' 
  TABLESPACE='space_spring_dev';
GRANT ALL ON DATABASE "spring-dev" to "spring-dev" WITH GRANT OPTION;
GRANT ALL ON TABLESPACE "space_spring_dev" to "spring-dev";

XOF
EOF
UOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看Postgresql版本
select version();
1

# Redis 安装

# 建立Redis容器
docker run  --name="redis-server" \
  -p 6379:6379 \
  --net docker-network --ip 172.16.0.3 \
  --restart=always \
  -v /data/docker/redis-data:/data:rw \
  --privileged=true \
  -d redis
1
2
3
4
5
6
7
# 查看Redis版本
docker exec -i redis-server redis-server -v
1