node.js部署文档(Linux版)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js部署文档(Linux版)相关的知识,希望对你有一定的参考价值。

常用命令

新建项目(需要到该项目文件目录下执行,否则日志会报错)

pm2 start bin/www  - i  max  - - name  ijhealth

只开启一个线程

node  bin/www (没有进程守护)

开启项目

pm2  start    项目名称  

关闭项目

pm2  stop    项目名称

重启项目

pm2  restart  项目名称

删除项目

pm2  delete  项目名称

列出项目

pm2  list

查看进程详细信息

pm2 show 0  /   pm2 info 0   0为进程ID

查看日志

pm2  logs    项目名称

清空日志

pm2 flush

重载日志

pm2 reloadLogs

升级PM2

npm install [email protected] -g  (安装最新版本)

pm2 updatePM2    (升级pm2)

查看帮助

pm2 --help

修改npm

npm config set registry="http://registry.npmjs.org" 

或者

npm config set registry="https://registry.npm.taobao.org

 

 

注:所有pm2 命令都可以用all来对所有项目执行操作,比如删除所有项目,可以执行以下语句

pm2 delete all

 

注:node.js有保护进程,如果要停止一个项目,需要用pm2 delete 删除,而不能用kill 杀进程,否则kill完还是会有进程产生。

 

环境安装

操作系统:Linux h5 3.10.0-327.13.1.el7.x86_64 #1 SMP Thu Mar 31 16:04:38 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

 

 

操作步骤

Node.js 环境搭建

.安装node.js

1.直接从网上(http://nodejs.cn/download/)下载压缩包node-v6.2.0-linux-x64.tar.xz,放到linuxhome目录下

 

2.解压压缩包到/home/node

cd /home

tar -zxv -f node-v6.2.0-linux-x64.tar.xz 

mkdir node

mv node-v6.2.0-linux-x64   node


技术分享

技术分享


3.设置全局变量

ln -s   /home/node/node-v6.2.0-linux-x64/bin/node    /usr/local/bin/node

ln -s   /home/node/node-v6.2.0-linux-x64/bin/npm     /usr/local/bin/npm 


技术分享

4.设置环境变量

vim  /etc/profile

    export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下内容:

    #set for nodejs

    export NODE_HOME=/home/node/node-v6.2.0-linux-x64

    export PATH=$NODE_HOME/bin:$PATH

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

  source/etc/profile验证是否安装配置成功

node  -v如果看到版本号,说明node安装成功

技术分享

技术分享


二、安装 redis

1.yum install epel-release


技术分享


    2.yum install redis


技术分享


Node.js项目初始化

一.下载代码

 

登入svncheckout最新代码

(例如:https://svn.dev.zoenet.cn:8443/svn/juyihui/client/web/zoe-jxcoverage-app/trunk

下载的所有文件夹和文件到本地,并将这些文件除了.ideanode_modules,因为这两个文件在之后运行npm install 时会安装)压缩成一个zip安装包


技术分享


二.建立新项目文件夹

/home/zoe-net(此处为本例常用项目存放处,可根据实际情况自定义)下,新建一个项目文件夹,命名为项目名

 

 mkdir new_project


技术分享


三.传递代码压缩包

将压缩包传到/home/zoe-net/new_project 下(可以使用rz命令上传文件,并将压缩包解压到new_project文件夹下

 

unzip new_project.zip


技术分享

技术分享


四.npm安装

new_project下,运行以下命令:

cd /home/zoe-net/new_project

npm install


技术分享

技术分享



安装node-gyp

 

npm install node-gyp  -g



技术分享


(注意:不安装此项有可能出现执行npm install进程卡住的问题 )

 

再安装ccap

 

npm install ccap

 

还需要安装git, gcc

$ npm update minimatch

$ npm -v minimatch

2.10.1

$ npm install -g [email protected]

/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js

[email protected] /usr/local/lib/node_modules/npm

$ npm install -g [email protected]

/usr/local/lib

└─┬ [email protected]

  └─┬ [email protected]

    ├── [email protected]

    └── [email protected]

 

$ npm -v minimatch


六.关闭防火墙

 

firewall-cmd --zone=public --add-port=4100/tcp --permanent

firewall-cmd --reload

 

注:4100处为项目需要开启的端口号


技术分享


安装cnpm

npm install cnpm -g

 

修改注册表地址

cnpm config set registry="http://172.16.34.248:7001/"  

(以上IP地址根据自身情况而定)

cnpm config list

 

安装zoenet-itom项目

cnpm install zoenet-itom

 

安装ccap

cnpm install ccap --save


七.安装PM2

之后很多操作都需要使用PM2的强大功能,这里需要先安装pm2

npm install -g pm2

 

 

八.修改配置文件中redis地址

确保配置文件中redis地址正确,配置文件config.js地址位于

项目名称下的app/config下,如果redis安装在本地,可以将

host:"localhost" 前的//去掉,在原本的host前加上//

注:一般情况下如果发布后网页卡顿无法打开,日志又没有报错,就要看看redis的地址是否是正确的。

 

技术分享


九.初始化项目

 

注意,初始化时需要进入指定项目的目录执行,否则可能会产生日志错误

例如,添加ijhealth 服务监视:

 

cd /home/zoe-net/ijhealth

pm2 start bin/www  - i  max  --name  ijhealth


技术分享


注:

Start    代表添加服务

www           bin文件夹下一个相当于执行监视的插件服务

-i 3             代表监视三个线程,一般js只用到3个以内的线程,也可以用max,表示使用最大线程数

--name ijhealth   自定义监测list中所监测服务的名字,一般和项目名称一致,方便区别

 

 

十.查看启动情况

 

pm2 list

技术分享



十一.一般操作指令

 

一般项目都在启动中,可以用重启命令,重启某个项目。例如,重启ijhealth

 pm2 restart ijhealth

 

关闭某个项目

pm2 stop 项目名字

 

 

删除某个项目

Pm2 delete 项目名字

 

十二.查看日志

 

pm2 logs

pm2 logs 具体项目名称

 

技术分享

十三.查看项目端口号

 

例如,要查看ijhealth 项目的端口号,需要进入项目的文件夹中,查看bin/www 文件

 

 cat /home/zoe-net/ijhealth/bin/www 


技术分享


技术分享



常见问题

问题一:日志提示有关时间戳问题com.zoe.timehash.zip

答:需要在对应项目下node_modules文件夹中添加com.zoe.timehash时间戳。(该时间戳的获取可以直接从已有的项目下复制黏贴)

例如:/home/zoe-net/zoenethospital/node_modules/com.zoe.timehash

 

问题二:npm连接错误“Error: connect ECONNREFUSSED.... 

 

答:问题的原因是npm源指定问题,解决方法是重新指定npm源地址。npm config set registry="http://registry.npmjs.org" 

如果上面的npm地址不行的话,大家可以试试淘宝的npm,非常稳定:

 

地址:https://registry.npm.taobao.org

 

问题三:node.js项目启动了,pm2 list显示online, pm2 logs 没有报错,但是就是无法访问页面,像是卡住了(有时候可以访问,有时候不行访问)

答:首先,先检查一下对应端口有没有开(端口号可以在bin/www中或者app.js中查询到),如果有,再检查一下对应的端口号是否已经被占用或者和其他应用程序冲突(可以pm2 stop 项目并且pm2 delete项目,然后netstat -nltp 看一下端口是否还在)。如果以上检查都没有问题,有可能是因为redis地址设置问题。先检查redis是否开启,如果开启,再到项目文件夹下app/config中的config.js里查看redis的地址是否指向正确。

 

 

问题四:Error: Cannot find module express-session

答:只需在对应项目文件夹下运行 npm install 命令就好


本文出自 “11591346” 博客,请务必保留此出处http://11601346.blog.51cto.com/11591346/1851621

以上是关于node.js部署文档(Linux版)的主要内容,如果未能解决你的问题,请参考以下文章

在 Amazon Linux 2 上将 node.js 应用程序部署到 Elastic Beanstalk 时出错

在 Node.js 中部署 angularjs 应用程序

如何在 Amazon Linux 2 平台上使用 Elastic Beanstalk 部署的 Node Js 中实现 gzip 压缩?

GitBook安装部署实操手册

如何在centos下部署Node环境

zookeeper-kafka(集群版)安装部署以及java调用工具类