Skip to content
本页目录

广告 ADS

前后端部署

本文将介绍如何部署 Sonic 的 Server 端与 Client 端。

快速部署

该方式将一次性部署前后端。

准备工作:docker-compose、Docker、MySQL

  1. 创建一个MySQL数据库,数据库名可自定义,注意字符集为 utf8,排序规则为 utf8_general_ci。如果你想MySQL随着Sonic一同启动(不推荐),可以参考本页下方在docker-compose.yml中内置MySQL的内容。
  2. 点击这里 下载最新版本的 zip 文件到任意目录(如加速链接失效,请自行前往 这里 下载)。
  3. 解压 zip,更改.env 中的信息。(无需改动 docker-compose.yml 文件。env 配置项内容可查看下方表格。如果您的系统没显示.env,在本页最下方【常见问题】查看解决方案)
  4. 当前目录下执行以下指令
bash
docker-compose up -d

如果您为中国大陆用户,出现访问DockerHub较慢的情况,可以从以下两点选择一个进行操作:

  • 配置国内加速镜像源(推荐)
  • 执行以下指令直接使用加速镜像(不推荐,加速源可能出现不稳定或网络波动,后续down的时候需要docker-compose -f docker-compose-zh.yml down)
bash
docker-compose -f docker-compose-zh.yml up -d
  1. 前后端部署完毕!(因 Eureka 心跳机制,刚启动完毕微服务间互相访问需要 3~5 分钟,请耐心等候)打开浏览器访问 http://localhost:3000,然后可 直接前往 Agent 端部署。
  2. (附)如果您是经验丰富的运维人员,也可以前往 Eureka 页面查看各微服务状态。

.env 配置项解释

字段名解释示例
SONIC_SERVER_HOST部署 sonic-server 机器的 ipv4 地址,不能使用 localhost、127.0.0.1。可以使用域名。192.168.0.1
SONIC_SERVER_PORT整个服务端对外暴露端口,默认 3000。可以使用 803000
SONIC_EUREKA_USERNAMEEureka 的用户名(为提高安全性,不建议使用默认值,可以更改为其他任意字符串,不能含@%sonic
SONIC_EUREKA_PASSWORDEureka 的密码(为提高安全性,不建议使用默认值,可以更改为其他任意字符串,不能含@%sonic
SONIC_EUREKA_PORTEureka 启动端口(一般不需要改动)9090
MYSQL_HOSTMySQL 服务的 host,不能使用 localhost、127.0.0.1.192.168.0.1
MYSQL_PORTMySQL 服务的端口(一般默认为 3306)3306
MYSQL_DATABASESonic 服务要用到的数据库sonic
MYSQL_USERNAMEMySQL 数据库用户名root
MYSQL_PASSWORDMySQL 数据库密码Sonic!@#123
SECRET_KEYtoken 加密密钥(为提高安全性,不建议使用默认值,可以更改为其他任意字符串)sonic
EXPIRE_DAYtoken 有效天数14
PERMISSION_ENABLE是否开启权限配置true
PERMISSION_SUPER_ADMIN超管用户名sonic
REGISTER_ENABLE是否开启用户注册true
NORMAL_USER_ENABLE是否开启普通用户登录true
LDAP_USER_ENABLE是否开启 LDAP 用户登录true
LDAP_USER_IDLDAP user id 搜索字段cn
LDAP_BASE_DNLDAP user 搜索用户组users
LDAP_BASELDAP Base DNou=system
LDAP_USERNAMELDAP Base DN 管理员用户名uid=admin,ou=system
LDAP_PASSWORDLDAP Base DN 管理员密码Sonic!@#123
LDAP_URLLDAP 服务 URLldap://192.168.0.1:10389
LDAP_OBJECT_CLASSLDAP 筛选 class,默认为 personperson

使用自己的 Eureka

如果您自己有 Eureka 服务,可以查看本小节。

  1. docker-compose.yml 文件去掉 Eureka 服务。
  2. docker-compose.yml 的 SONIC_EUREKA_HOST 填写为自己 Eureka 服务的 host。
  3. 将.env 中的配置修改为自己 Eureka 服务的信息。
  4. 完成!

在docker-compose.yml中内置MySQL(不推荐)

因Docker挂载时如果出现操作不当或数据迁移时的风险会引起MySQL容易数据丢失,因此docker-compose.yml默认没有附带MySQL镜像。

警告

该方式不一定兼容所有Docker版本与Linux系统与Mysql版本,操作前应当备份当前数据。而且更新时会导致MySQL容器停止与删除,因此推荐MySQL单独部署或使用已有MySQL服务。

如果想MySQL随着sonic一同启动,你可以进行如下操作:

  1. 当前目录下创建mysql文件夹
shell
mkdir -p mysql/log mysql/data mysql/conf
  1. 将.env中的MYSQL_HOST改为sonic-mysql
  2. 在docker-compose.yml中加入以下 注释部分 的内容
version: '3'
services:
  sonic-server-eureka:
  .
  .
  .
  .
  .
  sonic-client-web:
    image: "sonicorg/sonic-client-web:SONIC_VERSION"
    environment:
      - SONIC_SERVER_HOST
      - SONIC_SERVER_PORT
    networks:
      - sonic-network
    depends_on:
      - sonic-server-gateway
    restart: on-failure
    ports:
      - "${SONIC_SERVER_PORT}:80"
# ==== MySQL ====
  sonic-mysql:
    image: "mysql:5.7"
    hostname: sonic-mysql
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD}
      - MYSQL_DATABASE
    volumes:
      - ./mysql/log:/var/log/mysql
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf:/etc/mysql
    ports:
      - "3306:3306"
    networks:
      - sonic-network      
# ==== End ====

networks:
  sonic-network:
    driver: bridge
  1. 执行 docker-compose up -d 即可。

常见问题(Q&A)

Q1: 浏览器访问前端无误,但是注册时出现【系统出错了】或【发生未知异常】。

A1: 解决方案可参考 这个帖子


Q2: 查看日志发现是 MySQL 没有连上,该怎么解决?

A2: 主要分为多种情况:

  • MySQL 没有开启远程访问权限。
  • 因为采用 Docker 容器部署,127.0.0.1 或 localhost 这种 ip 地址是无效的。
  • 公司网络限制等等特殊情况。

解决方案可参考 这个帖子


Q3: 目前文件挂载在 Docker 默认目录,怎样才能挂载到自定义的文件目录呢?

A3: 解决方案可参考 这个帖子


Q4: Mac 系统解压后没看到.env 文件,怎么解决呢?

A4: 解决方案可参考 这个帖子


Q5: Linux 系统解压后没看到.env 文件,怎么解决呢?

A5: 可以使用 ls -a 指令查看隐藏文件


TIP

更多疑问可前往 👉社区👈 交流

本文贡献者