JumpServer 部署架构图

JumpServer 功能架构图

  • JumpServer 是广受欢迎的开源堡垒机,是符合 4A 规范的专业运维安全审计系统。
  • JumpServer 使用 Python 开发,配备了业界领先的 Web Terminal 方案,交互界面美观、用户体验好。
  • JumpServer 采纳分布式架构,支持多机房跨区域部署,支持横向扩展,无资产数量及并发限制

为什么需要跳板机,堡垒机?

其实运维工作,出现各种问题是在所难免的,不仅要有很好的分析处理能力,而且还要避免问题再次发生。

  要清楚认识到出现问题的真实原因:

  • 没有规范管理,人与服务器之间的界限不清晰;
  • 没有实名机制,登录服务器前没有实名验证;
  • 没有密码托管,服务器的密码太多,很难做到定期修改,自己保管怕丢失;
  • 没有操作预警,对高危、敏感的操作无法做到事前防御;
  • 没有传输控制,对重要服务器无法控制文件传输;
  • 没有回溯过程,不能完整还原运维过程;

跳板机概述

  • 跳板机属于内控堡垒机范畴,是一种用于单点登录的主机应用系统。跳板机就是一台服务器,维护人员在维护过程中,首先要统一登录到这台服务器上,然后从这台服务器再登录到目标设备进行维护。但跳板机并没有实现对运维人员操作行为的控制和审计,此外,跳板机存在严重的安全风险,一旦跳板机系统被攻入,则将后端资源风险完全暴露无遗。
  • 跳板机优缺点
    • 优势:集中式进行管理
    • 缺点:没有实现对运维人员操作行为的控制与审计,使用跳板机的过程中还是会出现误操作,违规操作等导致的事故,一旦出现操作事故很难定位到原因和责任人。

堡垒机概述

  • 堡垒机的理念起于跳板机,人们逐渐认识到跳板机的不足,需要更新,更好的安全技术理念来实现运维操作管理,需要一种能满足角色管理与授权审批,信息资源访问控制,操作记录和审计,系统变更和维护控制要求,并生成一些统计比报表配合管理规范来不断提升IT内控的合规性的产品。结合了跳板机的优点堡垒机应运而生,它有效地降低了运维操作风险,使得运维操作管理变得更简单,更安全。
  • 堡垒机作用
    • 核心系统运维和安全审计管控;
    • 过滤和拦截非法访问,恶意攻击,阻断不合法命令,审计监控,报警,责任追踪;
    • 报警,记录,分析,处理;

堡垒机核心功能

  • 单点登录功能

  支持对X11、Linux、Unix、数据库、网络设备、安全设备等一系列授权账号进行密码的自动化周期更改,简化密码管理,让使用者无需记忆众多系统密码,即可实现自动登录目标设备,便捷安全;

  • 账号管理

  设备支持统一账户管理策略,能够实现对所有服务器、网路设备、安全设备等账号进行集中管理,完成对账号整个生命周期的监控,并且可以对设备进行特殊角设置,如:审计巡检员、运维操作员、设备管理员等自定义,以满足审计需求;

  • 身份认证

  设备提供统一的认证接口,对用户进行认证,支持身份认证模式包括动态口令、静态密码、硬件key、生物特征等多种认证方式,设备具有灵活的定制接口,可以与其他第三方认证服务器直接结合;
  安全的认证模式,有效提高了认证的安全性和可靠性;

  • 资源授权

  设备提供基于用户、目标设备、时间、协议类型IP、行为等要素实现细粒度的操作授权,最大限度保护用户资源的安全;

  • 访问控制

  设备支持对不同用户进行不同策略的制定,细粒度的访问控制能够最大限度的保护用户资源的安全,严防非法、越权访问事件的发生;

  • 操作审计

  设备能够对字符串、图形、文件传输、数据库等安全操作进行行为审计;通过设备录像方式监控运维人员对操作系统、安全设备、网络设备、数据库等进行的各种操作,对违规行为进行事中控制;对终端指令信息能够进行精确搜索,进行录像精确定位;

堡垒机应用场景

  • 多个用户使用同一账号

  多出现在同一工作组中,由于工作需要,同时系统管理员账号唯一,因此只能多用户共享同一账号;如果发生安全事故,不仅难以定位账号的实际使用者和责任人,而且无法对账号的使用范围进行有效控制,存在较大的安全风险和隐患;

  • 一个用户使用多个账号

  目前一个维护人员使用多个账号时较为普遍的情况,用户需要记忆多套口令同时在多套主机系统、网络设备之间切换,降低工作效率,增加工作复杂度;

  • 缺少统一的权限管理平台,难以实现更细粒度的命令权限控制

  维护人员的权限大多是粗放管理,无基于最小权限分配原则的用户权限管理,难以实现更细粒度的命令权限控制,系统安全性无法充分保证;

  • 无法制定统一的访问审计策略,审计粒度粗。

  各个网络设备、主机系统、数据库是分别单独审计记录访问行为,由于没有统一审计策略,而且各系统自身审计日志内容深浅不一,难以及时通过系统自身审计发现违规操作行为和追查取证;

  • 传统的网路安全审计系统无法对维护人员经常使用的SSH、RDP等加密、图形操作协议进行内容审计。

准备环境

[root@JumpServer ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@JumpServer ~]# uname -r
3.10.0-1160.el7.x86_64 [root@JumpServer ~]# setenforce 0
[root@JumpServer ~]# systemctl stop friewalld
[root@JumpServer ~]# hostname -I
172.16.70.181 [root@JumpServer ~]# yum update -y
[root@JumpServer ~]# yum install wget curl tar gettext iptables vim net-tools lrzsz tree -y

搭建Jumpserver

[root@JumpServer ~]# cd /opt
[root@JumpServer opt]# wget https://github.com/jumpserver/installer/releases/download/v2.28.6/jumpserver-installer-v2.28.6.tar.gz
[root@JumpServer opt]# tar -xf jumpserver-installer-v2.28.6.tar.gz
[root@JumpServer opt]# mv jumpserver-installer-v2.28.6 jumpserver
[root@JumpServer opt]# ls jumpserver
compose config-example.txt config_init jmsctl.sh LICENSE locale quick_start.sh README.md scripts static.env utils
[root@JumpServer opt]# tree jumpserver
jumpserver
├── compose
│ ├── docker-compose-app.yml
│ ├── docker-compose-db-tls.yml
│ ├── docker-compose-es.yml
│ ├── docker-compose-init-db.yml
│ ├── docker-compose-init-tls.yml
│ ├── docker-compose-init-xpack.yml
│ ├── docker-compose-lb.yml
│ ├── docker-compose-mariadb.yml
│ ├── docker-compose-minio.yml
│ ├── docker-compose-mysql.yml
│ ├── docker-compose-network_ipv6.yml
│ ├── docker-compose-network.yml
│ ├── docker-compose-redis.yml
│ ├── docker-compose-task.yml
│ └── docker-compose-xpack.yml
├── config-example.txt
├── config_init
│ ├── core
│ │ └── config.yml
│ ├── koko
│ │ └── config.yml
│ ├── mariadb
│ │ └── mariadb.cnf
│ ├── mysql
│ │ └── my.cnf
│ ├── nginx
│ │ ├── cert
│ │ │ ├── server.crt
│ │ │ └── server.key
│ │ └── lb_http_server.conf
│ ├── README.md
│ └── redis
│ └── redis.conf
├── jmsctl.sh
├── LICENSE
├── locale
│ ├── en
│ │ └── LC_MESSAGES
│ │ ├── jumpserver-installer.mo
│ │ └── jumpserver-installer.po
│ └── zh_CN
│ └── LC_MESSAGES
│ ├── jumpserver-installer.mo
│ └── jumpserver-installer.po
├── quick_start.sh
├── README.md
├── scripts
│ ├── 0_prepare.sh
│ ├── 1_config_jumpserver.sh
│ ├── 2_install_docker.sh
│ ├── 3_load_images.sh
│ ├── 4_install_jumpserver.sh
│ ├── 5_db_backup.sh
│ ├── 6_db_restore.sh
│ ├── 7_upgrade.sh
│ ├── 8_uninstall.sh
│ ├── const.sh
│ ├── docker.service
│ └── utils.sh
├── static.env
└── utils
├── build.sh
└── messages.sh 16 directories, 48 files
  • 根据需要修改配置文件模板, 如果不了解用途可以跳过修改此配置文件, 系统会自动填入。
[root@JumpServer opt]# ls jumpserver/config-example.txt
jumpserver/config-example.txt

执行安装

[root@JumpServer opt]# bash jumpserver/jmsctl.sh install

       ██╗██╗   ██╗███╗   ███╗██████╗ ███████╗███████╗██████╗ ██╗   ██╗███████╗██████╗
██║██║ ██║████╗ ████║██╔══██╗██╔════╝██╔════╝██╔══██╗██║ ██║██╔════╝██╔══██╗
██║██║ ██║██╔████╔██║██████╔╝███████╗█████╗ ██████╔╝██║ ██║█████╗ ██████╔╝
██ ██║██║ ██║██║╚██╔╝██║██╔═══╝ ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██╔══╝ ██╔══██╗
╚█████╔╝╚██████╔╝██║ ╚═╝ ██║██║ ███████║███████╗██║ ██║ ╚████╔╝ ███████╗██║ ██║
╚════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝ Version: v2.28.6 1. Check Configuration File
Path to Configuration file: /opt/jumpserver/config
/opt/jumpserver/config/config.txt [ √ ]
/opt/jumpserver/config/nginx/cert/server.crt [ √ ]
/opt/jumpserver/config/nginx/cert/server.key [ √ ]
complete >>> Install and Configure Docker
1. Install Docker
Starting to download Docker engine ...
Starting to download Docker Compose binary ...
complete 2. Configure Docker
Do you want to support IPv6? (y/n) (default n):
complete 3. Start Docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /etc/systemd/system/docker.service.
complete >>> Loading Docker Image
[jumpserver/redis:6.2]
......
[jumpserver/mariadb:10.6]
......
[jumpserver/core:v2.28.6]
......
[jumpserver/koko:v2.28.6]
......
[jumpserver/lion:v2.28.6]
......
[jumpserver/magnus:v2.28.6]
......
[jumpserver/web:v2.28.6]
......
complete >>> Install and Configure JumpServer
1. Configure Private Key
SECRETE_KEY: NmUxMzRkNTYtNTk5MS1kM2I0LWJiZTUtZmIwMWE0YzNhYWM1
BOOTSTRAP_TOKEN: NmUxMzRkNTYtNTk5MS1kM2I0
complete 2. Configure Persistent Directory
Do you need custom persistent store, will use the default directory /data/jumpserver? (y/n) (default n):
complete 3. Configure MySQL
Do you want to use external MySQL? (y/n) (default n):
complete 4. Configure Redis
Do you want to use external Redis? (y/n) (default n):
complete 5. Configure External Port
Do you need to customize the JumpServer external port? (y/n) (default n):
complete 6. Init JumpServer Database
......
complete >>> The Installation is Complete
1. You can use the following command to start, and then visit
cd /opt/jumpserver
./jmsctl.sh start 2. Other management commands
./jmsctl.sh stop
./jmsctl.sh restart
./jmsctl.sh backup
./jmsctl.sh upgrade
For more commands, you can enter ./jmsctl.sh --help to understand 3. Web access
http://172.16.70.181:80
Default username: admin Default password: admin 4. SSH/SFTP access
ssh -p2222 admin@172.16.70.181
sftp -P2222 admin@172.16.70.181 5. More information
Official Website: https://www.jumpserver.org/
Documentation: https://docs.jumpserver.org/

安装完成后,配置文件详情

[root@JumpServer opt]# cat jumpserver/config/config.txt
# JumpServer configuration file example.
#
# 如果不了解用途可以跳过修改此配置文件, 系统会自动填入
# 完整参数文档 https://docs.jumpserver.org/zh/master/admin-guide/env/ ################################## 镜像配置 ###################################
#
# 国内连接 docker.io 会超时或下载速度较慢, 开启此选项使用华为云镜像加速
# 取代旧版本 DOCKER_IMAGE_PREFIX
#
# DOCKER_IMAGE_MIRROR=1 ################################## 安装配置 ###################################
#
# JumpServer 数据库持久化目录, 默认情况下录像、任务日志都在此目录
# 请根据实际情况修改, 升级时备份的数据库文件(.sql)和配置文件也会保存到该目录
#
VOLUME_DIR=/data/jumpserver # 加密密钥, 迁移请保证 SECRET_KEY 与旧环境一致, 请勿使用特殊字符串
# (*) Warning: Keep this value secret.
# (*) 勿向任何人泄露 SECRET_KEY
#
SECRET_KEY=NmUxMzRkNTYtNTk5MS1kM2I0LWJiZTUtZmIwMWE0YzNhYWM1 # 组件向 core 注册使用的 token, 迁移请保持 BOOTSTRAP_TOKEN 与旧环境一致,
# 请勿使用特殊字符串
# (*) Warning: Keep this value secret.
# (*) 勿向任何人泄露 BOOTSTRAP_TOKEN
#
BOOTSTRAP_TOKEN=NmUxMzRkNTYtNTk5MS1kM2I0 # 日志等级 INFO, WARN, ERROR
#
LOG_LEVEL=ERROR # JumpServer 容器使用的网段, 请勿与现有的网络冲突, 根据实际情况自行修改
#
DOCKER_SUBNET=192.168.250.0/24 # ipv6 nat, 正常情况下无需开启
# 如果宿主不支持 ipv6 开启此选项将会导致无法获取真实的客户端 ip 地址
#
USE_IPV6=0
DOCKER_SUBNET_IPV6=fc00:1010:1111:200::/64 ################################# MySQL 配置 ##################################
# 外置 MySQL 需要输入正确的 MySQL 信息, 内置 MySQL 系统会自动处理
#
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=NmUxMzRkNTYtNTk5MS1kM2I0LW
DB_NAME=jumpserver # 如果外置 MySQL 需要开启 TLS/SSL 连接, 参考 https://docs.jumpserver.org/zh/master/install/install_security/#ssl
#
# DB_USE_SSL=True ################################# Redis 配置 ##################################
# 外置 Redis 需要请输入正确的 Redis 信息, 内置 Redis 系统会自动处理
#
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=NmUxMzRkNTYtNTk5MS1kM2I0LW # 如果使用外置 Redis Sentinel, 请手动填写下面内容
#
# REDIS_SENTINEL_HOSTS=mymaster/192.168.100.1:26379,192.168.100.1:26380,192.168.100.1:26381
# REDIS_SENTINEL_PASSWORD=your_sentinel_password
# REDIS_PASSWORD=your_redis_password
# REDIS_SENTINEL_SOCKET_TIMEOUT=5 # 如果外置 Redis 需要开启 TLS/SSL 连接, 参考 https://docs.jumpserver.org/zh/master/install/install_security/#redis-ssl
#
# REDIS_USE_SSL=True ################################## 访问配置 ###################################
# 对外提供服务端口, 如果与现有服务冲突请自行修改
# 如果不想对外提供访问可以使用 127.0.0.1:<port>, eg: 127.0.0.1:33060
#
HTTP_PORT=80
SSH_PORT=2222
MAGNUS_PORTS=30000-30100 ################################# HTTPS 配置 #################################
# 参考 https://docs.jumpserver.org/zh/master/admin-guide/proxy/ 配置
#
# HTTPS_PORT=443
# SERVER_NAME=your_domain_name
# SSL_CERTIFICATE=your_cert
# SSL_CERTIFICATE_KEY=your_cert_key
# # Nginx 文件上传下载大小限制
#
CLIENT_MAX_BODY_SIZE=4096m ################################## 组件配置 ###################################
# 组件注册使用, 默认情况下向 core 容器注册, 集群环境需要修改为集群 vip 地址
#
CORE_HOST=http://core:8080
PERIOD_TASK_ENABLED=True # Core Session 定义,
# SESSION_COOKIE_AGE 表示闲置多少秒后 session 过期,
# SESSION_EXPIRE_AT_BROWSER_CLOSE=true 表示关闭浏览器即 session 过期
#
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=True # Lion 开启字体平滑, 优化体验
#
JUMPSERVER_ENABLE_FONT_SMOOTHING=True ################################# XPack 配置 #################################
# XPack 包, 开源版本设置无效
#
RDP_PORT=3389 ################################## 其他配置 ##################################
# 终端使用宿主 HOSTNAME 标识, 首次安装自动生成
#
SERVER_HOSTNAME=JumpServer # 当前运行的 JumpServer 版本号, 安装和升级完成后自动生成
#
CURRENT_VERSION=v2.28.6 ==============================================================================
# 配置文件前后对比如下
[root@JumpServer opt]# diff jumpserver/config-example.txt jumpserver/config/config.txt
24c24
< SECRET_KEY=
---
> SECRET_KEY=NmUxMzRkNTYtNTk5MS1kM2I0LWJiZTUtZmIwMWE0YzNhYWM1
31c31
< BOOTSTRAP_TOKEN=
---
> BOOTSTRAP_TOKEN=NmUxMzRkNTYtNTk5MS1kM2I0
53c53
< DB_PASSWORD=
---
> DB_PASSWORD=NmUxMzRkNTYtNTk5MS1kM2I0LW
65c65
< REDIS_PASSWORD=
---
> REDIS_PASSWORD=NmUxMzRkNTYtNTk5MS1kM2I0LW
124c124
< SERVER_HOSTNAME=${HOSTNAME}
---
> SERVER_HOSTNAME=JumpServer
128c128
< CURRENT_VERSION=
---
> CURRENT_VERSION=v2.28.6

jumpserver命令解析

[root@JumpServer opt]# bash jumpserver/jmsctl.sh --help

[root@JumpServer opt]# jmsctl --help JumpServer Deployment Management Script Usage:
./jmsctl.sh [COMMAND] [ARGS...]
./jmsctl.sh --help Installation Commands:
install Install JumpServer
upgrade [version] Upgrade JumpServer
check_update Check for updates JumpServer
reconfig Reconfiguration JumpServer Management Commands:
start Start JumpServer
stop Stop JumpServer
close Close JumpServer
restart Restart JumpServer
status Check JumpServer
down Offline JumpServer
uninstall Uninstall JumpServer More Commands:
load_image Loading docker image
backup_db Backup database
restore_db [file] Data recovery through database backup file
raw Execute the original docker-compose command
tail [service] View log

启动jumpserver

[root@JumpServer opt]# jmsctl status
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
jms_mysql jumpserver/mariadb:10.6 "docker-entrypoint.s…" mysql 13 minutes ago Up 13 minutes (healthy) 3306/tcp
jms_redis jumpserver/redis:6.2 "docker-entrypoint.s…" redis 13 minutes ago Up 13 minutes (healthy) 6379/tcp
[root@JumpServer opt]# jmsctl start
[+] Running 8/8
⠿ Container jms_redis Healthy 0.6s
⠿ Container jms_mysql Healthy 0.6s
⠿ Container jms_core Healthy 11.9s
⠿ Container jms_magnus Started 14.1s
⠿ Container jms_celery Started 12.4s
⠿ Container jms_web Started 12.6s
⠿ Container jms_koko Started 12.4s
⠿ Container jms_lion Started 12.5s
[root@JumpServer opt]# jmsctl status
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
jms_celery jumpserver/core:v2.28.6 "./entrypoint.sh sta…" celery About a minute ago Up About a minute (healthy) 8070/tcp, 8080/tcp
jms_core jumpserver/core:v2.28.6 "./entrypoint.sh sta…" core About a minute ago Up About a minute (healthy) 8070/tcp, 8080/tcp
jms_koko jumpserver/koko:v2.28.6 "./entrypoint.sh" koko About a minute ago Up About a minute (healthy) 0.0.0.0:2222->2222/tcp, :::2222->2222/tcp, 5000/tcp
jms_lion jumpserver/lion:v2.28.6 "./entrypoint.sh" lion About a minute ago Up About a minute (healthy) 4822/tcp, 8081/tcp
jms_magnus jumpserver/magnus:v2.28.6 "./entrypoint.sh" magnus About a minute ago Up About a minute (healthy) 0.0.0.0:30000-30100->30000-30100/tcp, :::30000-30100->30000-30100/tcp
jms_mysql jumpserver/mariadb:10.6 "docker-entrypoint.s…" mysql 15 minutes ago Up 15 minutes (healthy) 3306/tcp
jms_redis jumpserver/redis:6.2 "docker-entrypoint.s…" redis 15 minutes ago Up 15 minutes (healthy) 6379/tcp
jms_web jumpserver/web:v2.28.6 "/docker-entrypoint.…" web About a minute ago Up About a minute (healthy) 0.0.0.0:80->80/tcp, :::80->80/tcp

页面访问

  • http://ip:80,默认账号密码:admin,admin;首次登录需修改密码。

CentOS7下搭建JumpServer的更多相关文章

  1. 在Centos7下搭建Socks5代理服务器

    在Centos7下搭建Socks5代理服务器 http://blog.51cto.com/quliren/2052776   采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器 ...

  2. 第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误,

    第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误, 注意:版本,不然会报错 Docker >=1.11Compose >1.6.0 通过d ...

  3. Hyperledger超级账本在Centos7下搭建运行环境

    超级账本(hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,加入成员包括:荷兰银行(ABN AMRO).埃森哲(Accenture)等十几个不同利益体 ...

  4. centos7下搭建ceph luminous(12.2.1)--无网或网络较差

    本博客的主要内容是在centos7下搭建luminous,配置dashboard,搭建客户端使用rbd,源码安装ceph,最后给出一些较为常用的命令.本博客针对初次接触ceph的人群. 搭建环境: 主 ...

  5. CentOS7下搭建zabbix监控(四)——Zabbix报警设置

    CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置 CentOS7下搭建zabbix监控(三)——Zabbix ...

  6. CentOS7下搭建zabbix监控(三)——Zabbix监控服务配置

    CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置 (1).配置Zabbix监控Apache服务 主机名:yo ...

  7. CentOS7下搭建zabbix监控(二)——Zabbix被监控端配置

    Zabbix监控端配置请查看:CentOS7下搭建zabbix监控(一)——Zabbix监控端配置 (1).在CentOS7(被监控端)上部署Zabbix Agent 主机名:youxi2 IP地址: ...

  8. Linux系统:Centos7下搭建PostgreSQL关系型数据库

    本文源码:GitHub·点这里 || GitEE·点这里 一.PostgreSQL简介 1.数据库简介 PostgreSQL是一个功能强大的开源数据库系统,具有可靠性.稳定性.数据一致性等特点,且可以 ...

  9. CentOS7下搭建邮件服务器(dovecot + postfix + SSL)

    CentOS   花了基本上两天的时间去配置CentOS7下的邮件服务器.其中艰辛太多了,一定得总结下. 本文的目的在于通过一系列配置,在CentOS 7下搭建dovecot + postfix + ...

  10. Centos7下搭建LAMP平台环境 (转载)

     1.启用Apache(httpd) Centos7默认已经安装httpd服务,只是没有启动.如果你需要全新安装,可以yum install -y httpd 启动服务:systemctl start ...

随机推荐

  1. Js实现一键复制小功能

    function copyToClipboard(textToCopy) { // navigator clipboard 需要https等安全上下文 if (navigator.clipboard ...

  2. Ajax的使用(jquery的下载)

    Ajax学习笔记(jquery的下载) JQuery的官网下载 地址:http://jquery.com 右上角的"Download JQuery" 三个可供下载的文件: Prod ...

  3. 齐博x1标签实例:做模板组图单图无图混排的处理

    代码如下, {qb:tag name="xxx" type="cms" rows="10"} {if ( count($rs['picurl ...

  4. 【UML】统一建模语言

    如果是准备学习设计模式的同学,可以只了解类图相关的知识 而如果是在准备软件设计师考试的同学,或许会对你有点帮助 正在施工...... 参考博客:https://blog.csdn.net/unique ...

  5. SQL 报表制作和整形

    本文章主要介绍制作报表的查询,这些查询通常需要考虑与报表相关的格式设置,还需使用多级聚合. 1.将结果集转置为一行(行转列) 将多行中的值转换为单行中的列. 情景:有一个员工表,统计出一个结果集,显示 ...

  6. element-ui v-table 复选框默认选中

    <el-table ref="refTable" :data="list" v-loading="listLoading" eleme ...

  7. Educational Codeforces Round 130 (Rated for Div. 2) C. awoo's Favorite Problem

    https://codeforc.es/contest/1697/problem/C 因为规则中,两种字符串变换都与'b'有关,所以我们根据b的位置来进行考虑: 先去掉所有的'b',如果两字符串不相等 ...

  8. 又拍云之 Keepalived 高可用部署

    在聊 Keepalived 之前,我们需要先简单了解一下 VRRP.VRRP(Virtual Router Redundancy Protocol)即虚拟路由冗余协议,是专门为了解决静态路由的高可用而 ...

  9. 基于iNeuOS工业互联网平台的板材实时质检系统

    1.  项目背景 刨花板生产线由于原料.生产工艺等原因,会有一些产品板面出现颤纹.漏砂.胶斑.胶块.大刨花.粉尘斑.板面划痕和油污等缺陷.表面缺陷会降低板材强度.影响板材外观和二次加工,给企业带来经济 ...

  10. tomcat报Address localhost:1099 is already in use

    idea运行tomcat报Address localhost:1099 is already in use 解决方案: 电脑桌面->ctrl+shift+esc 打开任务管理器,选择详细信息,找 ...