docker构建软件包
使用docker环境打包镜像
在linux系统中,经常会出现编译安装软件;然而linux发行版不同编译软件的过程也大不相同,构建出来的二进制软件也不能随意复制使用。使用docker可以很好的解决问题,并且实现一次构建多处使用。
dockerfile构建软件
以下使用 ZLMediaKit软件构建为案例说明 dockerfile 编译并且打包镜像
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192# 标记此处构建使用容器内构建镜像体 AS build关键词FROM dockerpull.com/ubuntu:20.04 AS build#shell,rtmp,rtsp,rtsps,http,https,rtpEXPOSE 9000/tcpEXPOSE 8000/tcpEXPOSE 8 ...
Linux常用配置命令(持续更新)
Ubuntu常用命令,环境配置
Ubuntu操作系统使用 gcc cmake make 等套件编译软件;Ubuntu操作系统拥有较为完整的软件依赖仓库;本文介绍常见镜像依赖处理方法。
国内镜像配置
12345678# 阿里云镜像sudo sed -i "s@http://.*archive.ubuntu.com@http://mirrors.aliyun.com/ubuntu@g" /etc/apt/sources.listsudo sed -i "s@http://.*security.ubuntu.com@http://mirrors.aliyun.com/ubuntu@g" /etc/apt/sources.listapt update# 华为云镜像sudo sed -i "s@http://.*archive.ubuntu.com@http://mirrors.huaweicloud.com@g" /etc/apt/sources.listsudo sed -i "s@http://.*security ...
SpEL
Spring EL 表示使用
thingsboad踩坑记 -- 源码编译
由于中所周知的原因,国内访问gitlab和maven中央仓库都会出现问题;thingsboard源码涉及maven,gradle和前端等编译问题,本文将从零开始全套构建本地开发环境
本次环境搭建采用 thingsboard 3.4.1 源码,此版本基本要求
jdk 11 (必须是jdk11)
postgresql 9.6+ (本次使用使用pgsql13,安装方法自行参考官方介绍搭建)
ideaCE(社区版) 2022.2,有条件可直接使用 旗舰收费版
maven 3.6.x
nodejs 16.x
工具配置
maven配置
无论国内任何maven镜像,都建议您直接代理 * ; 但是直接代理全部内容thingsboard编译一定会出错,常见问题 gradle 找不到异常;先看常见配置
1234567<!-- 在maven中settings.xml 文件中的mirrors节点添加阿里云maven代理 --><mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorO ...
Prometheus基本使用及介绍(一)
Prometheus是一款开源监控告警系统,自2012年开源以来,许多公司和组织都使用Prometheus,并且他拥有众多开发者和活跃的社区。
Prometheus拥有许多特性
由时序数据kv标识组成的多维度数据模型
PromQL 灵活的查询语句
不依赖分布式存储;单个服务器节点是自治的
HTTP拉取方式收集时序数据
同时支持时序数据推送 pushGateway
通过服务发现或静态配置发现监控目标
支持多种图形和仪表板模式
Prometheus架构图
核心组件
Prometheus server 收集和存储时序数据核心组件
client libaries 应用集成的核心库
push gateway 支撑短存活的监控项
exporters 特殊类型的监控
alertmanager 处理告警信息
prometheus安装
prometheus版本迭代比较快,建议采用2.21以上版本,prometheus有着良好的向下兼容性;新版本的功能页比较丰富,同时支撑快速升级
1234567891011121314151617# 下载prometheus,此处以L ...
WSL2安装及优化
日常开发中难免一些Linux常用应用例如 redis 等必须在Linux或者macOS系统才能运行的软件;部分软件也有对应的Windows版本,不过体验或者资源消耗难免有些不友好,好在Windows中有WSL(Windows-Subsystem-Linux)。本文将根据微软官方提供的安装方式详细介绍WSL2安装并且介绍如何将WSL2放到C盘之外的位置
安装WSL
官方提供自动安装和手动安装
官方安装方式
WSL 的手动安装步骤 | Microsoft Docs
安装 WSL | Microsoft Docs
确保windows虚拟平台正常开启 需要注意:
如果您自己的电脑中有vmware或者VMbox等虚拟机软件需要自行删除,VMware和vmbox都有自己的虚拟机内核与Windows中的Hyper-V不能兼容共存。打开控制面板 –> 程序卸载 –> 启用或者关闭Windows功能
勾选 “虚拟机” 相关选项
配置Windows Powershell权限Windows11或者Windows10都默认使用powershell作为本机 ...
Redis分布式锁最佳实践
redis作为当今市场上常用的组件,在分布式应用系统中有着比较常见的应用,例如缓存,简单队列,分布式锁等。本文对Redis分布式锁做出简单实践。
实现锁的核心技术点
互斥性
保证同一时刻只能有一个客户端可以成功拿到锁。
安全性
只有加锁的客户端才有权限释放锁,也就是不能让A加锁,B或者C可以解锁。
避免死锁
死锁在多线程中变成非常常见,要破会产生死锁(互斥性,请求保持,不可剥夺,循环等待)必要条件,互斥性是在多线程中不可破坏,破会其余三个条件也是可以有效避免死锁问题。
原子操作
redis的每个指令都是一个原子操作,而且由于redis的单进程单线程特点,指令在后台队列中逐个等待执行,同一时刻只能有一个指令被成功执行;好在redis支持lua脚本将多个指令合并成一个原子指令执行
上锁1SET key value NX EX timeout
set指令 用于设置 KV
key value是存入redis键值对信息
NX 只有这个可以存在时才会进行操作
EX 设置这个键的过期时间,单位为秒;具体是多少由 timeout 数值决定
timeout 过期时间,这是避免死锁的 ...
MySQL 8.0手动安装
最近开发SAAS系统,遇到公司的云数据库到期,需要搭建自用开发数据库;参考官方的源安装模式,但是卓所周知,网速极慢,手动下载官方rpm包,又出现各种依赖缺失;醉了,装个数据各种坑,最后还是决定直接使用离线全包的方式直接解压缩安装配置。
下载MySQL8.0最新的程序
oracle官网提供mysql相关下载地址,网速快可以直接使用;
MySQL :: Download MySQL Community Server
阿里云镜像站MySQL,直接下载最新的安装包
mysql-MySQL-8.0安装包下载_开源镜像站-阿里云 (aliyun.com)
注意下载完整的tar文件,不要下载 minimal压缩包,minimal压缩包中不包含innodb引擎
推荐使用 阿里云镜像站下载
解压到自己的安装目录
本文将以 /opt/mysql作为mysql安装包的根目录
配置MySQL
首先创建MySQL用户
MySQL数据库不建议采用root账号直接启动安装
1useradd mysql # ubuntu 使用 adduser mysql
删除系统中 ...
Nginx 配置全局https
最近在开发微信小程序后台服务时碰到http协议被限制的问题,微信小程序强制所有内部访问的接口必须是https协议否则无法请求,然而我们内部配置的开发和线上运行环境均采用http;必须将协议全部配置https才能使微信小程序正常访问
生成对应域名的证书文件 公司统一使用阿里云dns,可以在阿里云域名解析上生成免费ssl证书,具体参考 2022阿里云免费SSL证书申请全过程(图文详解)-阿里云开发者社区 (aliyun.com)
各大云厂商也有自己ssl证书 SSL证书_免费SSL证书-付费SSL证书_服务器证书-腾讯云 (tencent.com) 等等。
如果不想使用云厂商的ssl证书 可以使用 Let’s Encrypt 开源官方 ssl证书 Let’s Encrypt - 免费的SSL/TLS证书 (letsencrypt.org)
也可以使用 certbot Certbot Instructions | Certbot (eff.org) 工具快速配置https
检查nginx 开始配置前需要检查nginx运行状态和版本
首先 ...
LVM2 挂盘
命令工具 (centos)
lvm2
lsblk
blkid
mkfs.ext4
首先需要安装lvm2工具包
lvm2工具包是epel中的工具,先安装 epel 再安装 lvm2 ,具体安装epel可参考阿里镜像源处理
1yum -y install lvm2
lvm2 共有 12个命令
1234567891011121314151617# 创建命令pvcreatevgcreatelvcreate#查看命令pvscanvgscanlvscanpvdisplayvgdisplaylvdisplay# 扩容命令vgextedlvextendresize2fs
创建物理卷
首先通过 lsblk查看没有被挂载的磁盘
使用 pvcreate 命令创建 物理卷
1234pvcreate /dev/vdbpvdisplay
运行结果
12345678910111213Physical volume "/dev/vdb" successfully created. "/dev/vdb" is ...