「笔记」从校赛报不上名开始的服务器运维

写在前面

因为校队 OJ 引用的某个 cdn 加速的 css 挂掉了,马上就要校赛了妈的不修就报不上名了啊我草,于是尝试阅读祖传文档研究校队 OJ 服务器修 bug。

妈的文档里好多东西都过时了,OJ 的技术栈也太几把老了,经过几天的各种奋斗终于初步恢复了对 OJ 的维护能力。

然后对运维感兴趣了,于是开始瞎折腾。

这里记一些在大力运维和远程开发中遇到的,不会涉密的问题和 Solution,以及参考的学习资料。

VMWare ESXi

这什么玩意儿?

参考:

[问题记录] 因为未及时清理快照,导致储存爆掉了!

参考:

问题表现:

  • 储存爆炸,整个物理磁盘上仅剩 7MB 的可用空间。
  • 查看磁盘情况发现,虚拟机的快照链累计了 20 层,最后两层达到了 80GB+ 然后爆了。。。

原因:

  1. 创建快照后,原始磁盘文件(Base Disk)变为只读。此后虚拟机产生的所有新数据和修改,都会写入快照文件(又称增量磁盘,Delta Disk)中(-0000x.vmdk)。

  2. 快照文件构成了有层级关系的“快照链”,读取数据时,VMware 会从最底层(最新的快照)向上回溯,直到找到需要的块;修改数据时,则

    • acm_server.vmdk(原始基础)
    • └── acm_server-0000xx.vmdk(记录了之后的改动)
    • └── acm_server-0000xx+1.vmdk(记录了之后的之后的改动)
  3. 快照文件大小只增不减,删除文件也被视为一种写入操作,反而会使快照文件继续增大。

  4. 快照文件不是对原始文件的替换,而是额外的占用,最多膨胀到与原始磁盘同样大小。

解决方案:

  • 首先含泪舍弃一些不太重要的文件,给储存腾出 20GB+ 的冗余空间用于合并快照。
  • 操作:右键点击虚拟机 -> 快照 (Snapshots) -> 管理快照 (Manage Snapshots) -> 点击 “删除全部 (Delete All)”。
  • 在 ESXi 中,“删除(Delete)” 快照其实就是 “合并(Merge)”,合并后,所有增量磁盘数据都写回到原始磁盘文件中。

建议:

  • 快照在 VMware 中仅建议作为升级或变更前的临时备份(保留 24-72 小时);
  • 严禁将其作为长期备份手段使用

常用 linux 指令小总结

文件与目录信息

参考:

进程信息查看 and 性能监测

参考:

查看端口占用

参考:

权限管理

参考:

linux 软件包管理器大赏

参考:

小工具

oh-my-zsh 美化终端

参考:

增强 shell。

TLDR 太长不看

参考:

-TLDR 命令列神兵| Linux 入門必裝. TL;DR 的意思是:哩供蝦?講重點好嘛? _ by Luka Huang _ Starbugs Weekly 星巴哥技術專欄

简单总结各个指令的功能与各种参数的格式。

$ man 的省流版。

ssh 总结

参考:

ssh 文件传输软件 MobaXterm

参考:

vscode remote ssh 使用总结

参考:

[问题记录] 完蛋!我的操作系统被 vscode 抛弃了! - vscode 1.86+版本 reomote ssh 不兼容旧服务器问题

参考:

完蛋!CPU 1000000% 占用了! - vscode remote ssh 导致的 rg 进程高占用问题

参考:

静态网页资源更新时的浏览器缓存问题

参考:

CSUOJ 前端大量使用的组件库 Bootstrap

参考:

Bootstrap Table

参考:

Bootstrap-Switch

参考:

连接远程数据库

2025.4.24

玩 OSS。

尝试把服务端部署到阿里云的 ECS 上,实现预签名 URL 客户端直传 OSS,再把 URL 回调到服务端。

数据库:MySQL,IDE:DataGrip。

参考:

注意事项:

  • 在云服务器安装 MySQL 环境;
  • 在安全组开 MySQL 和 SSH 的端口;
  • 连接方式选择 SSH 隧道并配置,然后常规配置中主机直接填 localhost(相当于先通过 SSH 隧道登录了远程服务器的用户之后,再在本地连接服务器)。

Linux 配置环境变量

参考:

SpringBoot 项目部署到阿里云服务器

主要参考:

还可能需要的一些前置知识:

在 Ubuntu 下编写 C++

参考:

在 Unbuntu 下编写 Python

参考:

为了在 Linux 下造数据规避 CRLF 的问题,于是来研究 luogu 出品的数据生成器 crayon:https://github.com/luogu-dev/cyaron

建议直接用 Anaconda 以及内置的运行时环境以避免很多麻烦。

docker

学习 docker

参考:

研究部署 CCPCOJ。

唉 docker 太伟大了。

查看使用 docker 部署的数据库里的信息

参考:

  1. 查看 docker 里面的 Postgres 数据库里面的信息 - 小尾学长 - 博客园
  2. Database Client

方法有两种:

  • 直接在 docker 内开个 shell 进程看(参考 1),需要自己手写 SQL,不好。
  • 好用常用:用数据库管理软件,根据 docker 的端口连进去。

免费快速配置 SSL 证书

参考:

RT,参考 certbot 的官方教程即可。

Nginx

参考:

换了路由器,需要重新配置什么?

参考:

重新配置了:

  1. 服务器上:
    1. 静态 LAN IP
    2. 防火墙
  2. 路由器上:
    1. LAN 设置
    2. DHCP 服务(保证服务器的静态 LAN IP 不会参与 DHCP)
    3. 相关设备的静态地址分配(静态 LAN IP)
    4. 虚拟服务器(设置了外网访问服务器上 Web 应用的入口)

写在最后的 Log

2025.4.24

  • 感想:云服务器太好玩了。

    2025.4.2:

  • 感想:我踩的坑的前人们都踩过了。

posted @ 2025-04-02 21:48  Luckyblock  阅读(205)  评论(2)    收藏  举报