GitHub Actions
GitHub Actions 是 GitHub 提供的 CI/CD
服务,支持自动化构建、测试、部署等工作流。
下面只介绍基础,常用的 Action 及其用法请参考官方文档。
Action
说明
actions/checkout
签出代码
actions/setup-node
设置 Node.js 环境
actions/setup-python
设置 Python 环境
actions/setup-java
设置 Java 环境
actions/cache
缓存依赖,加速构建
actions/upload-artifact
上传构建产物
actions/download-artifact
下载构建产物
softprops/action-gh-release
自动创建和发布 GitHub Release
stefanzweifel/git-auto-commit-action
自动提交并推送代码
ad-m/github-push-action
半自动推送代码
Mattraks/delete-wor ...
VS Code Remote
VS Code 可以连接到容器、远程服务器或 Windows 子系统 (WSL)
上进行开发。以下是一些常见的使用场景和配置方法。
查看 HTML 等网页文件
方法 1:使用插件 在 VS Code
扩展商店搜索并在远端安装 Live Preview
插件。安装后右键 HTML 文件选择 “Show Preview” 即可直接预览。
方法 2:使用 Python 启动临时服务
在终端运行以下命令:
python3 -m http.server 8000
# 注意:8000 是端口号,如果被占用可以换成其他端口
这个命令会在远程服务器启动一个轻量级 HTTP
服务,将当前目录作为网站根目录。
如果防火墙已开放: 直接访问
http://远程IP:8000。
如果防火墙未开放(推荐): 利用 VS Code
的端口转发功能访问(见下文)。通常 VS Code
会自动检测到并在右下角弹出提示,点击“在浏览器中打开”即可。
端口转发
在使用 VS Code 远程开发时,可以通过 SSH
隧道将远程服务器的端口映射到本地。这使得无需在服务器防火墙放行端口,也 ...
网站搭建
未读小型服务器数据库选型与优化
以2C2G(2核2GB内存)的小型VPS为例。
1. 结论
针对 2GB 内存环境,且需要兼容 MySQL
数据/代码的场景,推荐优先级如下:
优先级
方案名称
适用场景
关键优势
备注
No.1 (首选)
MariaDB 10.x
通用/老项目迁移
完全兼容 MySQL 协议;比 MySQL 8.0 更省内存;性能更优。
推荐方案。无需修改代码,直接替换。
No.2
MySQL 5.7
必须用官方版时
经典稳定,内存占用适中。
需手动优化配置防止崩溃,且从2023年起已结束生命周期。
No.3
SQLite
极简/单机应用
0 内存占用,无需服务进程。
适合无并发压力的个人项目,迁移需转换数据格式。
禁止
MySQL 8.0
-
默认配置极吃内存,2G 环境极易内存溢出。
除非极其精细地调优,否则不建议使用。
2. 系统级优化:虚拟内存 (Swap)
详见 LinuxSwap。
3. 安装与部署
3.1 关于面板环境
由于服务器使用了面板管理(如宝塔),切勿直接通过命令行安装数据库以及安装Docker类型的 ...
Linux
未读Linux Swap
查看当前 Swap 使用情况
swapon --show
free -h
创建 Swap 文件
注:如使用宝塔面板可以搜索Linux工具箱安装Swap,无需手动操作。但是注意检查以下是否持久化之类的,建议完整看完。
创建一个大小为 4G 的 Swap 文件:
sudo fallocate -l 4G /swapfile
如果 fallocate 不可用,可以使用以下命令:
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
设置正确的权限:
sudo chmod 600 /swapfile
将文件设置为 Swap 空间:
sudo mkswap /swapfile
启用 Swap 文件:
sudo swapon /swapfile
验证 Swap 是否启用:
swapon --show
free -h
永久启用 Swap 文件
编辑 /etc/fstab 文件,添加以下行:
/swapfile none swap sw 0 0
调整 Swap 优先级
可以通过修改 /etc/fstab 中的 s ...
SSH 22
服务器禁止SSH 22端口密码登录,只允许密钥登录。
注意:使用密钥连接上了再修改配置文件,否则可能导致无法连接服务器。
# 编辑SSH配置文件
sudo vi /etc/ssh/sshd_config
找到以下行并修改:
# 禁止密码验证 (关闭密码登录)
PasswordAuthentication no
# 只允许 root 用秘钥登录,还有yes/no选项
PermitRootLogin prohibit-password
# 允许公钥验证 (开启秘钥登录)
PubkeyAuthentication yes
# 禁止 SSH 进行 DNS 反向解析
UseDNS no
# 限制登录等待时间,防止连接槽被在此挂起
LoginGraceTime 30
# 限制处于“未认证”状态的并发连接数
MaxStartups 10:30:60
修复 Conda 导致的
PowerShell 启动缓慢
问题描述
每次启动 PowerShell
时都有明显的卡顿,启动时间长达数秒。经过排查,发现这是由于 Conda
的初始化脚本导致的。
原因
在使用 conda init 命令配置 PowerShell 环境时,Conda
会向配置文件(Profile)中注入一段初始化代码。这段代码会在每次启动
PowerShell 时立即执行,加载整个 Conda 环境,从而拖慢启动速度。
排查过程
测试当前启动时间 使用
Measure-Command 测试加载配置文件的启动耗时:
Measure-Command { pwsh.exe -Command "exit" }
测试结果显示需要约 5 秒。
测试裸启动时间
测试不加载配置文件(-NoProfile)的启动耗时:
Measure-Command { pwsh.exe -NoProfile -Command "exit" }
结果仅需 0.5
秒左右。巨大的时间差异证实了问题出在配置文件(Profile)的加载过程中。
定位配置文件
$PROF ...
DNS、端口、安全组与反向代理
1. DNS:只负责“域名 → IP 的映射”
DNS(域名解析)只做一件事:
xx.example.com → 服务器公网 IP
它不涉及端口、不涉及防火墙、不涉及安全策略。
你只是告诉全球的 DNS 服务器:
“访问这个域名,请去找这台服务器。”
2. 端口:服务监听的位置
服务器上的每一个服务,都需要监听一个端口,例如:
服务
默认端口
是否需对外开放?
HTTP
80
✔ 通常开放
HTTPS
443
✔ 通常开放
xx 后端
1234
❌ 不需要开放
如果你的 xx 运行在:127.0.0.1:1234,那么它只允许
本机访问。
外网无论如何都无法访问这个端口,即使安全组放行了 1234 端口。
如果你的 xx 运行在:0.0.0.0:1234,那么它允许
所有 IP 访问。
但是,是否能从外网访问,还要看安全组中是否放行了 1234 端口。
3.
安全组:决定外网能否访问某个端口
安全组是云厂商提供的入口防火墙,决定哪些端口可以从外网访问。例如:
端口
安全组放行?
外网能访问吗?
80
✔
...
Python
未读logging
Python的logging模块提供了灵活的日志记录功能,可用于调试和记录程序运行信息。
1 基本配置
将以下代码添加到Python文件中,以配置日志记录:
import logging
from pathlib import Path
# 配置日志文件路径
script_dir = Path(__file__).parent # 获取当前脚本所在目录
log_file_path = script_dir / 'log_file.log' # 在脚本目录下创建日志文件
# 配置日志
logging.basicConfig(
level=logging.DEBUG, # 设置日志级别
format='%(asctime)s - %(levelname)s - %(message)s', # 设置日志格式
handlers=[
logging.StreamHandler(), # 输出到控制台
logging.FileHandler(log_file_path, encoding='utf-8') # ...
博客资源托管方案
资源托管方案
在搭建博客时,通常会涉及到一些静态资源的托管问题,比如图片、视频、音频等。这里列出几种常见的资源托管方案,供参考:
标号
方案
具体方法
推荐指数
1
本地
放在博客source文件夹下,使用相对路径,跟随博客同步到github仓库
★★
2
github repo
将assets资源放在单独的github仓库管理,并打tag
★★★
3
云服务器
将assets放在云服务器静态网页上
★★★★
4
npm
将assets发布到npm,经过 unpkg/jsDelivr CDN使用
★★★★
优缺点分析
1 本地
优点:
方便,直接放在博客的source文件夹下,使用相对路径引用即可。
不需要额外的配置和管理。
跟随博客同步到github仓库,方便备份和版本控制。
缺点:
资源文件较大时,可能会导致博客仓库过大,影响克隆和下载速度。
仓库容量有限,超过限制后也难以清理。
2 github repo
一般配合jsDelivr使用,cdn加速。
优点:
可以将assets资源放在单独的github仓 ...
内容分发网络 (CDN)
CDN,全称 Content Delivery
Network(内容分发网络),是一种通过分布式部署的服务器网络来加速和优化内容传输的技术。它的核心目标是让用户能够就近获取所需的网页、视频、图片、脚本等内容,从而提升访问速度和体验,同时减轻源站服务器的压力。
1 原理
内容缓存与分发 (Caching & Distribution):
这是CDN最基础也是最关键的技术。CDN会将网站的静态内容(如图片、视频、CSS/JS文件等)主动或被动地从源站服务器缓存到遍布全球的边缘节点服务器上。当用户发起访问请求时,请求会被引导至离用户地理位置最近、网络延迟最低的边缘节点,该节点会直接将缓存的内容响应给用户,避免了对源站的直接访问,极大地缩短了物理距离和数据传输时间。
负载均衡与智能调度 (Load Balancing & Intelligent Scheduling):
CDN拥有一个智能的“大脑”——全局负载均衡(GSLB)系统。这个系统会实时监控所有边缘节点的健康状况、负载情况以及到用户的网络链路质量。当用户发起请求时,GSLB会综合分析用户的I ...










