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

news2024/11/25 1:06:52

背景

承上篇 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.coloradmin.cn/o/667139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java 学习交流社区平台系统Myeclipse开发mysql数据库web结构jsp编程计算机servlet网页项目

一、源码特点 JSP 学习交流社区平台系统 是一套完善的系统源码&#xff0c;对理解JSP java serlvet dao bean MVC编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;以及相应配套的设计文档&#xff0c;系统主要采用B/S模式开发。 研究的基本内…

wsl中docker自启动

前言 wsl -l -v # 查看 wsl 的状态 wsl -t Ubuntu # 关闭指定版本 wsl -d Ubuntu # 启动指定版本 启动 docker 通过命令 ps -p 1 -o comm 我们知道我们用的是 init&#xff0c;故我们将 systemd 命令修改为 SysV init命令。 ps -p 1 -o comm 更换命令&#xff0c;用SysV in…

NLP作业02:课程设计报告

作业头 这个作业属于哪个课程自然语言处理这个作业要求在哪里NLP作业02&#xff1a;课程设计报告我在这个课程的目标实现基于Seq2Seq注意力机制的聊天机器人这个作业在哪个具体方面帮助我实现目标问题的提出&#xff0c;资料的查找参考文献1.简说Seq2Seq原理以及实现 2.序列到…

Android加载大图策略,防止OOM

前言 Android中图片以位图&#xff08;Bitmap&#xff09;的形式存在&#xff0c;位图常见的格式有.png、.jgp、.bmp、.gif。在加载图片的过程中常见的就是OOM&#xff08;Out of Memory&#xff09;内存溢出。 内存溢出是系统会给APP分配内存也就是Heap Size值。当APP占用的内…

含多类型充电桩的电动汽车充电站优化配置方法(matlab代码)

目录 1 主要内容 目标函数 约束条件 程序亮点 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现博士文章《互动环境下分布式电源与电动汽车充电站的优化配置方法研究》第三章《含多类型充电桩的电动汽车充电站优化配置方法》&#xff0c;本章选择3种典型的电动汽…

乐鑫创客沙龙精彩回顾|激发创新、共享技术

近期&#xff0c;乐鑫科技在全国多个城市举办了 ESP Friends 创客沙龙活动&#xff0c;吸引了来自物联网各个领域的企业家、开发者、创客和学生的参与&#xff0c;包含智能硬件企业家、技术自媒体、教育从业者、博士生、高校学生等。他们与乐鑫资深应用工程师和技术专家面对面深…

冯诺依曼体系结构和操作系统的工作方式

目录 一. 冯诺依曼体系结构 1.1 什么是冯诺依曼体系结构 1.2 为什么冯诺依曼体系结构这样设计 1.3 冯诺依曼体系结构与现实问题的结合 二. 操作系统的工作方式 2.1 操作系统的功能 2.2 操作系统对下进行软硬件管理的方式 2.3 操作系统对上提供使用环境的方式 三. 总结…

泛微E-Office前台文件上传漏洞

0x01 阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&…

史上最全Hadoop面试题:尼恩大数据面试宝典专题1

说在前面&#xff1a; 《尼恩 大数据 面试宝典》 是 《尼恩Java面试宝典》 姊妹篇。 这里特别说明一下&#xff1a;《尼恩Java面试宝典》41个专题 PDF &#xff08;请在文末获取&#xff09;自发布以来&#xff0c; 已经收集了 好几千题&#xff0c; 足足4000多页&#xff0c…

android 如何分析应用的内存(八)——Android 7.0以后的malloc debug

android 如何分析应用的内存&#xff08;八&#xff09; 接上文&#xff0c;介绍六大板块中的第三个————malloc调试和libc回调 上一篇文章中&#xff0c;仅仅是在分配和释放的时候&#xff0c;拦截对应的操作。而不能进一步的去检查内存问题。比如&#xff1a;释放之后再…

卖家必看,要做好独立站,一定要知道的八件事!

如何打造并运营你的跨境独立站&#xff1f;如何吸引更多的流量并促使他们在你的网站下单&#xff1f;在你决定开设独立站之前&#xff0c;以下这些方面是你必须要考虑的&#xff0c;否则你的独立站可能会面临失败的风险。 一、定义目标受众 你是B2B业务还是B2C独立站&#xff…

小区物业电瓶车充电桩收费管理系统 支持扫码刷卡

电动车火灾事故频频发生&#xff0c;毫不起眼的电动车屡次引发夺命大火&#xff0c;电动车已然成为火灾“重灾区”。为预防和遏制电动自行车火灾事故发生&#xff0c;国家三令五申各种政策&#xff0c;为此公安部安委会曾出台《电动自行车集中停放和充电治理方案》。 大部分充电…

visionOS:理想的UI设计竟要考虑这么多细节

拥有对macOS、iPadOS、watchOS、iOS等系统的开发经验&#xff0c;苹果在XR操作系统设计上也具有先天优势&#xff0c;相比于其他公司从头开始构建XR系统界面&#xff0c;苹果可直接借鉴已经过验证的设计美学。 与此同时&#xff0c;WWDC 2023上公布的一系列开发者教程来看&…

Vue3 + Vite + Ts自己封装的基础组件库发布npm ,npm安装使用(Volar )支持TS 类型提示功能(vite-plugin-dts 使用)

一、需求 在开发Vue3 Ts项目时&#xff1a;使用自己二次封装的基础组件&#xff0c;没有Ts类型提示&#xff0c;不能像Element-plus鼠标停在标签或者属性上就能提示当前组件有哪些属性&#xff08;即props&#xff09;及其属性的类型&#xff0c;如下图是Element-plus组件的使…

将mp3音频剪切器收藏起来使用

小明&#xff1a;最近我在剪视频&#xff0c;发现剪出来的音频还需要再进行剪辑和编辑&#xff0c;感觉有点繁琐啊。 小红&#xff1a;是啊&#xff0c;如果能有一个方便快捷的工具就好了&#xff0c;就是不知道剪切音频制作软件推荐免费有哪些&#xff1f; 小明&#xff1a;…

前端开发中遇到的小bug--解决方案

1.在 searchBox 搜索栏中&#xff0c;用到了多级下拉框的筛选条件&#xff0c;样式如下&#xff1a; 这样看起来是没什么问题的&#xff0c;但当我选择时&#xff0c;在框中显示的内容和筛选条件的内容就出错了&#xff1a; 这里其实是选择了 采矿业 -- 石油和天然气开采业 &am…

每日一练 | 华为认证真题练习Day63

1、IEEE 802.1D标准中规定桥优先级是多少bit&#xff1f; A. 8 B. 4 C. 16 D. 2 2、RSTP中处于Discarding状态下的端口&#xff0c;虽然会对接收到的数据帧做丢弃处理&#xff0c;但可以根据该端口收到的数据帧维护MAC地址表。 A. 对 B. 错 3、如下图所示&#xff0c;下列…

随笔-不要裸辞

2023年5月份&#xff0c;16-24岁、25-59岁劳动力调查失业率分别为20.8%、4.1%。 先不说这些大数据&#xff0c;就聊聊我身边发生的事儿。 NO1 欢迎你&#xff0c;新同事 A&#xff0c;别的项目组的&#xff0c;先前通过一个同事说过几句话&#xff0c;那是真正的点头之交。今…

「Java核心技术大会 2023」6月重磅启动,邀你共同探讨Java生态(文末送书5本)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

slam十四讲 03 Eigen实践之不同坐标系下的坐标转换

目录 1. 题目 2. 使用欧式变换 3. 使用四元素 1. 题目 已知 (1) 世界坐标系到相机1坐标系变换关系为&#xff0c;即相机1的位姿q1[0.35,0.2,0.3,0.1]^T, t1[0.3,0.1,0.1]^T. (2) 世界坐标系到相机2坐标系变换关系为&#xff0c;即相机2的位姿q1[-0.5,0.4,-0.1,0.2]^T, t2[…