如何在无显示器的Rocky Linux 9云服务器上截取渲染后的HTML/本地网站截图
如何在无显示器的Rocky Linux 9云服务器上截取渲染后的HTML/本地网站截图
我之前帮不少朋友处理过类似的无显示器服务器截图需求,针对你的Rocky Linux 9场景,完全不需要外接显示器或者折腾XRDP会话,直接用命令行工具就能搞定,推荐两个靠谱的方案,分别适配不同的页面复杂度:
方案一:用wkhtmltoimage(轻量高效,适合简单静态/轻量动态页面)
这个工具是专门把HTML直接转成图片的命令行工具,渲染逻辑贴近webkit内核,安装和使用都很简单:
- 先安装依赖的EPEL仓库(工具托管在这个仓库里):
dnf install epel-release -y - 安装wkhtmltoimage:
dnf install wkhtmltoimage -y - 实际使用:
- 截取本地运行的web应用页面:
wkhtmltoimage http://localhost/your-app-url output-screenshot.png - 直接截取本地磁盘上的HTML文件:
wkhtmltoimage file:///var/www/html/your-edited-page.html local-page.png - 要是遇到“找不到X服务器”的错误,就用
xvfb虚拟一个X环境来运行(先装xvfb:dnf install xvfb -y):xvfb-run wkhtmltoimage http://localhost/your-app-url output.png
- 截取本地运行的web应用页面:
方案二:用Chromium无头模式(贴近真实浏览器,适合复杂JS渲染页面)
如果你的用户编辑的HTML里有大量JS动态效果(比如拖拽组件、实时渲染的交互元素),用Chromium的无头模式截图会更准确,因为它和普通Chrome的渲染逻辑完全一致:
- 安装Chromium浏览器:
dnf install chromium-browser -y - 基础截图命令:
chromium-browser --headless --disable-gpu --screenshot=app-screenshot.png http://localhost/your-app-path - 自定义截图分辨率(比如要1920x1080的高清图):
这个工具自带无头模式,完全不需要X服务器或者桌面环境,直接命令行运行就能生成和真实浏览器一致的截图。chromium-browser --headless --disable-gpu --window-size=1920,1080 --screenshot=high-res.png http://localhost/your-app-path
一些额外注意事项
- 先确认你的web应用在本地能正常访问:可以用
curl http://localhost/your-app-path测试,确保能返回完整的HTML内容 - 生成的图片文件可以直接复制到内网共享目录,或者用scp工具传到内网机器(如果网络允许的话)
- 你之前安装的“Server with GUI”其实用不上这些工具,要是想节省服务器资源,甚至可以把GUI组卸载,完全不影响截图功能
备注:内容来源于stack exchange,提问作者Paul Folkers
相关产品推荐
相关产品推荐

