Ubuntu 22.04重启后Puppeteer无法启动Chromium,SSH登录后恢复正常的问题求助
大家好,我碰到了一个百思不得其解的问题,想请教下各位大佬的解决思路。
我的环境是这样的:
- 全新搭建的Ubuntu 22.04服务器
- 运行Node.js(
v18.12.1)+ Express服务,用PM2作为进程管理器 - 安装了Puppeteer和Chromium浏览器,用于生成高质量PNG截图,手动测试时功能完全正常
问题具体表现:
服务器重启后,PM2能成功拉起我的Node应用,网站可以正常访问,ping请求和接口响应都没问题,看起来服务本身是正常运行的。但这时候如果触发生成截图的请求,Puppeteer就会失败,报错信息如下:
Error: Failed to launch the browser process!
/usr/bin/chromium-browser: 12: xdg-settings: not found
2022/12/08 00:36:47.167545 cmd_run.go:1055: WARNING: cannot start document portal: dial unix
/run/user/1001/bus: connect: no such file or directory/system.slice/pm2-sammy.service is not a snap cgroup
但奇怪的是,只要我以用户sammy(所有软件和服务都是用这个用户安装的,pm2 startup的配置也存在/home/sammy目录下)SSH登录到服务器之后,再触发相同的截图请求,一切又恢复正常了。就好像SSH登录这个操作触发了某个必要的环境或者会话初始化,本地的Vagrant测试环境完全没有这个问题。
我自己猜测,会不会是服务器重启后sammy用户没有活跃的会话存在,导致Puppeteer启动Chromium时缺少必要的环境?但不确定具体是哪部分出了问题,也不知道该怎么配置才能让重启后不用SSH登录也能正常运行。
有没有朋友遇到过类似的问题,或者能给我一些排查方向?
备注:内容来源于stack exchange,提问作者Mehmet

