告别手动传文件,利用 Git Hooks 实现代码推送到服务器的全自动部署
告别 FTP 时代 以前修改博客的前端代码或者自己的小项目,总是在本地改完,用 FTP 软件拖到服务器,极其繁琐,且版本经常搞混。 稍微研究了一下 Git 底层的钩子逻辑(Git Hooks),花半小时搞定了一套极简的自动化部署流水线。 ...
告别 FTP 时代 以前修改博客的前端代码或者自己的小项目,总是在本地改完,用 FTP 软件拖到服务器,极其繁琐,且版本经常搞混。 稍微研究了一下 Git 底层的钩子逻辑(Git Hooks),花半小时搞定了一套极简的自动化部署流水线。 ...
资源报警 手里有一台极其廉价的 1核 1G 内存的 VPS,跑了一个 WordPress。最近只要稍微有点访问量,系统就会因为内存耗尽触发 OOM,直接把数据库进程杀掉,导致网页报 “Error establishing a database connection”。 ...
网络架构重组需求 之前的路由器虽然刷了 OpenWrt,但性能太弱,跑加解密流量的时候 CPU 直接飙到 100%,严重影响室友打游戏的延迟。 搞了一台 N1 盒子当旁路由,主路由还是用原厂的承担拨号和无线 AP。 ...
最近挂在后台的一个自己写的 Python 监控脚本老是莫名其妙挂掉,重新启动过段时间又没了。看它自己的输出也看不出什么问题。 最后老老实实用系统级的日志工具来查。因为我是把它做成了 systemd 的守护进程运行的,所以直接用 journalctl 命令: ...
把域名托管给 Cloudflare 之后,发现首页加载还是差那么点意思。打开浏览器 F12 看了一下 Network,很多图片每次还要回源站去请求。 直接进 CF 控制台,在 Rules -> Page Rules 里面加了一条规则。把图片路径(比如 *moxuan.de/images/*)的缓存级别直接调成了 Cache Everything(缓存所有内容),然后加上 Edge Cache TTL 设置为一个月。 ...
经历了之前几次瞎搞把环境弄崩的惨痛教训后,深刻体会到了“数据备份”的重要性。不能总指望云服务商不跑路,自己手里有备份才踏实。 用 Shell 简单写了个打包脚本,每天凌晨两点自动把博客目录打包成 tar.gz 压缩文件。 ...
早上服务器的监控脚本发来预警,说这台 20G 硬盘的小机器可用空间不足 5% 了。 登上去用 df -h 一看,确实快满了。顺着用 du -sh /* 往下扒,发现罪魁祸首是 Docker 的目录。平时瞎折腾拉了一堆镜像,旧容器删了但悬空镜像还在占空间。 ...
今天在给一个前后端分离的项目配置 Nginx 反代时,前端控制台一片红,全都是 CORS Error。 分析了一下,前端域名和后端接口的域名不一样,浏览器处于安全机制把请求拦截了。 ...
被制裁的早晨 早上起来发现博客打不开了,登进终端一看,Load Average(系统负载)飙到了 15。top 命令一看,Nginx 进程占了 99% 的 CPU。 用 tail -n 100 /var/log/nginx/access.log 一看,某个段的海外 IP 正在以每秒几百次的频率狂刷我的查询接口,典型的 CC 攻击。 ...
刺激的突发事件 在某个论坛买的年付便宜 VPS 突然收到发卡商的群发邮件,说由于上游机房问题,服务器可能在 48 小时后断网清退。机器上还挂着我好几个在跑的数据采集项目,大概有 100G 的碎文件。 如果用 scp 或者 sftp 慢慢拖,这破线路的速度估计传完机器都停机了。必须上增量同步神器:rsync。 ...