2018-05-10 puppeteer项目搭建

1、环境准备

安装node.js

进入官网:https://nodejs.org/en/download/。

网站会自动检测系统,如果是windows系统,则下载.exe安装文件,下载后打开运行,进行安装。

linux系统安装

如果是linux系统,可下载版本:

2018-05-10 puppeteer项目搭建_第1张图片

直接安装(建议使用)

下载后得到node-v8.11.1-linux-x64.tar.xz,按顺序执行以下命令:

tar xvf node-v8.11.1-linux-x64.tar.xz

mv node-v8.11.1-linux-x64 nodejs

接着打开/etc/profile文件:

vim /etc/profile

在文件写入以下内容:

export NODE_HOME=/usr/local/nodejs

export PATH=$NODE_HOME/bin:$PATH

保存并退出,编译/etc/profile使配置生效,执行:

:wq

source /etc/profile

编译安装

建议:正式环境直接下载64位包解压即可。

也可以选择下载源码,进行编译安装,步骤如下:

1、下载源码,你需要在https://nodejs.org/en/download/下载最新的Nodejs版本,本文以node-v8.11.1为例:

cd /usr/local/src/

wget https://nodejs.org/dist/v8.11.1/node-v8.11.1.tar.gz

2、解压源码

tar xvf node-v8.11.1.tar.gz

mv node-v8.11.1 nodejs

3、 编译安装

cd node-v8.11.1.tar.gz

./configure --prefix=/usr/local/nodejs

make

make install

4、 配置NODE_HOME,进入profile编辑环境变量

vim /etc/profile

设置nodejs环境变量,在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下内容:

#set for nodejs

export NODE_HOME=/usr/local/nodejs

export PATH=$NODE_HOME/bin:$PATH

:wq保存并退出,编译/etc/profile 使配置生效

source /etc/profile

验证

验证是否安装配置成功,执行:node -v。验证npm是否安装成功,执行: npm -v。

windows系统安装

下载安装包

2018-05-10 puppeteer项目搭建_第2张图片

下载后,双击.exe执行文件运行安装即可,安装后在系统环境变量中配置NODE_HOME。

Windows系统查看node.js是否安装完成,打开cmd命令行工具,执行node -v,可查看node.js版本。再安装完node.js后,会连带安装好npm,在命令行输入npm -v可查看npm版本。

2018-05-10 puppeteer项目搭建_第3张图片

Git安装

pm2安装

使用npm安装pm2:

npm install -g pm2

检查是否安装成功:

pm2 -version

md5模块安装(必须)

下载了项目代码后,进入项目根目录下,安装md5模块。

npm install md5

puppeteer安装(必须)

注意,puppeteer的安装放在项目代码拉取之后,具体安装时,先跳过此步骤,在服务器上先安装cnpm。

下载了项目代码后,进入项目根目录下,安装puppeteer,因为puppeteer无法使用npm安装,可以先使用npm安装cnpm后,再使用cnpm安装puppeteer,所以安装之前检查是否安装cnpm,使用命令检查:cnpm -v,如果未安装cnpm,参考下文的cnpm安装说明。

cnpm安装后,使用cnpm安装puppeteer:

cnpm install puppeteer

(在windows环境下可直接使用npm安装puppeteer,忽略cnpm的安装步骤)。

cnpm安装

npm install -g cnpm --registry=https://registry.npm.taobao.org

检查cnpm是否安装:

cnpm -v

2、项目运行部署

获取项目代码

拉取

使用Git下载node.js项目代码:(这里的项目将在下一次分享中给出)。拉取代码后需要进行pupeeteer的安装。

安装puppeteer后,检查puppeteer依赖是否全部安装,执行:

ldd node_modules/puppeteer/.local-chromium/linux-555668/chrome-linux/chrome

2018-05-10 puppeteer项目搭建_第4张图片

发现未安装依赖,执行命令查看其依赖包:repoquery --nvr --whatprovides libXss.so.1

安装此依赖: yum install libXScrnSaver-1.2.2-6.1.el7

2018-05-10 puppeteer项目搭建_第5张图片

更新

使用svn更新项目,根据自己是使用SVN还是Git更新代码。

通过pm2启动

注意

注意,开发环境与正式环境部署时,需要指定环境名称,通过--env参数指定。如果不指定,默认为开发环境(development),在正式环境启动时须指定为 --env production

初次启动

进入项目目录,使用pm2启动:

pm2 start screen-shot/screenshot_process.json

正式环境:

pm2 start screen-shot/screenshot_process.json --env production

测试环境:

pm2 start screen-shot/screenshot_process.json --env test

开发环境:

pm2 start screen-shot/screenshot_process.json --env development

启动结果截图:


2018-05-10 puppeteer项目搭建_第6张图片

screenshot_process.json文件内容说明

screenshot_process.json内容如下:

{

  "apps": [

    {

      "name": "screenshot",

      "cwd": "/usr/local/svn_space/screen-shot",

      "script": "bin/www",

      "log_date_format": "YYYY-MM-DD HH:mm Z",

      "error_file": "/usr/local/svn_space/screen-shot/logs/node-app.stderr.log",

      "out_file": "/usr/local/svn_space/screen-shot/logs/node-app.stdout.log",

      "pid_file": "/usr/local/svn_space/screen-shot/pids/node-geo-api.pid",

      "instances": 2,

      "min_uptime": "200s",

      "max_restarts": 10,

      "cron_restart": "1 0 * * *",

      "watch": false,

      "merge_logs": true,

      "exec_interpreter": "node",

      "exec_mode": "fork",

      "autorestart": false,

      "vizion": false,

      "env": {

        "NODE_ENV": "development"

      },

      "env_production": {

        "NODE_ENV": "production"

      }

    }

  ]

}


内容说明:

apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用

name:应用程序名称

cwd:应用程序所在的目录

script:应用程序的脚本路径

log_date_format:

error_file:自定义应用程序的错误日志文件

out_file:自定义应用程序日志文件

pid_file:自定义应用程序的pid文件

instances:启动实例个数

min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量

max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)

cron_restart:定时启动,解决重启能解决的问题

watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。

merge_logs:

exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs

exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork

autorestart:启用/禁用应用程序崩溃或退出时自动重启

vizion:启用/禁用vizion特性(版本控制)

后续启动使用pm2说明

经过初次启动后,项目screenshot已经在pm2的启动管理下,可查看下文,通过pm2的命令对项目进行管理。例如:

停止项目:pm2 stop screenshot (此处的screenshot ,为screenshot_process.json配置文件中的name属性,下同)

启动项目(本地local):

pm2 start screenshot

正式环境:

pm2 start screenshot --env production

测试环境:

pm2 start screenshot --env test

开发环境:

pm2 start screenshot --env development

重启项目:pm2 restart screenshot

正式环境:

pm2 restart screenshot --env production

测试环境:

pm2 start screenshot --env test

开发环境:

pm2 start screenshot --env development

等等。

pm2命令说明

$ pm2 logs显示所有进程日志

$ pm2 stop all停止所有进程

$ pm2 restart all重启所有进程

$ pm2 reload all 0秒停机重载进程 (用于 NETWORKED 进程)

$ pm2 stop 0停止指定的进程

$ pm2 restart 0重启指定的进程

$ pm2 startup产生 init 脚本 保持进程活着

$ pm2 web运行健壮的 computer API endpoint (http://localhost:9615)

$ pm2 delete 0杀死指定的进程

$ pm2 delete all杀死全部进程


运行进程的不同方式:

$ pm2 start app.js -i max根据有效CPU数目启动最大进程数目

$ pm2 start app.js -i 3启动3个进程

$ pm2 start app.js -x用fork模式启动 app.js 而不是使用 cluster

$ pm2 start app.js -x -- -a 23用fork模式启动 app.js 并且传递参数 (-a 23)

$ pm2 start app.js --name serverone启动一个进程并把它命名为 serverone

$ pm2 stop serverone停止 serverone 进程

$ pm2 start app.json启动进程, 在 app.json里设置选项

$ pm2 start app.js -i max -- -a 23在--之后给 app.js 传递参数

$ pm2 start app.js -i max -e err.log -o out.log启动 并 生成一个配置文件


通过pm2 monit可监视每个node进程的CPU和内存的使用情况:

2018-05-10 puppeteer项目搭建_第7张图片

访问

服务器环境上部署的应用端口为10011,项目访问地址: 192.16.2.141:10011。结果页面:


2018-05-10 puppeteer项目搭建_第8张图片

接口调用结果


2018-05-10 puppeteer项目搭建_第9张图片

此处测试,文件地址存储在项目的当前目录下的data目录中,接口正式使用时,传入完整路径(此处为示例返回JSON,以接口文档返回值为准)。


本文还未提供源码。下次分享,谢谢。

你可能感兴趣的:(2018-05-10 puppeteer项目搭建)