在服务器上安装浏览器通常用于自动化测试、网页抓取(如使用 Puppeteer、Selenium)、生成截图或 PDF 等场景。由于大多数服务器运行的是无图形界面的 Linux 系统(如 Ubuntu、CentOS),我们需要安装无头浏览器(Headless Browser) 或配置浏览器以在无 GUI 环境下运行。
以下是几种常见的方法,以 Ubuntu/Debian 为例:
方法一:安装 Chrome / Chromium 并启用无头模式
1. 更新系统包
sudo apt update
2. 安装 Chromium 浏览器
sudo apt install -y chromium-browser
或者安装 Google Chrome(非开源,但功能更完整):
# 下载 Google Chrome 的 .deb 包
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
# 安装
sudo dpkg -i google-chrome-stable_current_amd64.deb
# 如果有依赖问题,修复
sudo apt --fix-broken install
3. 验证安装
google-chrome --version
# 或
chromium-browser --version
4. 使用无头模式运行(无需图形界面)
google-chrome --headless=new --disable-gpu --screenshot --no-sandbox https://example.com
参数说明:
--headless=new:启用新版无头模式(推荐)--disable-gpu:某些系统需要禁用 GPU(尤其在旧版本)--screenshot:自动截图保存为screenshot.png--no-sandbox:在服务器环境中常需关闭沙盒(注意安全风险)
方法二:配合 Puppeteer 使用(Node.js)
Puppeteer 是一个控制 Chrome/Chromium 的 Node.js 库,非常适合自动化任务。
1. 安装 Node.js
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
2. 创建项目并安装 Puppeteer
mkdir browser-test && cd browser-test
npm init -y
npm install puppeteer
注意:Puppeteer 默认会下载一个兼容的 Chromium,无需手动安装。
3. 编写测试脚本(test.js)
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: true,
args: ['--no-sandbox', '--disable-setuid-sandbox']
});
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'example.png' });
await browser.close();
})();
4. 运行脚本
node test.js
方法三:使用 Firefox(可选)
安装 Firefox
sudo apt install -y firefox
无头运行示例
firefox --headless --screenshot screenshot.png https://example.com
可结合 Selenium 使用。
常见问题与解决方案
1. 缺少依赖库
如果启动失败,可能缺少字体或共享库:
sudo apt install -y libx11-xcb1 libnss3 libasound2 libatk-bridge2.0-0 libgtk-3-0 libgbm-dev
2. 权限和沙箱问题
在 Docker 或某些服务器中,建议添加 --no-sandbox 和 --disable-dev-shm-usage:
google-chrome --headless=new --no-sandbox --disable-dev-shm-usage --screenshot https://example.com
3. 中文显示乱码
安装中文字体:
sudo apt install -y fonts-wqy-zenhei fonts-wqy-microhei
总结
| 目的 | 推荐方案 |
|---|---|
| 自动截图/PDF | Chrome + --headless |
| 网页自动化 | Puppeteer + Chromium |
| 兼容性测试 | Selenium + Chrome/Firefox |
| 轻量级需求 | 直接使用 chromium-browser |
✅ 提示:生产环境中建议使用 Docker 封装浏览器环境,避免依赖冲突。例如使用官方镜像:
docker run --rm -v $(pwd):/workdir zenika/alpine-chrome:latest --headless --screenshot https://example.com
如有具体用途(如爬虫、测试等),可以进一步优化配置。欢迎补充你的使用场景!
ECLOUD博客