当前位置: 首页 > news >正文

在线教育网站项目第二步 :学习roncoo-education,服务器为ubuntu22.04.05

一、说明

前端技术体系:Vue3 + Nuxt3 + Vite5 + Vue-Router + Element-Plus + Pinia + Axios
后端技术体系:Spring Cloud Alibaba2021 + MySQL8 + Nacos + Seata + Mybatis + Druid + redis
后端系统:roncoo-education(核心框架:Spring Cloud Alibaba):码云 | Github
门户系统:roncoo-education-web(核心框架:Nuxt3):码云 | Github
管理系统:roncoo-education-admin(核心框架:Vue3):码云 | Github
部署系统:改为AlmaLinux---deepseek推荐替代centos7方案,下次改,目前为ubuntu

centos7.9 参考:

视频教育网站开源系统的部署安装 (roncoo-education)服务器为centos7-CSDN博客https://blog.csdn.net/jiangkp/article/details/145951049?sharetype=blogdetail&sharerId=145951049&sharerefer=PC&sharesource=jiangkp&spm=1011.2480.3001.8118

二、安装ubuntu及其初始设置

安装简单,网上看帖

# 更新和升级系统
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
# 安装一些常用的工具和库,这些工具可以帮助你更高效地工作
sudo apt install git curl wget vim htop tree
# 配置用户和权限
sudo usermod -aG sudo x58
# 定期清理不再需要的包可以释放磁盘空间并提高系统性能
sudo apt autoremove
sudo apt clean
# 定期检查并应用系统和应用程序的安全补丁。Ubuntu会定期发布安全更新。确保你的系统是最新的。
sudo apt update && sudo apt upgrade && sudo apt dist-upgrade && sudo apt autoremove && sudo apt clean && sudo reboot

三、安装docker-compose 

1、安装docker

# 更新
sudo apt update
sudo apt upgrade -y#安装必要的依赖包
sudo apt install apt-transport-https ca-certificates curl software-properties-common# 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 添加 Docker 的 APT 源
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null#添加源后,更新 APT 包索引:
sudo apt update# 安装 Docker CE
sudo apt-get install docker-ce docker-ce-cli containerd.io# 验证 Docker 是否安装成功
sudo systemctl status docker# 设置自启动
sudo systemctl enable docker验证 Docker 是否自启动
sudo systemctl is-enabled docker

sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc"]
}
EOFsudo systemctl daemon-reload
sudo systemctl restart docker

2、使用官方安装脚本来安装docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

3、应用执行权限

sudo chmod +x /usr/local/bin/docker-compose

4、验证安装 

docker-compose --versioneducation@education:~$ docker-compose --version
Docker Compose version v2.33.1

四、docker-compose安装mysql8

1、创建挂载目录

sudo mkdir -p /home/docker/mysql8/log
sudo mkdir -p /home/docker/mysql8/data
sudo mkdir -p /home/docker/mysql8/conf.d
#授权
sudo chown -R x58:x58 /home/docker

2、添加配置文件my.cnf(可以不改用默认)

vi /home/docker/mysql8/conf.d/my.cnf###### [client]配置模块 ######
[client]
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock###### [mysql]配置模块 ######
[mysql]
# 设置MySQL客户端默认字符集
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock###### [mysqld]配置模块 ######
[mysqld]
port=3306
user=mysql
# 设置sql模式 sql_mode模式引起的分组查询出现*this is incompatible with sql_mode=only_full_group_by,这里最好剔除ONLY_FULL_GROUP_BY
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id = 1# MySQL8 的密码认证插件 如果不设置低版本navicat无法连接
default_authentication_plugin=mysql_native_password# 禁用符号链接以防止各种安全风险
symbolic-links=0# 允许最大连接数
max_connections=1000# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB# 0: 表名将按指定方式存储,并且比较区分大小写;
# 1: 表名以小写形式存储在磁盘上,比较不区分大小写;
lower_case_table_names=0max_allowed_packet=16M # 设置时区
default-time_zone='+8:00'

3、 编写 docker-compose.yml 文件 

目录在/home/docker/mysql8下

sudo vi /home/docker/mysql8/docker-compose.ymlservices:mysql: # 服务名称image: mysql:8.0.18 # 或其它mysql版本container_name: mysql8 # 容器名称environment:- MYSQL_ROOT_PASSWORD=123456 # root用户密码
#      - TZ=Asia/Shanghai # 设置容器时区 我这里通过下面挂载方式同步的宿主机时区和时间了,这里忽略volumes:- /home/docker/mysql8/log:/var/log/mysql # 映射日志目录,宿主机:容器- /home/docker/mysql8/data:/var/lib/mysql # 映射数据目录,宿主机:容器- /home/docker/mysql8/conf.d:/etc/mysql/conf.d # 映射配置目录,宿主机:容器- /etc/localtime:/etc/localtime:ro # 让容器的时钟与宿主机时钟同步,避免时间的问题,ro是read only的意思,就是只读。ports:- 3306:3306 # 指定宿主机端口与容器端口映射关系,宿主机:容器restart: always # 容器随docker启动自启

4、启动容器 

sudo docker-compose -f /home/docker/mysql8/docker-compose.yml up -d

5、运行后查看启动容器的情况 

docker ps

x58@x58:/home/docker$ sudo docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                                    NAMES
ab1622668e32   mysql:8.0.18   "docker-entrypoint.s…"   22 seconds ago   Up 17 seconds   0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp   mysql8
 

6、用DBeaver连接 

7、导入数据

#创建数据库

os_course

os_system

os_user

nacos_config

os_job

 

 

数据库安装over

五、docker-compose安装redis 

1、创建挂载目录

sudo mkdir -p /home/docker/redis6/log
sudo mkdir -p /home/docker/redis6/data
sudo mkdir -p /home/docker/redis6/confsudo chown -R x58:x58 /home/docker

2、添加配置文件

下载配置文件连接,从里面拿到redis.conf

https://download.redis.io/releases/redis-6.2.17.tar.gzhttps://download.redis.io/releases/redis-6.2.17.tar.gz

在上一步创建的redis配置文件目录(/home/docker/redis6/conf)下,将上面下载解压缩后的redis.conf文件拷贝到此目录下,启动时,会将这个配置文件挂载到容器中。 

3、修改配置文件 

# 关闭保护模式,允许远程连接
protected-mode no
# 开启AOF持久化
appendonly yes 
# 密码
requirepass 123456

4、编写docker-compose.yml编排文件

sudo vi /home/docker/redis6/docker-compose.ymlservices:redis: # 服务名称image: redis:6.2.17 # redis镜像版本container_name: redis6.2.17 # 容器名称ports:- 6379:6379 # 指定宿主机端口与容器端口映射关系,宿主机:容器volumes:- /home/docker/redis6/conf/redis.conf:/etc/redis/redis.conf # 映射配置文件目录,宿主机:容器- /home/docker/redis6/data:/data # 映射数据目录,宿主机:容器restart: always # 容器开机自启privileged: true # 获取宿主机root权限command: ["redis-server","/etc/redis/redis.conf"] # 指定配置文件启动redis-server进程

4、启动容器

sudo docker-compose -f /home/docker/redis6/docker-compose.yml up -dsudo docker-compose down
docker-compose up -d --no-deps redis6.2.17
这里,docker-compose down 会停止并删除所有服务,然后你可以通过 docker-compose up -d --no-deps my_service 来单独启动你希望运行的服务。

5、查看容器 

x58@x58:/home/docker/redis6$ sudo docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                          PORTS                                                    NAMES
9d25c4e28d97   redis:6.2.17   "docker-entrypoint.s…"   55 seconds ago   Restarting (1) 14 seconds ago                                                            redis6.2.17
ab1622668e32   mysql:8.0.18   "docker-entrypoint.s…"   2 hours ago      Up 2 hours                      0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp   mysql8
 

####错误,查看log

sudo docker-compose logs redis

docker-compose stop docker-compose stop命令将停止运行的容器,但不会删除它们

docker-compose down docker-compose down命令将停止运行的容器,并且会删除已停止的容器以及已创建的所有网络。 我们可以down进一步迈出第一步,并添加-v标记以删除所有卷。这对于通过运行在环境中进行完全重置非常有用docker-compose down -v

###log中出现警告

WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
 

 sudo vi /etc/sysctl.conf

添加 vm.overcommit_memory = 1

sudo sysctl -p

6、测试

  • 进入docker内部,通过redis自带的redis-cli工具进行验证

education@education:/home/docker/redis6$ sudo docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                                    NAMES
001ce6f33e91   redis:6.2.17   "docker-entrypoint.s…"   5 minutes ago   Up 4 minutes   0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp              redis6.2.17
ab1622668e32   mysql:8.0.18   "docker-entrypoint.s…"   3 hours ago     Up 3 hours     0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp   mysql8
 

sudo docker exec -it 001ce6f33e91 /bin/bash  #用CONTAINER IDredis-cli -h 127.0.0.1 -p 6379 -a 123456root@001ce6f33e91:/data# redis-cli -h 127.0.0.1 -p 6379 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> set b 1
OK
127.0.0.1:6379> get b
"1"
  • 通过 Redis Insight 测试连接

用户名:default

六、docker-compose安装elasticsearch和kibana服务

1、创建挂载目录

sudo mkdir -p /home/docker/es8/data
#授权
sudo chown -R x58:x58 /home/docker

2、编写docker-compose.yml

sudo vi /home/docker/es8/docker-compose.ymlservices:elasticsearch:image: elasticsearch:8.15.0container_name: elasticsearchenvironment:- node.name=es01- cluster.name=docker-cluster- discovery.type=single-node- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms1g -Xmx1g"- xpack.security.enabled=false  # 禁用安全功能,方便初始测试ulimits:memlock:soft: -1hard: -1volumes:- /home/docker/es8/data:/usr/share/elasticsearch/dataports:- "9200:9200"networks:- elastickibana:image: kibana:8.15.0container_name: kibanaenvironment:- ELASTICSEARCH_HOSTS=http://elasticsearch:9200ports:- "5601:5601"networks:- elasticnetworks:elastic:driver: bridge

4、启动容器

sudo docker-compose -f /home/docker/es8/docker-compose.yml up -d

5、查看容器

x58@x58:/home/docker$ sudo docker ps
[sudo] password for x58:
CONTAINER ID   IMAGE                  COMMAND                  CREATED             STATUS             PORTS                                                    NAMES
82671ac2cae2   kibana:8.15.0          "/bin/tini -- /usr/l…"   39 seconds ago      Up 24 seconds      0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp              kibana
2b06fc68bb13   elasticsearch:8.15.0   "/bin/tini -- /usr/l…"   39 seconds ago      Up 24 seconds      0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 9300/tcp    elasticsearch
3bc5ecc4492b   redis:6.2.17           "docker-entrypoint.s…"   54 minutes ago      Up 54 minutes      0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp              redis6.2.17
9367db1fcd05   mysql:8.0.18           "docker-entrypoint.s…"   About an hour ago   Up About an hour   0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp   mysql8
 

6、查看log

sudo docker logs 82671ac2cae2

7、elasticsearch服务测试 

http://192.168.1.14:9200/

获取集群健康信息

http://192.168.1.14:9200/_cluster/health?pretty

8、 验证kibana服务

http://192.168.1.14:5601/

七、Dock-compose搭建单机MinIO

1、创建挂载目录

sudo mkdir -p /home/docker/minio/data
sudo mkdir -p /home/docker/minio/config#授权
sudo chown -R x58:x58 /home/docker

2、配置 docker-compose.yml

sudo vi /home/docker/minio/docker-compose.ymlservices:minio:#image: minio/minio:RELEASE.2023-04-28T18-11-17Zimage: minio/minio:latestcontainer_name: minioports:- 9000:9000 # 服务端口- 9001:9001 # 控制台端口environment:- MINIO_ROOT_USER=minio  # 登陆账号- MINIO_ROOT_PASSWORD=12345678  # 密码volumes:- /home/docker/minio/data:/data- /home/docker/minio/config:/root/.minio#指定容器中的目录 /datacommand: server --console-address ':9001' /dataprivileged: truehealthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 20sretries: 3restart: always#network_mode: host

3、启动容器

sudo docker-compose -f /home/docker/minio/docker-compose.yml up -d

4、查看容器

x58@x58:/home/docker$ sudo docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED             STATUS                             PORTS                                                             NAMES
aae7b971ed85   minio/minio:latest     "/usr/bin/docker-ent…"   15 seconds ago      Up 11 seconds (health: starting)   0.0.0.0:9000-9001->9000-9001/tcp, [::]:9000-9001->9000-9001/tcp   minio
82671ac2cae2   kibana:8.15.0          "/bin/tini -- /usr/l…"   11 minutes ago      Up 11 minutes                      0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp                       kibana
2b06fc68bb13   elasticsearch:8.15.0   "/bin/tini -- /usr/l…"   11 minutes ago      Up 11 minutes                      0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 9300/tcp             elasticsearch
3bc5ecc4492b   redis:6.2.17           "docker-entrypoint.s…"   About an hour ago   Up About an hour                   0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp                       redis6.2.17
9367db1fcd05   mysql:8.0.18           "docker-entrypoint.s…"   About an hour ago   Up About an hour                   0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp            mysql8
 

我换了台机器,可以用最新的了吧 ,确实可以,后就不用看了,直接访问控制台

没成功  Restarting (127) 25 seconds ago 

education@education:/home/docker/minio$ sudo docker logs minio
Fatal glibc error: CPU does not support x86-64-v2
Fatal glibc error: CPU does not support x86-64-v2
Fatal glibc error: CPU does not support x86-64-v2
Fatal glibc error: CPU does not support x86-64-v2
Fatal glibc error: CPU does not support x86-64-v2
Fatal glibc error: CPU does not support x86-64-v2
Fatal glibc error: CPU does not support x86-64-v2
Fatal glibc error: CPU does not support x86-64-v2
Fatal glibc error: CPU does not support x86-64-v2
Fatal glibc error: CPU does not support x86-64-v2
Fatal glibc error: CPU does not support x86-64-v2

分析:机器台老了,安装较低的minio版本

试试这个minio/minio:RELEASE.2023-04-28T18-11-17Z

在docker-compose.yml 修改

先要删除镜像

sudo docker-compose down

下面显示删掉了


education@education:/home/docker/minio$ sudo docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED       STATUS       PORTS                                                    NAMES
9f6075de374a   kibana:8.15.0          "/bin/tini -- /usr/l…"   3 hours ago   Up 3 hours   0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp              kibana
e58089aba544   elasticsearch:8.15.0   "/bin/tini -- /usr/l…"   3 hours ago   Up 3 hours   0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 9300/tcp    elasticsearch
b95c92ed88ac   redis:6.2.17           "docker-entrypoint.s…"   4 hours ago   Up 4 hours   0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp              redis6.2.17
ab1622668e32   mysql:8.0.18           "docker-entrypoint.s…"   7 hours ago   Up 7 hours   0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp   mysql8
 

继续执行

sudo docker-compose -f /home/docker/minio/docker-compose.yml up -d

education@education:/home/docker/minio$ sudo docker ps
CONTAINER ID   IMAGE                                      COMMAND                  CREATED          STATUS                             PORTS                                                             NAMES
e3c22d776866   minio/minio:RELEASE.2023-04-28T18-11-17Z   "/usr/bin/docker-ent…"   33 seconds ago   Up 30 seconds (health: starting)   0.0.0.0:9000-9001->9000-9001/tcp, [::]:9000-9001->9000-9001/tcp   minio
9f6075de374a   kibana:8.15.0                              "/bin/tini -- /usr/l…"   3 hours ago      Up 3 hours                         0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp                       kibana
e58089aba544   elasticsearch:8.15.0                       "/bin/tini -- /usr/l…"   3 hours ago      Up 3 hours                         0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 9300/tcp             elasticsearch
b95c92ed88ac   redis:6.2.17                               "docker-entrypoint.s…"   4 hours ago      Up 4 hours                         0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp                       redis6.2.17
ab1622668e32   mysql:8.0.18                               "docker-entrypoint.s…"   7 hours ago      Up 7 hours                         0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp            mysql8
 

5、访问控制台

192.168.1.14:9001

登陆用户名密码在docker-compose.yml里设置

  - MINIO_ROOT_USER=minio  # 登陆账号
   - MINIO_ROOT_PASSWORD=12345678  # 密码

 在控制台创建 Bucket。创建账户获取 Key 和 Secret

Access Key:     5F7xKr0e3OF2FvA0mpV1

Secret Key:  3fbBlWCHtxZ15aSjtq41q3v4RbNklMSFvHRiB1RD

在java源码里配置 ,该项目不需要配置,在页面进行配置

八、docker-compose 安装nacos

1、创建挂载目录

sudo mkdir -p /home/docker/nacos/log
sudo mkdir -p /home/docker/nacos/data
#授权
sudo chown -R x58:x58 /home/docker

3、导入数据库 

https://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gzhttps://github.com/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.tar.gz

解压后在 

需要把SQL脚本导入数据库,SQL脚本位置:nacos/conf/mysql-schema.sql

数据库名为nacos_config

不能读取数据库权限

ERROR: Failed to create schema directory ‘clwy‘ (errno: 13 - Permission denied) 解决

education@education:/home/docker/nacos$ sudo docker ps -a
CONTAINER ID   IMAGE                                      COMMAND                  CREATED          STATUS                  PORTS                                                                                      NAMES
1969ec1e01ab   nacos/nacos-server:v2.2.3                  "bin/docker-startup.…"   18 minutes ago   Up 7 seconds            0.0.0.0:8848->8848/tcp, [::]:8848->8848/tcp, 0.0.0.0:9848->9848/tcp, [::]:9848->9848/tcp   nacos2.2.3
e3c22d776866   minio/minio:RELEASE.2023-04-28T18-11-17Z   "/usr/bin/docker-ent…"   19 hours ago     Up 19 hours (healthy)   0.0.0.0:9000-9001->9000-9001/tcp, [::]:9000-9001->9000-9001/tcp                            minio
9f6075de374a   kibana:8.15.0                              "/bin/tini -- /usr/l…"   22 hours ago     Up 22 hours             0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp                                                kibana
e58089aba544   elasticsearch:8.15.0                       "/bin/tini -- /usr/l…"   22 hours ago     Up 22 hours             0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 9300/tcp                                      elasticsearch
b95c92ed88ac   redis:6.2.17                               "docker-entrypoint.s…"   23 hours ago     Up 23 hours             0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp                                                redis6.2.17
ab1622668e32   mysql:8.0.18                               "docker-entrypoint.s…"   26 hours ago     Up 26 hours             0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp                                     mysql8
 

mysql是开启的 

尝试进入容器并修改权限 

sudo docker exec -it ab1622668e32 bash
chown -R mysql:mysql /var/lib/mysql

确实是这里的问题,没有错误掠过

2、配置 docker-compose.yml

sudo vi /home/docker/nacos/docker-compose.yml## docker-compose config                  ## 检查当前目录docker-compose.yml文件配置是否正确
## docker-compose up -d                   ## -d 为后台启动
## docker-compose up -d --force-rereate  ## 强制重新创建容器,修改挂载文件后使用该命令启动,谨慎使用,调试时可使用,使用此命令可能造成数据丢失services:nacos:image: nacos/nacos-server:v2.2.3container_name: nacos2.2.3environment:- TZ=Asia/Shanghai- PREFER_HOST_MODE=hostname- MODE=standalone- JVM_XMX=1g- JVM_XMS=1g- TOMCAT_ACCESSLOG_ENABLED=false- SPRING_DATASOURCE_PLATFORM=mysql- MYSQL_SERVICE_HOST=192.168.1.14  #设置自己的ip地址,localhost不行的- MYSQL_SERVICE_PORT=3306- MYSQL_SERVICE_USER=root- MYSQL_SERVICE_PASSWORD=123456- MYSQL_SERVICE_DB_NAME=nacos_config- MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC- NACOS_AUTH_IDENTITY_KEY=education- NACOS_AUTH_IDENTITY_VALUE=education- NACOS_AUTH_TOKEN=SecretKey345901234567890126785678901234567890123901234567890123445678volumes:- /home/docker/nacos/log/:/home/nacos/logs# - ./conf/custom.properties:/home/nacos/init.d/custom.propertiesports:- 8848:8848- 9848:9848restart: always

3、启动容器

sudo docker-compose -f /home/docker/nacos/docker-compose.yml up -d

4、查看容器

             x58@x58:/home/docker$ sudo docker ps
[sudo] password for x58:
CONTAINER ID   IMAGE                       COMMAND                  CREATED             STATUS                    PORTS                                                                                                                   NAMES
41e256b0598a   nacos/nacos-server:v2.2.3   "bin/docker-startup.…"   32 minutes ago      Up 31 minutes             0.0.0.0:8848->8848/tcp, [::]                             :8848->8848/tcp, 0.0.0.0:9848->9848/tcp, [::]:9848->9848/tcp   nacos2.2.3
aae7b971ed85   minio/minio:latest          "/usr/bin/docker-ent…"   50 minutes ago      Up 49 minutes (healthy)   0.0.0.0:9000-9001->9000-9001                             /tcp, [::]:9000-9001->9000-9001/tcp                            minio
82671ac2cae2   kibana:8.15.0               "/bin/tini -- /usr/l…"   About an hour ago   Up About an hour          0.0.0.0:5601->5601/tcp, [::]                             :5601->5601/tcp                                                kibana
2b06fc68bb13   elasticsearch:8.15.0        "/bin/tini -- /usr/l…"   About an hour ago   Up About an hour          0.0.0.0:9200->9200/tcp, [::]                             :9200->9200/tcp, 9300/tcp                                      elasticsearch
3bc5ecc4492b   redis:6.2.17                "docker-entrypoint.s…"   2 hours ago         Up 2 hours                0.0.0.0:6379->6379/tcp, [::]                             :6379->6379/tcp                                                redis6.2.17
9367db1fcd05   mysql:8.0.18                "docker-entrypoint.s…"   2 hours ago         Up 2 hours                0.0.0.0:3306->3306/tcp, [::]                             :3306->3306/tcp, 33060/tcp                     

5、查看log 

sudo docker logs nacos2.2.3

要在docker-compose.yml 同目录下执行,也可以加上目录

sudo docker-compose stop  停止不删除

sudo docker-compose down

 6、验证安装

http://192.168.1.14:8848/nacos

导入nacos_config.zip ,需要的数据都在这里

7、配置管理 

九、安装xxl-job 

1、创建挂载目录

sudo mkdir -p /home/docker/xxl-job/log#授权
sudo chown -R x58:x58 /home/docker

2、导入数据库

前面已经导入

也可以从网上下载

xxl-job: 一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 - Gitee.comhttps://gitee.com/xuxueli0323/xxl-job/tree/2.3.0

xxl-job/doc/db/tables_xxl_job.sql 

3、配置 docker-compose.yml

sudo vi /home/docker/xxl-job/docker-compose.ymlservices:xxl-job-admin:restart: always# docker 镜像image: xuxueli/xxl-job-admin:2.3.1# 容器名称container_name: xxl-job-adminvolumes:# 日志目录映射到主机目录- /home/docker/xxl-job/log:/data/applogsports:# 端口映射- "8080:8080"environment:# 设置启动参数PARAMS: '--server.port=8080--server.servlet.context-path=/xxl-job-admin--spring.datasource.url=jdbc:mysql://192.168.1.14:3306/os_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai--spring.datasource.username=root--spring.datasource.password=123456--spring.mail.host=smtp.qq.com--spring.mail.port=587--spring.mail.username=999999@qq.com--spring.mail.from=888888@qq.com--spring.mail.password=*******************--spring.mail.properties.mail.smtp.starttls.enable=true--spring.mail.properties.mail.smtp.starttls.required=true--xxl.job.accessToken=Lpoms_xxljob_default_token'

4、启动容器

sudo docker-compose -f /home/docker/xxl-job/docker-compose.yml up -d

 
x58@x58:/home/docker$ sudo docker ps
CONTAINER ID   IMAGE                         COMMAND                  CREATED             STATUS                       PORTS                                                                                      NAMES
8b8329b625c2   xuxueli/xxl-job-admin:2.3.1   "sh -c 'java -jar $J…"   25 seconds ago      Up 20 seconds                0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp                                                xxl-job-admin
41e256b0598a   nacos/nacos-server:v2.2.3     "bin/docker-startup.…"   51 minutes ago      Up 51 minutes                0.0.0.0:8848->8848/tcp, [::]:8848->8848/tcp, 0.0.0.0:9848->9848/tcp, [::]:9848->9848/tcp   nacos2.2.3
aae7b971ed85   minio/minio:latest            "/usr/bin/docker-ent…"   About an hour ago   Up About an hour (healthy)   0.0.0.0:9000-9001->9000-9001/tcp, [::]:9000-9001->9000-9001/tcp                            minio
82671ac2cae2   kibana:8.15.0                 "/bin/tini -- /usr/l…"   About an hour ago   Up About an hour             0.0.0.0:5601->5601/tcp, [::]:5601->5601/tcp                                                kibana
2b06fc68bb13   elasticsearch:8.15.0          "/bin/tini -- /usr/l…"   About an hour ago   Up About an hour             0.0.0.0:9200->9200/tcp, [::]:9200->9200/tcp, 9300/tcp                                      elasticsearch
3bc5ecc4492b   redis:6.2.17                  "docker-entrypoint.s…"   2 hours ago         Up 2 hours                   0.0.0.0:6379->6379/tcp, [::]:6379->6379/tcp                                                redis6.2.17
9367db1fcd05   mysql:8.0.18                  "docker-entrypoint.s…"   2 hours ago         Up 2 hours                   0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp                                     mysql8

5、测试

启动完成后通过:http:192.168.1.14:8080/xxl-job-admin访问
默认账号:admin
默认密码:123456

十、安装java8

下面的KKFileView打包要用到,我们提前安装了

sudo apt update -y
sudo apt-get install openjdk-8-jdk

education@education:~$ sudo apt-get install openjdk-8-jdk
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
openjdk-8-jdk is already the newest version (8u442-b06~us1-0ubuntu1~22.04).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded
education@education:~$ java -version
openjdk version "1.8.0_442"
OpenJDK Runtime Environment (build 1.8.0_442-8u442-b06~us1-0ubuntu1~22.04-b06)
OpenJDK 64-Bit Server VM (build 25.442-b06, mixed mode)
 

十一、安装maven

我在windows 下打包的,服务器没有编辑器,麻烦,所以maven在ubuntu上可以不装

1、建立安装目录

sudo mkdir -p /home/tools

#授权
sudo chown -R education:education /home/tools

cd /home/tools

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz
# 不能下载就在windows 下下载后上传,我就不能下载
tar -zxvf apache-maven-3.9.9-bin.tar.gz
mv apache-maven-3.9.9 /opt/maven
chown -R education:education /opt/maven

2、环境配置

sudo vi /etc/profile
# 在最后面加
# maven
export MAVEN_HOME=/opt/maven
export PATH=${MAVEN_HOME}/bin:${PATH}

# 使配置立即生效
source /etc/profile

 3、验证版本

 
education@education:/home/tools$ mvn -v
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /opt/maven
Java version: 1.8.0_442, vendor: Private Build, runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-133-generic", arch: "amd64", family: "unix"
 

4、配置阿里源

# 删除再重新添加,添加时格式有问题,大家重新弄一下
rm -f /opt/maven/conf/settings.xml

sudo vi /opt/maven/conf/settings.xml
添加

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
 <mirrors>
  <mirror>  
    <id>aliyun</id>  
    <name>aliyun maven</name>  
    <url>https://maven.aliyun.com/repository/public</url>  
    <mirrorOf>*</mirrorOf>          
  </mirror>
 </mirrors>
</settings>

十二、安装KKFileView 

下载源码、打包都在windows下进行

1、下载源码

F:\work目录下

git clone https://github.com/kekingcn/kkFileView.git

2、运行测试

 运行这个入口文件 

/server/src/main/java/cn/keking/ServerMain.java.

2、进行项目打包 

mvn clean package -DskipTests

3、创建目录

sudo mkdir -p /home/tools/KKFileView#授权
sudo chown -R x58:x58 /home/tools

 3、下载字体

# 下载字体
curl -O https://kkview.cn/resource/fonts.zip
# 安装zip软件
sudo apt install zip unzip
#解压 fonts.zip
sudo unzip fonts.zipx58@x58:/home/tools/KKFileView$ ls
fonts.zip  kkFileView-4.4.0.tar.gz  zhFonts# 新的目录zhFonts就是
# 移到ubnutu 字体库
sudo mv zhFonts/ /usr/share/fonts# 安装工具包
sudo apt install xfonts-utils# 重读并刷新字体
cd /usr/share/fonts
sudo mkfontscale
sudo mkfontdir#查看已安装的中文字体
fc-list :lang=zh
# 重启
sudo reboot

4、上传kkFileView-4.4.0.tar.gz

windows下载地址迅雷下载比较快 ubnutu 可以wget下载,我的太慢

https://downloadarchive.documentfoundation.org/libreoffice/old/7.5.3.2/deb/x86_64/LibreOffice_7.5.3.2_Linux_x86-64_deb.tar.gz

同时上传LibreOffice_7.5.3.2_Linux_x86-64_deb.tar.gz到 /home/tools/KKFileView

cd /home/tools/KKFileView
sudo tar -zxvf LibreOffice_7.5.3.2_Linux_x86-64_deb.tar.gzcd LibreOffice_7.5.3.2_Linux_x86-64_deb/DEBSsudo apt-get install -y libxinerama1 libcairo2 libcups2 libx11-xcb1sudo dpkg -i *.deb

# 解压缩
sudo tar -zxvf kkFileView-4.4.0.tar.gz#修改配置
sudo vi /home/tools/KKFileView/kkFileView-4.4.0/config/application.properties# cache.type =  ${KK_CACHE_TYPE:jdk}
cache.type =  ${KK_CACHE_TYPE:redis}
#redis连接,只有当cache.type = redis时才有用
spring.redisson.address = ${KK_SPRING_REDISSON_ADDRESS:127.0.0.1:6379}
spring.redisson.password = ${KK_SPRING_REDISSON_PASSWORD:123456}# 进入 bin 目录
cd /home/tools/KKFileView/kkFileView-4.4.0/bin# 启动 
sudo ./startup.shx58@x58:/home/tools/KKFileView/kkFileView-4.4.0/bin$ ls
install.sh  kkFileView-4.4.0.jar  showlog.sh  shutdown.sh  startup.sh
x58@x58:/home/tools/KKFileView/kkFileView-4.4.0/bin$ sudo ./startup.sh


# 进入 bin 目录
cd /home/tools/KKFileView/kkFileView-4.4.0/bin# 启动 
sudo ./showlog.sh发现错误:
Caused by: org.redisson.client.RedisException: MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.. channel: [id: 0x5410adf9, L:/192.168.1.123:38544 - R:/192.168.1.123:6379] command: CommandData [promise=org.redisson.misc.RedissonPromise@3e0b96db[Not completed], command=(BLPOP), params=[convert-task, 0], codec=org.redisson.codec.JsonJacksonCodec@2a458dbb]修改1:
vim打开redis.conf
快速定位 /stop-writes-on-bgsave-error 把es设置为nosudo vi /home/docker/redis6/conf/redis/redis.conf#进入redis 
sudo docker exec -it 3bc5ecc4492b /bin/bash  #用CONTAINER ID
redis-cli -h 127.0.0.1 -p 6379 -a 123456
# 重启失效
config set stop-writes-on-bgsave-error no

5、测试

  • 上传 sql文件。上传查看

  •  
  •  上传mk文件

 

  • 上传jpg图片

  • 上传pdf文

log也可打印

十三、使用docker-compose安装KKFileView

相关文章:

在线教育网站项目第二步 :学习roncoo-education,服务器为ubuntu22.04.05

一、说明 前端技术体系&#xff1a;Vue3 Nuxt3 Vite5 Vue-Router Element-Plus Pinia Axios 后端技术体系&#xff1a;Spring Cloud Alibaba2021 MySQL8 Nacos Seata Mybatis Druid redis 后端系统&#xff1a;roncoo-education&#xff08;核心框架&#xff1a;S…...

STM32-GPIO详解

目录 一&#xff1a;GPIO基本概念 ​编辑 二&#xff1a;GPIO的实际应用 三&#xff1a;功能描述 四&#xff1a;GPIO库函数 五&#xff1a;寄存器 GPIO相关寄存器功能 一&#xff1a;GPIO基本概念 GPIO是英文General Purpose Input/Output的缩写&#xff0c;中文翻译为…...

【Framework系列之Client】UIManager和UIPanel模块介绍

今天来介绍一下UIManager和UIPanel模块&#xff0c;话不多说直接开始。 UIManager 功能介绍 UIManager是管理UIPanel的唯一模块&#xff0c;UIManager的主要功能包括&#xff1a; 提供打开、隐藏、关闭UIPanel的相关接口。负责UIPanel对象的创建以及初始化。负责储存UIPanel对…...

阿里云操作系统控制台——ECS操作与性能优化

引言&#xff1a;在数字化时代&#xff0c;云服务器作为强大的计算资源承载平台&#xff0c;为企业和开发者提供了灵活且高效的服务。本文将详细介绍如何一步步操作云服务器 ECS&#xff0c;从开通到组件安装&#xff0c;再到内存全景诊断&#xff0c;帮助快速上手&#xff0c;…...

【长安大学】苹果手机/平板自动连接认证CHD-WIFI脚本(快捷指令)

背景&#xff1a; 已经用这个脚本的记得设置Wifi时候&#xff0c;关闭“自动登录” 前几天实在忍受不了CHD-WIFI动不动就断开&#xff0c;一天要重新连接&#xff0c;点登陆好几次。试了下在网上搜有没有CHD-WIFI的自动连接WIFI自动认证脚本&#xff0c;那样我就可以解放双手&…...

第51天:Web开发-JavaEE应用SpringBoot栈身份验证JWT令牌Security鉴权安全绕过

#知识点 1、安全开发-JavaEE-身份验证-JWT&Security 2、安全开发-JavaEE-安全问题-不安全写法&版本漏洞 #开发框架-SpringBoot 参考&#xff1a;Spring Boot 中文文档 一、身份验证的常见技术&#xff1a; 1、JWT 2、Shiro 3、Spring Security 4、OAuth 2.0 5、SSO 6、…...

中原银行:从“小机+传统数据库”升级为“OceanBase+通用服务器”,30 +系统成功上线|OceanBase DB大咖说(十五)

OceanBase《DB 大咖说》第 15 期&#xff0c;我们邀请到了中原银行金融科技部数据团队负责人&#xff0c;吕春雷。本文为本期大咖说的精选。 吕春雷是一位资历深厚的数据库专家&#xff0c;从传统制造企业、IT企业、甲骨文公司到中原银行&#xff0c;他在数据库技术与运维管理…...

Java面试第八山!《Spring框架》

一、Spring框架概述 Spring是Java企业级应用开发的核心框架&#xff0c;通过控制反转&#xff08;IoC&#xff09;和 面向切面编程&#xff08;AOP&#xff09;实现模块解耦&#xff0c;简化开发流程。其核心优势包括依赖注入、声明式事务管理、集成主流ORM框架&#xff08;如…...

LangChain教程 - Agent - 支持 9 种 ReAct 交互

引言 LangChain 总结了 9 种经典的复杂模型交互模式&#xff0c;每种都针对特定任务设计&#xff0c;兼具独特优势与适用场景&#xff0c;内容涵盖&#xff1a; ReAct、Function Call、知识库、搜索等&#xff0c;使用这些模式可以大大简化这些场景开发难度。这些模式可以使用…...

蓝桥杯备赛日记【day1】(c++赛道)

一、裁纸刀问题&#xff08;2022、规律、思维、省赛&#xff09; 解法思路&#xff1a; 参考题目给出的例子发现。不管要裁剪多少次。最外围的四次是固定的。然后通过观察发现&#xff0c;我们的行的裁剪次数为&#xff08;m-1&#xff09; 次&#xff0c;而每行都需要裁剪列数…...

【大模型基础_毛玉仁】1.4 语言模型的采样方法

【大模型基础_毛玉仁】1.4 语言模型的采样方法 1.4 语言模型的采样方法1.4.1 概率最大化方法1&#xff09;贪心搜索&#xff08;GreedySearch&#xff09;2&#xff09;波束搜索&#xff08;BeamSearch&#xff09; 1.4.2 随机采样方法1&#xff09;Top-K 采样2&#xff09;Top…...

[内网安全] Windows 本地认证 — NTLM 哈希和 LM 哈希

关注这个专栏的其他相关笔记&#xff1a;[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01&#xff1a;SAM 文件 & Windows 本地认证流程 0x0101&#xff1a;SAM 文件简介 Windows 本地账户的登录密码是存储在系统本地的 SAM 文件中的&#xff0c;在登录 Windows 的时候&am…...

基于SNR估计的自适应码率LDPC编译码算法matlab性能仿真,对比固定码率LDPC的系统传输性能

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 基于序列的SNR估计 2.2 基于SNR估计值进行码率切换 2.3 根据数据量进行码率切换 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&…...

opencv 模板匹配方法汇总

在OpenCV中&#xff0c;模板匹配是一种在较大图像中查找特定模板图像位置的技术。OpenCV提供了多种模板匹配方法&#xff0c;通过cv2.matchTemplate函数实现&#xff0c;该函数支持的匹配方式主要有以下6种&#xff0c;下面详细介绍每种方法的原理、特点和适用场景。 1. cv2.T…...

Embedding技术:DeepWalkNode2vec

引言 在推荐系统中&#xff0c;Graph Embedding技术已经成为一种强大的工具&#xff0c;用于捕捉用户和物品之间的复杂关系。本文将介绍Graph Embedding的基本概念、原理及其在推荐系统中的应用。 什么是Graph Embedding&#xff1f; Graph Embedding是一种将图中的节点映射…...

微信小程序注册组件

在微信小程序中注册组件分为自定义组件的创建和全局/局部注册&#xff0c;下面为你详细介绍具体步骤和示例。 自定义组件的创建 自定义组件由四个文件组成&#xff0c;分别是 .js&#xff08;脚本文件&#xff09;、.json&#xff08;配置文件&#xff09;、.wxml&#xff08…...

【docker】安装mysql,修改端口号并重启,root改密

我的docker笔记 【centOS】安装docker环境&#xff0c;替换国内镜像 1. 配置镜像源 使用阿里云镜像加速器&#xff0c;编辑/etc/docker/daemon.json sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https:/…...

自定义wordpress三级导航菜单代码

首先&#xff0c;在你的主题functions.php文件中&#xff0c;添加以下代码以注册一个新的菜单位置&#xff1a; function mytheme_register_menus() {register_nav_menus(array(primary-menu > __(Primary Menu, mytheme))); } add_action(init, mytheme_register_menus); …...

洛谷 P1480 A/B Problem(高精度详解)c++

题目链接&#xff1a;P1480 A/B Problem - 洛谷 1.题目分析 1&#xff1a;说明这里是高精度除以低精度的形式&#xff0c;为什么不是高精度除以高精度的形式&#xff0c;是因为它很少见&#xff0c;它的模拟方式是用高精度减法来做的&#xff0c;并不能用小学列竖式的方法模拟…...

JAVA入门——网络编程简介

自己学习时的笔记&#xff0c;可能有点水&#xff08; 以后可能还会补充&#xff08;大概率不会&#xff09; 一、基本概念 网络编程三要素&#xff1a; IP 设备在网络中的唯一标识 端口号 应用软件在设备中的唯一标识两个字节表示的整数&#xff0c;0~1023用于知名的网络…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...