编译 Armbian 系统镜像
Armbian 是一套以 Linux 为基础的针对 Arm 架构及相关硬件所开发的轻量级软件系统,而且主要面向嵌入式体系架构的单板机(SBCs)应用场景,比如电视盒子、游戏机、NAS、媒体播放器、个人小电脑等等。目前 Armbian 支持 Debian 和 Ubuntu 的编译选项,可以生成具有字符或图形界面的运行系统。 此教程适用于 Amlogic S9xxx 系列处理器和 Rockchip 盒子,编译一次需要1-3小时左右,需要耐心等待,理论上 CPU 核心数越多编译越快。 环境要求 系统版本 推荐 Debian 11 或者 Ubuntu 22.04 配置要求 至少 4G RAM,SSD,推荐4核处理器以上,预留 25G 硬盘空间 网络要求 最好是境外主机或者能够访问国际网络,大陆网络环境编译耗时久且需要修改地方较多 编译依赖 12345678# 升级sudo apt update -ysudo apt full-upgrade -y# 安装依赖sudo apt install $(curl -fsSL https://is.gd/depend_ubuntu2204_a...
make 命令参数介绍
make命令参数介绍下面列举了所有GNU make 3.80版的参数定义。其它版本和产商的make大同小异,不过其它产商的make的具体参数还是请参考各自的产品文档。 “-b” “-m”:这两个参数的作用是忽略和其他版本make的兼容性 “-B” “–always-make”:认为所有目标都需要更新(重编译) “-C dir” “–directory=dir”:指定makefile的目录。如果有多个”-C”参数,那么后边的路径会以前面的作为相对路径。如:”make -C ~/C_Study/day03-makefile -C 03-make参数”,等价于”make -C ~/C_Study/day03-makefile/03-make参数”。 “–debug=options”:输出make的调试信息。有几个不同的选项参数可以选择,如果没有参数,就输出最简单的调试信息。下面是options的取值:a—也就是all,输出所有调试信息b—也就是basic,只输出简单的调试信息。即输出不需要重编译的目标v—也就是ve...
使用 GitHub Actions 云编译 OpenWrt 固件
前言Github Actions 是 Microsoft 收购 GitHub 后推出的 CI/CD 服务,它提供了性能配置非常不错的虚拟服务器环境(E5 2vCPU/7G RAM),基于它可以进行构建、测试、打包、部署项目。对于公开仓库可免费无时间限制的使用,且单次使用时间长达 6 个小时,这对于编译 OpenWrt 来说是非常充足的。不过 GitHub Actions 有一定的使用门槛,首先要了解如何编写 workflow 文件。不过不用担心,博主已经编写好了相关的 workflow 文件模版,只需要按照教程的步骤来操作即可。 方案特点 免费 一键快速编译 定时自动编译 客制化编译 并发编译(可同时进行20个编译任务) 无需搭建编译环境(在线make menuconfig生成配置文件) 无需消耗自己的计算机与服务器的计算资源(性感E5在线编译) 无需担心磁盘空间不足(近60G磁盘空间) 无需使用清理文件(内核更新不怕 boom ) 编译速度快(编译时间1-2小时) 编译成功率提升200%(万兆自由网络环境) 全新环境(杜绝编译环境不干净导致编译失败...
SSH 证书登录详解
SSH 是服务器登录工具,提供密码登录和密钥登录。 但是,SSH 还有第三种登录方法,那就是证书登录。很多情况下,它是更合理、更安全的登录方法,本文就介绍这种登录方法。 一、非证书登录的缺点密码登录和密钥登录,都有各自的缺点。 密码登录需要输入服务器密码,这非常麻烦,也不安全,存在被暴力破解的风险。 密钥登录需要服务器保存用户的公钥,也需要用户保存服务器公钥的指纹。这对于多用户、多服务器的大型机构很不方便,如果有员工离职,需要将他的公钥从每台服务器删除。 二、证书登录是什么?证书登录就是为了解决上面的缺点而设计的。它引入了一个证书颁发机构(Certificate1 authority,简称 CA),对信任的服务器颁发服务器证书,对信任的用户颁发用户证书。 登录时,用户和服务器不需要提前知道彼此的公钥,只需要交换各自的证书,验证是否可信即可。 证书登录的主要优点有两个:(1)用户和服务器不用交换公钥,这更容易管理,也具有更好的可扩展性。(2)证书可以设置到期时间,而公钥没有到期时间。针对不同的情况,可以设置有效期很短的证书,进一步提高安全性。 三、证书登录的流程SSH 证书登录...
OpenSSL 证书生成实践
示例:123456789101112131415# 生成 CA 私钥openssl genrsa -out ca.key 2048# 生成 CA 证书 ("YOURNAME" 处填上你自己的名字)openssl req -x509 -new -nodes -key ca.key -sha256 -days 1825 -out ca.crt -subj "/C=CN/CN=UnblockNeteaseMusic Root CA/O=YOURNAME"# 生成服务器私钥openssl genrsa -out server.key 2048# 生成证书签发请求openssl req -new -sha256 -key server.key -out server.csr -subj "/C=CN/L=Hangzhou/O=NetEase (Hangzhou) Network Co., Ltd/OU=IT Dept./CN=*.music.163.com"# 使用 CA 签发服务器证书openssl x509 -req -ex...
Nginx 极简教程
本项目是一个 Nginx 极简教程,目的在于帮助新手快速入门 Nginx。 examples 目录中的示例模拟了工作中的一些常用实战场景,并且都可以通过脚本一键式启动,让您可以快速看到演示效果。 一、Nginx 简介 二、Nginx 入门 三、Nginx 实战 Http 反向代理 Https 反向代理 负载均衡 网站有多个 webapp 的配置 静态站点 搭建文件服务器 解决跨域 资源 一、Nginx 简介什么是 Nginx? Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 什么是反向代理? 反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 二、Nginx 入门 详细安装方法请参考:Nginx 运维 nginx 的使用比较简单,就是几条命令。 常用到的命令如下: 123456...
Nginx 简介
Ngnix 特点 模块化设计:良好的扩展性,可以通过模块方式进行功能扩展。 高可靠性:主控进程和 worker 是同步实现的,一个 worker 出现问题,会立刻启动另一个 worker。 内存消耗低:一万个长连接(keep-alive),仅消耗 2.5MB 内存。 支持热部署:不用停止服务器,实现更新配置文件,更换日志文件、更新服务器程序版本。 并发能力强:官方数据每秒支持 5 万并发; 功能丰富:优秀的反向代理功能和灵活的负载均衡策略 Nginx 功能 支持静态资源的 web 服务器。 http,smtp,pop3 协议的反向代理服务器、缓存、负载均衡; 支持 FASTCGI(fpm) 支持模块化,过滤器(让文本可以实现压缩,节约带宽),ssl 及图像大小调整。 内置的健康检查功能 基于名称和 ip 的虚拟主机 定制访问日志 支持平滑升级 支持 KEEPALIVE 支持 url rewrite 支持路径别名 支持基于 IP 和用户名的访问控制。 支持传输速率限制,支持并发数限制。 Nginx 性能Nginx 的高并发,官方测试支持 5 万并发连接。实际生产环境能到 2-3...
Nginx 配置详解
Nginx 的默认配置文件为 nginx.conf。 nginx -c xxx.conf - 以指定的文件作为配置文件,启动 Nginx。 配置文件实例以下为一个 nginx.conf 配置文件实例: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661...
Nginx 问题集
Nginx 出现大量 TIME_WAIT检测TIME_WAIT状态的语句123456$ netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' SYN_RECV 7ESTABLISHED 756FIN_WAIT1 21SYN_SENT 3TIME_WAIT 2000 状态解析: CLOSED - 无连接是活动的或正在进行 LISTEN - 服务器在等待进入呼叫 SYN_RECV - 一个连接请求已经到达,等待确认 SYN_SENT - 应用已经开始,打开一个连接 ESTABLISHED - 正常数据传输状态 FIN_WAIT1 - 应用说它已经完成 FIN_WAIT2 - 另一边已同意释放 ITMED_WAIT - 等待所有分组死掉 CLOSING - 两边同时尝试关闭 TIME_WAIT - 另一边已初始化一个释放 LAST_ACK - 等待所有分组死掉 解决方法执行 vim /etc/sysctl.conf,并添加下面字段 ...
GitHub Actions 入门教程
一、GitHub Actions 是什么?大家知道,持续集成由很多操作组成,比如抓取代码、运行测试、登录远程服务器,发布到第三方服务等等。GitHub 把这些操作就称为 actions。 很多操作在不同项目里面是类似的,完全可以共享。GitHub 注意到了这一点,想出了一个很妙的点子,允许开发者把每个操作写成独立的脚本文件,存放到代码仓库,使得其他开发者可以引用。 如果你需要某个 action,不必自己写复杂的脚本,直接引用他人写好的 action 即可,整个持续集成过程,就变成了一个 actions 的组合。这就是 GitHub Actions 最特别的地方。 GitHub 做了一个官方市场,可以搜索到他人提交的 actions。另外,还有一个 awesome actions 的仓库,也可以找到不少 action。 上面说了,每个 action 就是一个独立脚本,因此可以做成代码仓库,使用userName/repoName的语法引用 action。比如,actions/setup-node就表示github.com/actions/setup-node这个仓库,它代表一个 a...






