2018-12-24 14:03:54 vmanas_ 阅读数 2134

在部署Node服务到Linux上,需要服务一直运行,那么如何一直保持服务运行

第一种:让node app 在后台运行,但是当服务器重启后并不会重新启动,所以需要将此命令加入启动项中。

nohup node app &

此外还有一种方式可以实现此种效果,将下面的命令编写到txt文本中,保存为run.sh

nohup npm start >nohup.out 2>&1 &

然后linux上输入  

sh run.sh

服务启动

第二种:网络上大都是利用forever

sudo npm install forever -g

全局安装forever,然后进入到服务代码目录,

forever start app.js

启动服务

forever list

查看当前forever启动服务目录

forever stop [pid]

停止pid下的服务

forever stopall

停止所有服务

还有一种方法就是将forever模块安装到指定位置,然后到模块下面的 forever目录下的bin目录下启动forever

2014-07-08 17:42:45 yuanguozhengjust 阅读数 10496

在一台计算机上手动跑Node项目简单,node xx.js就搞定了,想让Node项目后台运行,虽然不能直接用node命令搞定,但是在安装了forever这个包以后,还是很轻松的。不过要是在远程服务器上构建Node项目,如果没法自启动,一旦服务器重启,那么项目必须通过管理员远程手动开启才可以运行。

那么能否利用forever加启动脚本方式解决上述问题呢?答案当然是肯定的,只不过有点麻烦,而且forever官方缺少详细的配置文档。我在配置的时候也走了一些弯路,下面详细来说。


注:本文的实验环境是Ubuntu Server 12.04 LTS x86_64,在CentOS上的配置更简单一些


最早,我想着试试在/etc/rc.local中增加一句forever start xxx看看,结果发现Ubuntu(其他系统一样)就不鸟我,主要矛盾就是mongodb使用这种方式就可以跑起来,forever就不行,无奈之下,还是从/etc/init.d的角度去考虑吧。

首先感谢这篇文章和它的作者,http://cnodejs.org/topic/5059ce39fd37ea6b2f07e1a3,真是为数不多的珍贵资料!

前提是要先把forever好,方法很简单,执行如下命令就好:

npm install forever -g

安装完成后,用一个简单的Node程序测试一下:

forever start test.js
forever stop test.js
forever restart test.js

只要不提示error,就表明forever是可以用的,也就是说用forever来后台开启一个Node项目的基本条件已经具备,剩下的就是来编写一个启动脚本了。

脚本的基本内容如下,感谢原作者的辛勤劳动:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          xiyoulib
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO
# chkconfig: 345 88 08
# description: Forever for Node.js

DEAMON=/node.js/XiyouLibNodeExpress/bin/www   #这里需要填写你自己的Node项目的启动脚本文件
LOG=/node.js/log/log  #可选,日志文件目录
PID=/node.js/pid  #必填内容,用于记录forever的进程号

export PATH=$PATH:/usr/local/bin  #在这里指定一下Node的可执行程序安装目录,我的是/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules  #这里是Node类库的路径

#往下的内容就不用修改了

node=node
forever=forever

case "$1" in
    start)
        $forever start -l $LOG --pidFile $PID -a $DEAMON
        ;;
    stop)
        $forever stop --pidFile $PID $DEAMON
        ;;
    stopall)
        $forever stopall --pidFile $PID
        ;;
    restartall)
        $forever restartall --pidFile $PID
        ;;
    reload|restart)
        $forever restart -l $LOG --pidFile $PID -a $DEAMON
        ;;
    list)
        $forever list
        ;;
    *)
        echo "Usage: /etc.init.d/node {start|stop|restart|reload|stopall|restartall|list}"
        exit 1
        ;;
esac

在这里提醒一下:最好为Node项目单独在根目录下建立一个目录,如/node.js,然后权限设为754,这样可以避免一些权限问题而造成的麻烦!

由于用的是Ubuntu Server系统,上面还配置了MongoDB的启动服务,而且在其init.d的脚本中加入了以下的语句:

# Required-Start:    $all
# Required-Stop:     $all
所以在以后自己添加的时候系统会提示错误,所以在Node项目的启动脚本里我加了前面一串的说明注释,以便Ubuntu Server系统进行设置,如果在CentOS上,应该不会出现类似的问题,这点要特别注意!

即以下的说明信息:

### BEGIN INIT INFO
# Provides:          xiyoulib
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO
脚本编辑完成后使用chkconfig --list指令查看一下自己添加的服务是否生效,即3和5全部要为on才可以实现开机自启动。

如果3和5没有被置为on,那么请执行chkconfig --level 35 [你的服务名] on即可,Ubuntu Server可能会报一些warning,但是只要能将所需设置的服务的3、5变为on,其他的错误可以忽略(我感觉这是系统自己的事)。

设置完成后即可实现Node项目在Linux上的自启动,可以shutdown -r now试一下能否自启,启动好以后直接去访问一下你设定的端口号、虚拟目录神马的,如果出来想要的就大功告成了!

但是如果不对,就好好检查一些脚本,然后根据报错进行相关修改,毕竟我也是试出来的嘛!


原文地址:http://blog.csdn.net/yuanguozhengjust/article/details/37512993,转载请注明出处!

2017-01-19 17:04:26 y353027520dx 阅读数 10665

解决linux下node.js全局模块找不到的情况

今天在在linux上用npm安装了pm2准备部署node项目,结果通过pm2命令启动项目的时候报pm2找不到,这很伤,以为pm2没有安装成功,但是在node安装目录下面的bin文件夹里面调用pm2却没问题。

/usr/local/node/node-v7.3.0-linux-x64/bin/pm2 list

类似这样调用pm2 list命令查看pm2启动的项目没有任何问题。
原来linux系统上通过npm全局安装了模块以后,不能像windos下面那样自动配置环境变量,需要自己动手配置。。。好吧,自己动手吧。。。

在linux上配置环境变量很简单,只需要修改 /etc/profile 文件就可以了,在profile文件最后写上node模块的目录就可以了。

export NODE_HOME=/usr/local/node/node-v7.3.0-linux-x64/bin
export PATH=$NODE_HOME:$PATH

这里的NODE_HOME是我node.js的安装目录里面的bin目录,这样每次执行全局模块的命令就不需要写上完整的路径了。

注意,修改了环境变量之后需要注销再重新登录服务器才会生效,我是用的云服务器,直接退出系统再重新连接,然后修改的配置就生效了。

直接执行命令

pm2 list

完美运行。。。

2018-09-11 22:39:55 adminBfl 阅读数 414

 

目录

官网下载地址

安装步骤

在Linux环境下安装:下载地址

如何启动node.js项目:


官网下载地址

安装步骤

双击运行一路下一步

在cmd命令

输入  node -v 显示版本号 输入  npm -v  显示npm版本号  表示安装成功如果没有用就重启电脑

 

npm默认的仓库地址是在国外网站,速度较慢,建议大家设置到淘宝镜像。但是切换镜像是比较麻烦的。推荐一款切换镜像的工具:nrm

我们首先安装nrm,这里-g代表全局安装

npm install nrm -g

然后通过 nrm ls 命令查看npm的仓库列表,带*的就是当前选中的镜像仓库

通过nrm use taobao来指定要使用的镜像源: 淘宝延迟比较低

 

 

在Linux环境下安装:下载地址

 

 根据linux的不同版本选择32位或64位,因为我的linux的虚拟机是64位的,所以我选择的是64位二进制安装文件(Linux Binariesx64),可以右键选择在新窗口中打开链接,复制这个地址https://npm.taobao.org/mirrors/node/v10.8.0/node-v10.8.0-linux-x64.tar.xz

  回到linux虚拟机,在控制台输入 

# wget  https://npm.taobao.org/mirrors/node/v10.8.0/node-v10.8.0-linux-x64.tar.xz

  根据下载的文件可以看出它的压缩方式是.xz的方式,所以不能直接使用linux命令tar直接下载。需要下载能够解压这种格式的工具。我们可以使用yum源来安装,控制台命令:

# yum search xz 
# yum install xz.i386 
# xz -d node-v10.8.0-linux-x64.tar.xz
# tar -xf node-v10.8.0-linux-x64.tar 
# mv node-v10.8.0-linux-x64 node

在控制台输入yum search xz,在搜索到的列表中选择安装软件,如yum install xz.i386,解压完成后文件变为以.tar后缀,使用tar -xf node-v10.8.0-linux-x64.tar解压文件。 

配置nodejs

把解压好的文件改短点的名字  node

 要想node能够在全局能够使用配置环境变量

vi /etc/profile

将下面代码放到最后 这就不截图了,如果配置过jdk应该懂

#set for nodejs  
export NODE_HOME=/usr/local/node  
export PATH=$NODE_HOME/bin:$PATH
Esc键 + :wq + Enter键保存并退出

执行命令让环境变量生效

source /etc/profile

配置完成后即可在任何目录下使用node。 

使用  node -v 

如何启动node.js项目:

第一步: 下载依赖 

进入项目目录 ,进入cmd页面  输入下面命令 

npm install

 

第二步:运行

npm run dev

 

2013-08-20 15:50:44 leekwen 阅读数 9584


开始的时候觉得Linux下自动后台启动node很简单,直接后面加个&启动,后来发现这个方法不行!!!


故,在此做一下记录:


在Linux下让node自动启动一个js的最好方法是安装上一个forever插件,安上它后,一切简单。


安装过程:

[root@IOTSS64x ~]# npm install forever

修改/etc/rc.local文件,增加一行:

[root@IOTSS64x ~]# tail -n 1 /etc/rc.local
forever start /usr/local/server.js


查看forever启动列表:

[root@IOTSS64x ~]# forever list
info:    Forever processes running
data:        uid  command             script    forever pid   logfile                 uptime
data:    [0] IAHz /usr/local/bin/node server.js 18327   18329 /root/.forever/IAHz.log 0:2:29:27.885

完成……

没有更多推荐了,返回首页