linux下express+puppeteer安装部署并用PM2守护进程

news/2024/11/29 2:52:27/

背景

承上篇 puppeteer-不需重构,无痛加强vue单页面应用的SEO,提升百度收录排名,是在本地nginx部署前端,本地另起express服务进行测试,下面我们来讲讲如何部署express到linux服务器,并用PM2守护进程。
node 16.14.1
puppeteer ^20.7.2
express ^4.18.2

在此仅作为本人开发记录,不一定能解决你的问题,在文末可以到github的讨论区看看寻找你的答案。

方法

首先我们需要有一个linux服务器,并且该服务必须要有node环境。找到合适的服务器后让我们用xshell连接服务器进行操作。

1.xshell连接服务(windows)

进入首页,点击左上角新建会话,按照如下操作
在这里插入图片描述
验证身份后获得了一串密钥,点击保存后进入linux终端界面
在这里插入图片描述

2.验证是否存在node环境

输入命令

node -v

在这里插入图片描述
注意:puppeteer大多仅适用于node16+版本,但是并不代表越高越好,更高版本的node对服务器的要求也更高,在这里我的node版本是16.14.1

如果你的服务并没有node环境的话,需要看下服务中是否安装了nvm

nvm -v

看到有版本号即可,可以使用以下命令进行安装指定版本的node

nvm install <node指定版本>

3.新建express项目

选择合适的位置,新建文件夹

mkdir <文件名>

cd <文件名>,进入到你刚刚所创建的文件夹下,分别创建文件我上篇文章中的puppeteer-pool.js、service.js、spider,或者在windows环境下创建的文件夹压缩至zip文件,在xshell中输入 rz ,选择该压缩文件,unzip <压缩文件名>进行解压,进入项目文件夹下,npm install安装依赖。
输入node service.js 看到控制台并未报错就对了,报错也不要着急,下面我们会一一解决

4.安装PM2并启动项目

npm install -g pm2

校验是否安装成功 pm2 -v
在这里插入图片描述

使用pm2 start service.js启动项目,注意一定要带上.js,否则启动的项目并不是我们需要的项目
至此成功

相关命令

mkdir <文件名> 新建文件夹
rm <文件> 删除文件
rm -rf 文件目录> 删除目录
rz 上传文件
unzip <压缩文件名.zip> 解压zip包
tar -xzvf <文件名>.tar.gz 解压 .tar.gz 或 .tgz 压缩包
pm2 list 查看守护的项目
pm2 delete 项目名称/指项目pid 删除指定项目
pm2 restart 项目文件 重启指定项目

部署过程中遇到的一些问题

指路-》官网ISSUE

1.puppeteer未自动安装对应版本的chrome,以及如何查看puppeteer对应chrome版本
办法一:可以配置你本地的chrome.exe,例如

const browser = await puppeteer.launch({//无头模式headless: true,//参数args: ['--disable-gpu','--disable-dev-shm-usage','--disable-setuid-sandbox','--no-first-run','--no-sandbox','--no-zygote','--single-process'],//一般不需要配置这条,除非启动一直报错找不到谷歌浏览器executablePath:'chrome.exe在你本机上的路径,例如C:/Program Files/Google/chrome.exe'});

办法二:手动安装
针对不同的puppeteer我们需要安装对应的chrome版本,怎么查看对应版本呢?
1.看控制台报错,例如

Could not find Chrome (ver. 114.0.5735.133)

2.在package.json中查看安装的puppeteer版本,在官网中找到对应tag,根据以下路径找到对应浏览器版本
在这里插入图片描述

例如puppeteer 18.2.1版本
在这里插入图片描述

在这里插入图片描述
即可看到我们需要的版本
然后根据需求把%d改为我们需要的版本,访问链接进行下载

linux:
‘https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/%d/chrome-linux.zip’,

mac:
‘https://storage.googleapis.com/chromium-browser-snapshots/Mac/%d/chrome-mac.zip’,

win32:
‘https://storage.googleapis.com/chromium-browser-snapshots/Win/%d/chrome-win32.zip’,

win64:
‘https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/%d/chrome-win32.zip’

2.项目报错 Failed to launch the browser process!
可能是linux缺少部份依赖,需要使用yum install进行下载,指路 官方解决办法
在这里插入图片描述
3.报错 net::ERR_NAME_NOT_RESOLVED
这个可能是因为你在 service.js文件中的写入的url域名无法解析,需要你在主机的host配置对应ip以及域名。
验证是不是这个原因你可以把url改为http://www.baidu.com,查看是否报错。


http://www.ppmy.cn/news/487288.html

相关文章

训练个中文版ChatGPT没那么难:不用A100,开源Alpaca-LoRA+RTX 4090就能搞定

关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;ComputerVisionGzq 学习群&#xff5c;扫码在主页获取加入方式 计算机视觉研究院专栏 作者&#xff1a;Edison_G Alpaca-LoRA 将微调类 ChatGPT 模型的算力需求降到了消费级&#xff0c;训练个自己的中文对话模型真…

可以微调类ChatGPT模型啦!开源Alpaca-LoRA+RTX 4090就能搞定

源 | 机器之心 Alpaca-LoRA 将微调类 ChatGPT 模型的算力需求降到了消费级&#xff0c;训练个自己的中文对话模型真就没那么难了。 2023 年&#xff0c;聊天机器人领域似乎只剩下两个阵营&#xff1a;「OpenAI 的 ChatGPT」和「其他」。 ChatGPT 功能强大&#xff0c;但 OpenAI…

基于PaddleNLP的中文对话文本匹配

★★★ 本文源自AI Studio社区精品项目&#xff0c;【点击此处】查看更多精品内容 >>> 基于PaddleNLP的中文对话文本匹配 一、赛题解析 1.1 赛题背景 文本匹配任务在自然语言处理中是非常重要的基础任务之一&#xff0c;在问答系统、智能对话等诸多应用场景起到关键…

生鲜产品自主结算

1. 项目场景说明 在超市等无人零售场景中&#xff0c;目前主要是结算方式&#xff0c;主要有以下几种 条形码方式RFID等射频码称重方法 但是以上几种方法存在如下缺点&#xff1a; 1&#xff09;针对条形码方式&#xff0c;对于成品包装的商品&#xff0c;较为成熟&#xff0…

童年往事!怀念44款经典任天堂FC游戏[FC]

“红白机”&#xff01;二十年经典不完全接触 转载至PCPOP.COM 作者:尹飞扬 时至今日&#xff0c;任天堂的经典主机Family Computer出现&#xff0c;已经超过了21个年头了。众所周知&#xff0c;FC主机在欧美又称Nintendo Entertainment System&#xff08;可译作任天堂娱乐平…

阿里巴巴直播内容风险防控中的AI力量

直播作为近来新兴的互动形态和今年阿里巴巴双十一的一大亮点&#xff0c;其内容风险监控是一个全新的课题&#xff0c;技术的挑战非常大&#xff0c;管控难点主要包括业界缺乏成熟方案和标准、主播行为、直播内容不可控、峰值期间数千路高并发处理、对算法的高实时响应要求等等…

[揭秘]如何通过“人工智能”对直播的内容风险防控

文/威视 直播作为近来新兴的互动形态和今年阿里巴巴双十一的一大亮点&#xff0c;其内容风险监控是一个全新的课题&#xff0c;技术的挑战非常大&#xff0c;管控难点主要包括业界缺乏成熟方案和标准、主播行为、直播内容不可控、峰值期间数千路高并发处理、对算法的高实时响应…

【干货】直播内容风险防控的AI力量

直播作为近来新兴的互动形态和今年阿里巴巴双十一的一大亮点&#xff0c;其内容风险监控是一个全新的课题&#xff0c;技术的挑战非常大&#xff0c;管控难点主要包括业界缺乏成熟方案和标准、主播行为、直播内容不可控、峰值期间数千路高并发处理、对算法的高实时响应要求等等…