centos nodemon?node环境变量是干嘛用的

大家好,关于centos nodemon很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于node环境变量是干嘛用的的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

如何使用docker部署iis

我们建立的是一个node.js的web服务应用。我们需要在当前目录下建立如下三个文件。1).gitignorenode_modules/*2)package.json{"name":"docker-centos-hello","private":true,"version":"0.0.1","description":"Node.jsHelloworldapponCentOSusingdocker","author":"DanielGasienica","dependencies":{"express":"3.2.4"}}3)server.jsvarexpress=require('express'),app=express(),redis=require('redis'),RedisStore=require('connect-redis')(express),server=require('http').createServer(app);app.configure(function(){app.use(express.cookieParser('keyboard-cat'));app.use(express.session({store:newRedisStore({host:process.env.REDIS_HOST||'localhost',port:process.env.REDIS_PORT||6379,db:process.env.REDIS_DB||0}),cookie:{expires:false,maxAge:30*24*60*60*1000}}));});app.get('/',function(req,res){res.json({status:"ok"});});varport=process.env.HTTP_PORT||3000;server.listen(port);console.log('Listeningonport'+port);配置Dockerfile我们需要通过Dockerfile来配置我们的docker镜像。FROMubuntu:14.04MAINTAINERzengjinlongRUNapt-getupdate#InstallRedisRUNapt-get-y- installpythonredis-serverRUNapt-get-y- installwget#InstallNodeRUNcd/opt&&\wget*.&&\rm-f/opt/node-v0.10.33-linux-x64.tar.gz#SettheworkingdirectoryWORKDIR/srcjCMD["/bin/bash"]有了Dockerfile之后,就可以通过dockerbuild来建立我们的镜像。dockerbuild-tminimicall/node_web:0.1.这里需要说明的是,你需要灵活的根据你的ubuntu真实的环境来变化中间的指令。例如,当我们第一次执行的时候,告诉我找不到pythonredis-server,我想应该是我的apt源太out了,所以,我加了RUNapt-getupdate.就解决了这个问题。当我wget的时候,说没有这个指令,那么我就得安装wget.而nodejs的地址,也是我去从nodejs的官网查找的。所以碰到问题,具体问题具体分析。查看我们建立的镜像。micall@micall-ThinkPad:~/docker/nodejs_web_app$sudodockerimagesREPOSITORYTAGIMAGEIDCREATEDVIRTUALSIZEminimicall/node_web0.1730770dff17f6minutesago268.7MBcentoscentos670441cac1ed52weeksago215.8MBubuntu14.045506de2b643b4weeksago199.3MB启动我们的镜像:sudodockerrun-i-t--rm\>-p3000:3000\>-v`pwd`:/src\>minimicall/node_web:0.1这时候我们已经进入到了这个镜像启动的容器里面了。root@d80a2ed6b4c0:/src#执行下列命令root@d80a2ed6b4c0:/src#npminstall--quiet>/dev/nullnpmWARNengineformidable@1.0.13:wanted:{"node":"/dev/nullroot@d80a2ed6b4c0:/src#lsDockerfileDockerfile~index.js~package.jsonserver.jssrcDockerfile.centosindex.jsnode_modulespackage.json~server.js~root@d80a2ed6b4c0:/src#nodemonserver.js22Nov14:37:31-[nodemon]v1.2.122Nov14:37:31-[nodemon]torestartatanytime,enter`rs`22Nov14:37:31-[nodemon]watching:*.*22Nov14:37:31-[nodemon]starting`nodeserver.js`Listeningonport3000这个时候用浏览器打开:,会的到如下结果。{"status":"ok"}

启动node服务

ctrl+c后可以重启服务不node

1、在命令控制台按Ctrl+C,终止当前所运吵渗租行的代码

2、然后继续nodefilename.js,即可重启node.js

自动重启Node服务

NodeSupervisor原本是用于服务器上Node.js应用崩溃的时候,自动重新启动。当然它也可以喊雹监控你的项目的js文件变化,自动重启来方升兆便调试。

安装sudonpminstallsupervisor-g,或者使用sudocnpminstallsupervisor-g。

使用方法:

1、关掉之前开启的node服务。

2、然后在项目路径下使用命令:supervisoryourApp.js来开启Supervisor。它会开启node服务,并不停的检测文件变化,当JS文件内容修改后,自动重启服务,很方便。

如何用命令行开启nodejs搭建web服务器?

首先,需要安装nodejs,这个可以去官网下载,目前我本地安装的v0.12版本。

安装完成后可以通过命令行测试安装是否成功,输入:node-v,应该会显示当前安装node版本号。

本文中用到的模块,都是nodejs核心模块,不需要从外部下载,如果有需要,可以使用以下命令安装:npminstallxxx。

开始

下一步,新建js文件,可以命名为server.js,代码如下:

varhttp=require('http');

varurl=require('url');

varpath=require('path');

varfs=require('fs');

vardir,arg=process.argv[2]||'';//命芦裂袭令行第三个参数,用来接收目录,可为空,相对当前server.js文件的目录名称

//比如使用命令nodeserverdebug,意思就是debug文件夹与server.js文件同级

//且你想以debug文件夹启动web服务

http.createServer(function(req,res){

varpathname=__dirname+url.parse(req.url).pathname;

[linux运维]?1、下载最新node.js二进制源码安装包(29MB),V8.2.1更新于2017年7月20日?

wget?-c?

wget是一个Linux下载文件的工具,centos自带。

wget?-c?是断点续传下载方式,后面的URL就是提供下载文件的地址

默认获取的文件地址在/root目录下,命令pwd显示当前目录源带.

??2、安装必要的编译软件?吖米yum?install?gcc?gcc-c++?yum?=?Yellow?dog?Updater,?Modified。改良黄狗更新器,centos自带智能包管理器。?中途询问,输入y:在线下载安装?d:只下载不安装?N:不下载不安装

Is?this?ok?[y/d/N]?:y

??3、解压源码tar?-zxvf?node-v8.2.1.tar.gz当前目录/root/就会多一个node-v8.2.1的文件夹-z:透过gzip的支持进行压缩/解压缩:此时文件名最好为*.tar.gz-x:解压缩的功能-v:在压缩/解压缩的过程中,将正在处理文件名显示出来

f?filename:-f后面要立刻接被处理的文件名.

??4、编译node源码包?1)进入到node源码包解压目录?cd?node-v8.2.1指定NodeJS安装位置./configure?--prefix=/usr/local/node?不指定prefix,则可执行文件默认放在/usr?/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。其它的资源文件放在/usr?/local/share。你要卸载这个程序,要么在原来的make目录下用一次make?uninstall(前提是make文件指定过uninstall),要么去上述目录里面把相关的文件一个个手工删掉。?执行安装文件,足足等了40多分钟

make??make?install

??4、添加环境变量???创建并打开新文件?不存在node.sh文件?[root@localhost?node-v8.1.3]#?vim?/etc/profile.d/node.sh??输入node安装位置的bin目录所在位置?export?PATH=$PATH:/usr/local/node/binESC?输入:wq?提示:?命令输入错了vim-bash:?rt:?command?not?found-bash:?vim:?command?not?found[解决]i.?那么如何安装?vim?呢?输入rpm?-qa|grep?vim?命令,?陪兄如果?vim?已经正确安装,会返回下面的三行代码:root@server1?[~]#?rpm?-qa|grep?vimvim-enhanced-7.0.109-7.el5vim-minimal-7.0.109-7.el5vim-common-7.0.109-7.el5?如果少了其中的某一条,比如?vim-enhanced?的,就用命令?yum?-y?install?vim-enhanced?来安装:yum?-y?install?vim-enhanced?如果上面的三条一条都没有返回,?可以直接用?yum?-y?install?vim*?命令yum?-y?install?vim*

??使用su?root?source?/etc/profile.d/node.sh?=.?/etc/profile.d/node.sh?[不间断运行nodejs服务]?npm?install?forever?-g?forever?start?app.js

node实现自启动服务

对于nodeapp.js启动服务的话,遇到不可预测的错误时,服务停止后会影响网站或者系统手者的正常运行,,服务的自启动就显得袜薯棚非常的重要。

npminstall-gnodemon

安装结束后的使用方告则法

nodemonapp.js

服务启动成功。

linux如何后台运行node服务?

在你的任意目录输入命令:npminstallpm2-g

1.找到全局环境PATH路径

输入命令:echo$PATH

回车后:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

你的路径和我的可能不一样,但没关系,你可以选择任何一个以:隔开的路径做为系统环境路径,我通常会选/usr/local/bin

2:找到pm2的安装路径

在上面输入npminstallpm2-g全局安装时

/usr/sbin/nodejs/bin/pm2-/usr/sbin/nodejs/lib/node_modules/pm2/bin/pm2

/usr/sbin/nodejs/bin/pm2是安装路径(你的可能和我的不一样)

3.好了都找到了,

就重要的一步要开始了,睁大你的双眼。

命令为:ln-s/usr/sbin/nodejs/bin/空袜衡pm2/usr/local/bin/(注意空格)

格式:ln-s空格pm2安装路径空格系统环境路径

OK,搞定,接下来验证一把…

[root@iZmwyb7v60px1zZ~]#pm2list

回车...

$pm2startapp.js#启动app.js应用程序

$pm2startapp.js–name=”api”#启动应用程序并命名为“api”

$pm2startapp.js–watch#当文件变化时自动重启应用

$pm2startscript.sh#启动好销bash脚本

$pm2list#列表PM2启斗做动的所有的应用程序

$pm2monit#显示每个应用程序的CPU和内存占用情况

$pm2show[app-name]#显示应用程序的所有信息

$pm2logs#显示所有应用程序的日志

$pm2logs[app-name]#显示指定应用程序的日志

$pm2stopall#停止所有的应用程序

$pm2stop0#停止id为0的指定应用程序

$pm2restartall#重启所有应用

$pm2reloadall#重启clustermode下的所有应用

$pm2gracefulReloadall#Gracefulreloadallappsinclustermode

$pm2deleteall#关闭并删除所有应用

$pm2delete0#删除指定应用id0

$pm2scaleapi10#把名字叫api的应用扩展到10个实例

$pm2reset[app-name]#重置重启数量

$pm2startup#创建开机自启动命令

$pm2save#保存当前应用列表

$pm2resurrect#重新加载保存的应用列表

$pm2update#Saveprocesses,killPM2andrestoreprocesses

$pm2generate#Generateasamplejsonconfigurationfile

node本地服务启动报Error:listenEADDRINUSE,80端口被占用解决方法

1.第一步,根据端口号岁吵查找对应的进程号

netstat-ano|findstr80//列出进程极其占用的端口,且包含80

2.第二步,据进程号寻找进程名称

tasklist|findstr8156

3.找到是node.exe占用巧雀厅后,杀孝隐死进程

taskkill/f/imnode.exe

node是怎么启服务

下面是以express框胡穗衫架为例,启动node服务的三种方法(已测试),使用族基express安装的文件如下:

一、使用node命令启动

nodeserver/bin/www1

二、使用webStorm启动

1,打开webStorm,点裤腔击运行(run)下的编辑配置(EditConfiguration)

2,添加新的配置

3,命名并选择要执行的文件

选择要执行bin/www文件

4,启动node服务

三、pm2启动

1安装pm2

cnpmi-gpm21

是否安装成功,可检查版本pm2-v

2启动服务

pm2startserver/bin/www1

pm2是一个带有负载均衡功能的Node应用的进程管理器,pm2启动后,我们不需要另开一个窗口或停掉服务,便可以进行后续操作?

pm2可以通过配置,启动多个node服务,pm2list可以查看当前启动的所有node服务

如何使用Node.js爬取任意网页资源并输出PDF文件到本地

需求:

使用Node.js爬取网页资源,开箱即用的配置

将爬取到的网页内容以PDF格式输出

如果你是一名技术人员,那么可以看我接下来的文章,否则,请直接移步到我的github仓库,直接看文档使用即可

仓库地址:附带文档和源码

本需求使用到的技术:Node.js和puppeteer

puppeteer官网地址: puppeteer地址

Node.js官网地址:链接描述

Puppeteer是谷歌官方出品的一个通过DevTools协议控制headless Chrome的Node库。可以通过Puppeteer的提供的api直接控制Chrome模拟大部分用户操作来进行UI Test或者作为爬虫访问页面来收集数据。

环境和安装

Puppeteer本身依赖6.4以上的Node,但是为了异步超级好用的async/await,推荐使用7.6版本以上的Node。另外headless Chrome本身对服务器依赖的库的版本要求比较高,centos服务器依赖偏稳定,v6很难使用headless Chrome,提升依赖版本可能出现各种服务器问题(包括且不限于无法使用ssh),最好使用高版本服务器。(建议使用最新版本的Node.js)

小试牛刀,爬取京东资源

const puppeteer= require('puppeteer');//引入依赖

(async()=>{//使用async函数完美异步

const browser= await puppeteer.launch();//打开新的浏览器

const page= await browser.newPage();//打开新的网页

await page.goto('');//前往里面'url'的网页

const result= await page.evaluate(()=>{//这个result数组包含所有的图片src地址

let arr= [];//这个箭头函数内部写处理的逻辑

const imgs= document.querySelectorAll('img');

imgs.forEach(function(item){

arr.push(item.src)

})

return arr

});

//'此时的result就是得到的爬虫数据,可以通过'fs'模块保存'

})()

复制过去使用命令行命令 ` node文件名 `就可以运行获取爬虫数据了这个 puppeteer的包,其实是替我们开启了另一个浏览器,重新去开启网页,获取它们的数据。

上面只爬取了京东首页的图片内容,假设我的需求进一步扩大,需要爬取京东首页中的所有<a>标签对应的跳转网页中的所有 title的文字内容,最后放到一个数组中。

我们的async函数上面一共分了五步,只有 puppeteer.launch(),browser.newPage(), browser.close()是固定的写法。

page.goto指定我们去哪个网页爬取数据,可以更换内部url地址,也可以多次调用这个方法。

page.evaluate这个函数,内部是处理我们进入想要爬取网页的数据逻辑

page.goto和page.evaluate两个方法,可以在async内部调用多次,那意味着我们可以先进入京东网页,处理逻辑后,再次调用page.goto这个函数

注意,上面这一切逻辑,都是puppeteer这个包帮我们在看不见的地方开启了另外一个浏览器,然后处理逻辑,所以最终要调用browser.close()方法关闭那个浏览器。

这时候我们对上一篇的代码进行优化,爬取对应的资源。

const puppeteer= require('puppeteer');

(async()=>{

const browser= await puppeteer.launch();

const page= await browser.newPage();

await page.goto('');

const hrefArr= await page.evaluate(()=>{

let arr= [];

const aNodes= document.querySelectorAll('.cate_menu_lk');

aNodes.forEach(function(item){

arr.push(item.href)

})

return arr

});

let arr= [];

for(let i= 0; i< hrefArr.length; i++){

const url= hrefArr[i];

console.log(url)//这里可以打印

await page.goto(url);

const result= await page.evaluate(()=>{//这个方法内部console.log无效

return$('title').text();//返回每个界面的title文字内容

});

arr.push(result)//每次循环给数组中添加对应的值

}

console.log(arr)//得到对应的数据可以通过Node.js的 fs模块保存到本地

await browser.close()

})()

上面有天坑 page.evaluate函数内部的console.log不能打印,而且内部不能获取外部的变量,只能return返回,

使用的选择器必须先去对应界面的控制台实验过能不能选择DOM再使用,比如京东无法使用querySelector。这里由于

京东的分界面都使用了jQuery,所以我们可以用jQuery,总之他们开发能用的选择器,我们都可以用,否则就不可以。

接下来我们直接来爬取Node.js的官网首页然后直接生成PDF

无论您是否了解Node.js和puppeteer的爬虫的人员都可以操作,请您一定万分仔细阅读本文档并按顺序执行每一步

本项目实现需求:给我们一个网页地址,爬取他的网页内容,然后输出成我们想要的PDF格式文档,请注意,是高质量的PDF文档

第一步,安装Node.js,推荐,Node.js的中文官网下载对应的操作系统包

第二步,在下载安装完了Node.js后,启动windows命令行工具(windows下启动系统搜索功能,输入cmd,回车,就出来了)

第三步需要查看环境变量是否已经自动配置,在命令行工具中输入 node-v,如果出现 v10.***字段,则说明成功安装Node.js

第四步如果您在第三步发现输入node-v还是没有出现对应的字段,那么请您重启电脑即可

第五步打开本项目文件夹,打开命令行工具(windows系统中直接在文件的url地址栏输入cmd就可以打开了),输入 npm i cnpm nodemon-g

第六步下载puppeteer爬虫包,在完成第五步后,使用cnpm i puppeteer--save命令即可下载

第七步完成第六步下载后,打开本项目的url.js,将您需要爬虫爬取的网页地址替换上去(默认是)

第八步在命令行中输入 nodemon index.js即可爬取对应的内容,并且自动输出到当前文件夹下面的index.pdf文件中

TIPS:本项目设计思想就是一个网页一个PDF文件,所以每次爬取一个单独页面后,请把index.pdf拷贝出去,然后继续更换url地址,继续爬取,生成新的PDF文件,当然,您也可以通过循环编译等方式去一次性爬取多个网页生成多个PDF文件。

对应像京东首页这样的开启了图片懒加载的网页,爬取到的部分内容是loading状态的内容,对于有一些反爬虫机制的网页,爬虫也会出现问题,但是绝大多数网站都是可以的

const puppeteer= require('puppeteer');

const url= require('./url');

(async()=>{

const browser= await puppeteer.launch({ headless: true})

const page= await browser.newPage()

//选择要打开的网页

await page.goto(url,{ waitUntil:'networkidle0'})

//选择你要输出的那个PDF文件路径,把爬取到的内容输出到PDF中,必须是存在的PDF,可以是空内容,如果不是空的内容PDF,那么会覆盖内容

let pdfFilePath='./index.pdf';

//根据你的配置选项,我们这里选择A4纸的规格输出PDF,方便打印

await page.pdf({

path: pdfFilePath,

format:'A4',

scale: 1,

printBackground: true,

landscape: false,

displayHeaderFooter: false

});

await browser.close()

})()

文件解构设计

数据在这个时代非常珍贵,按照网页的设计逻辑,选定特定的href的地址,可以先直接获取对应的资源,也可以通过再次使用 page.goto方法进入,再调用 page.evaluate()处理逻辑,或者输出对应的PDF文件,当然也可以一口气输出多个PDF文件~

这里就不做过多介绍了,毕竟 Node.js是可以上天的,或许未来它真的什么都能做。这么优质简短的教程,请收藏

或者转发给您的朋友,谢谢。

阅读剩余
THE END