pm2 部署 node

pm2 部署 node

Node安装以及部署 去官网下载最新版本,分两种一种是源码,一种是编译后的文件。下面是官网下载地址: https://nodejs.org/en/download/current/ 分不同的版本 win linux mac 下载对应版本

  以linux Windows为例 
  Linux 下安装:(方法一)
 1.1把下载的tar.gz压缩包文件解压
 1.2解压命令: tar -zxvf (压缩包的名字.tar.gz)
 1.3解压完成后就可以在bin文件中看见 node 和 npm 文件 在当前目录下执行./node可以执行node客户端
 1.4设置客户端:两条命令 node 和 npm 
   (kun/mysofltware/node-v0.10.28-linux-x64/bin/node)node文件存放位置根据自己存放位置而定
ln -s /home/kun/mysofltware/node-v0.10.28-linux-x64/bin/node /usr/local/bin/node 
ln -s /home/kun/mysofltware/node-v0.10.28-linux-x64/bin/npm /usr/local/bin/npm

1.5在node目录下执行pwd 获取node所在的目录,要把这个目录添加到PATH环境变量
1.6执行su 输入密码切换到root用户 执行命令 vi/etc/profile

1.7在vi 环境下 点击 i 进入插入状态,在export PATH的上一行添加如下内容 (环境变量中的内容 是以冒号分割的)

PATH=$PATH:/home/kun/mysofltware/node-v0.10.26-linux-x64/bin 

编辑完成后按Esc键 然后输入 : wq 按回车保存退出。
1.8退出vi ,执行 source /etc/profile 可以让变量生效
1.9然后执行 echo $PATH ,看看输出内容是否包含自己添加的内容

Linux 下安装:(方法二)

2.1把下载的source code源码解压
2.2 以此执行以下命令 :
1、cd node-v0.10
2、 ./configure
3、Make
4、Make install cp /usr/local/bin/node /usr/sbin/

Linux 下安装:(方法三)【不推荐】

apt-get 方式 Sudo apt-get install node.js Sudo apt-get install npm

Windows 下安装比较简单下载下一步(不赘述)安装redis数据库

3.1 下载源码,解压缩后编译源码。

wget http://download.redis.io/releases/redis-2.8.3.tar.gz
(http://download.redis.io/releases/redis-2.8.3.tar.gz)
tar xzf redis-2.8.3.tar.gz
cd redis-2.8.3
make

3.2编译完成后,在Src目录下,有四个可执行文件redis-server、redis-benchmark、 redis-cli和redis.conf。然后拷贝到一个目录下。

mkdir /usr/redis

cp redis-server /usr/redis 
cp redis-benchmark /usr/redis 
cp redis-cli /usr/redis 
cp redis.conf /usr/redis 
cd /usr/redis 

3.3启动Redis服务 redis-server redis.conf

3.4然后用客户端测试一下是否启动成功。
redis-cli redis> set foo bar OK redis> get foo"bar" 代码上传

4.1打包:命令
(node_modules .idea .git ne.tar.gz 这些文件不打包减小压缩包大小)
tar cvzf ne.tar.gz
./ --exclude=node_modules
--exclude=.idea
--exclude=.git
--exclude=ne.tar.gz

4.2上传:命令 $ scp ./ne.tar.gz 主机名[@IP](http://cnodejs.org/user/IP)地址:文件夹的路径

4.3 执行命令登录远程主机
ssh 主机名[@IP](http://cnodejs.org/user/IP)地址 然后会提示输入密码

4.4 cd ls 进入上传压缩包所在的目录 执行 tar -zxvf ne.tar.gz 解压文件
4.5 npm 安装环境依赖 执行命令 npm install

部署前查询DNS 端口 root 权限下

5.1 命令:

 $ netstart -ntupl 关闭防火墙root权限下

6.1firewall-cmd --zone=public --add-port=9010/tcp --permanent 6.2 firewall-cmd --reload注:9010处为项目需要开启的端口号 安装 pm2

7.1 su 获得 root 权限下下载pm2
命令: 全局安装: npm install pm2 -g
启动: pm2 start www 启动进程

8.2 安装开机自启动 在root 权限下 执行如下命令:
pm2 startup
pm2 save
9.3 一些常用pm2 命令
查看启动状况 :pm2 list
重启项目: pm2 restart
关闭: pm2 stop

使用命令说明:
参数说明:
–watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。

-i –instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。

–ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。
比如 –ignore-watch=”test node_modules “some scripts”“

-n –name:应用的名称。查看应用信息的时候可以用到。

-o –output :标准输出日志文件的路径。

-e –error:错误输出日志文件的路径。

–interpreter:the interpreter pm2 should use for executing app (bash, python…)。
比如你用的coffee script来编写应用。

完整命令行参数列表:地址

pm2 start app.js –watch -i 2

重启:
pm2 restart app.js

停止:
停止特定的应用。可以先通过pm2 list获取应用的名字(–name指定的)或者进程id。
pm2 stop app_name|app_id

如果要停止所有应用,可以:
pm2 stop all

删除

pm2 stop app_name|app_id 
pm2 stop all

查看进程状态
pm2 list

自动重启
pm2 start app.js –watch
*这里是监控整个项目的文件

日志查看

除了可以打开日志文件查看日志外,还可以通过pm2 logs来查看实时日志。

pm2 logs

更新pm2
pm2 save# 记得保存进程状态
npm install pm2 -g
pm2 update

附pm2命令:

$ npm install pm2 -g     # 命令行安装 pm2 
$ pm2 start app.js -i 4  # 后台运行pm2,启动4个app.js 
                        # 也可以把'max' 参数传递给 start
                        # 正确的进程数目依赖于Cpu的核心数目
$ pm2 start app.js --name my-api # 命名进程
$ pm2 list               # 显示所有进程状态
$ pm2 monit              # 监视所有进程
$ 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启动文件

在项目根目录添加一个processes.json:

内容如下:

{   "apps" :
 [{
"name": "mywork",
"cwd": "/srv/node-app/current",
"script": "bin/www",
"log_date_format": "YYYY-MM-DD HH:mm Z",
"error_file": "/var/log/node-app/node-app.stderr.log",
"out_file": "log/node-app.stdout.log",
"pid_file": "pids/node-geo-api.pid",
"instances": 6,
"min_uptime": "200s",
"max_restarts": 10,
"max_memory_restart": "1M",
"cron_restart": "1 0 * * *",
"watch": false,
"merge_logs": true,
"exec_interpreter": "node",
"exec_mode": "fork",
"autorestart": false,
"vizion": false
}]
}

说明:

  • 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 start processes.json来启动。

也可以把命令写在package.json里。如下:

image.png

通过npm run pm2来启动。

启动任务命令:

          "pm2 start py文件或其他文件  -x --interpreter 程序如python"
          "pm2 start scrapy_biying_ask.py -x --interpreter python"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容