node.js&pm2搭建node生產環(huán)境

centos 6.5 x64為例赫舒,
node.js下載地址https://nodejs.org/en/download/stable/

下載截圖

建議采用穩(wěn)定編譯過的版本帽借,source code稍麻煩鸠天,編譯過的直接可用,安裝超級簡單若锁,紅色的是centos X64可用地址访得。
https://nodejs.org/dist/v5.7.1/node-v5.7.1-linux-x64.tar.xz

1、下載安裝包

[root@localhost software]# wget http://nodejs.org/dist/v5.7.1/node-v5.7.1-linux-x64.tar.xz
--2016-03-06 14:17:04--  http://nodejs.org/dist/v5.7.1/node-v5.7.1-linux-x64.tar.xz
Resolving nodejs.org... 104.20.22.46, 104.20.23.46
Connecting to nodejs.org|104.20.22.46|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8374600 (8.0M) [application/x-xz]
Saving to: “node-v5.7.1-linux-x64.tar.xz”

100%[=====================================================================================================================================================>] 8,374,600   41.5K/s   in 2m 22s  

2016-03-06 14:19:37 (57.7 KB/s) - “node-v5.7.1-linux-x64.tar.xz” saved [8374600/8374600]


原始https鏈接容易下不下來,看網(wǎng)絡情況们豌,可以去掉s后下載快些望迎。

2、解壓文件tar.xz

因為是tar.xz結尾的文件轿亮,要xz一下,再tar一下但骨。

[root@localhost software]# xz -d node-v5.7.1-linux-x64.tar.xz 
[root@localhost software]# tar -xvf node-v5.7.1-linux-x64.tar 
ode-v5.7.1-linux-x64/
node-v5.7.1-linux-x64/bin/
node-v5.7.1-linux-x64/bin/npm
node-v5.7.1-linux-x64/bin/node
node-v5.7.1-linux-x64/share/
node-v5.7.1-linux-x64/share/man/
node-v5.7.1-linux-x64/share/man/man1/
node-v5.7.1-linux-x64/share/man/man1/node.1
node-v5.7.1-linux-x64/share/systemtap/
node-v5.7.1-linux-x64/share/systemtap/tapset/
node-v5.7.1-linux-x64/share/systemtap/tapset/node.stp
node-v5.7.1-linux-x64/share/doc/
node-v5.7.1-linux-x64/share/doc/node/
node-v5.7.1-linux-x64/share/doc/node/gdbinit
node-v5.7.1-linux-x64/LICENSE
node-v5.7.1-linux-x64/include/
node-v5.7.1-linux-x64/include/node/
node-v5.7.1-linux-x64/include/node/zconf.h
node-v5.7.1-linux-x64/include/node/uv-sunos.h

[root@localhost software]# cd node
[root@localhost node]# cd bin
[root@localhost bin]# ./node -v
v5.7.1

等待解壓完成补履,建議把解壓后的目錄改為node贬蛙,或者其他有意義的名字,不然node升級太快在原有基礎上升級但是文件目錄顯示的版本名又不匹配。

3绕沈、配置node全局運行

export NODE_HOME=/file/software/node
export PATH=$NODE_HOME/bin:$PATH 
#找到下邊這一行添加進去,記得你自己的路徑搞對了。
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

重啟一下試試看,node,npm都可以全局啟用盗誊。

推薦上面的全局配置方式长捧,當然配置軟鏈接也可以全局命令行哑子,這個不推薦。


[root@localhost bin]# ln -s /file/software/node/bin/node /usr/local/bin/node
[root@localhost bin]# ln -s /file/software/node/bin/npm  /usr/local/bin/npm
[root@localhost bin]# cd /
[root@localhost /]# dir
bin  boot  cgroup  dev  etc  file  home  lib  lib64  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var
[root@localhost /]# npm -v
3.6.0
[root@localhost /]# 

之前基本的環(huán)境已經搭建完成,但是光有這個還不足夠。

4、pm2保駕護航

forever已經out了,嚴重推薦pm2方式運行nodejs,這是最好的,沒有之一狂芋。
內建負載均衡(使用 Node cluster 集群模塊)
后臺運行
0 秒停機重載屑柔,我理解大概意思是維護升級的時候不需要停機.
具有 Ubuntu 和 CentOS 的啟動腳本
停止不穩(wěn)定的進程(避免無限循環(huán))
控制臺檢測
提供 HTTP API
遠程控制和實時的接口 API ( Nodejs 模塊,允許和 PM2 進程管理器交互 )
pm2官網(wǎng)http://pm2.keymetrics.io/

[root@localhost /]# npm install -g pm2
開始下載安裝文件
  │ └── minimist@0.0.8 
  ├── moment@2.11.2 
  ├─┬ nssocket@0.6.0 
  │ └── lazy@1.0.11 
  ├── pidusage@1.0.1 
  ├─┬ pm2-axon@2.0.9 
  │ ├── amp@0.3.1 
  │ ├── amp-message@0.1.2 
  │ ├── configurable@0.0.1 
  │ └── escape-regexp@0.0.1 
  ├─┬ pm2-axon-rpc@0.3.6 
  │ ├─┬ commander@1.0.5 
  │ │ └── keypress@0.1.0 
  │ └── json-stringify-safe@5.0.1 
  ├─┬ pm2-deploy@0.2.1 
  │ ├── async@1.4.2 
  │ └── tv4@1.0.18 
  ├─┬ pm2-multimeter@0.1.2 
  │ └── charm@0.1.2 
  ├── pmx@0.6.1 
  ├── semver@5.1.0 
  ├── shelljs@0.6.0 
  ├─┬ source-map-support@0.4.0 
  │ └─┬ source-map@0.1.32 
  │   └── amdefine@1.0.0 
  └─┬ vizion@0.2.12 
    └── async@0.9.0 

runTopLevelLifecycles     ▌ ╢████████████████████████████████████████████████████████████████████████████████
npm WARN optional Skipping failed optional dependency /pm2/chokidar/fsevents:
runTopLevelLifecycles     ? ╢████████████████████████████████████████████████████████████████████████████████
npm WARN notsup Not compatible with your operating system or architecture: fsevents@1.0.8
runTopLevelLifecycles     ? ╢████████████████████████████████████████████████████████████████████████████████

成功。

5、測試個helloworld

helloworld.js

var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World\n'); 
}).listen(1337, "127.0.0.1"); 
console.log('Server running at http://127.0.0.1:1337/');

pm2啟動試試看

[root@localhost www]# pm2 start helloworld.js --name 'helloworld'
[PM2] Spawning PM2 daemon
[PM2] PM2 Successfully daemonized
[PM2] Starting helloworld.js in fork_mode (1 instance)
[PM2] Done.
┌────────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────────────┬──────────┐
│ App name   │ id │ mode │ pid  │ status │ restart │ uptime │ memory      │ watching │
├────────────┼────┼──────┼──────┼────────┼─────────┼────────┼─────────────┼──────────┤
│ helloworld │ 0  │ fork │ 2251 │ online │ 0       │ 0s     │ 14.715 MB   │ disabled │
└────────────┴────┴──────┴──────┴────────┴─────────┴────────┴─────────────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

[root@localhost www]#pm2 monit

是不是很神奇获诈,接下來把pm2加入系統(tǒng)啟動中层扶。

[root@localhost www]# pm2 startup centos
[PM2] Generating system init script in /etc/init.d/pm2-init.sh
[PM2] Making script booting at startup...
[PM2] /var/lock/subsys/pm2-init.sh lockfile has been added
[PM2] -centos- Using the command:
      su -c "chmod +x /etc/init.d/pm2-init.sh; chkconfig --add pm2-init.sh"

[PM2] Done.
[root@localhost www]# pm2 save
[PM2] Dumping processes
要保存一下!

還有更厲害烙荷。
先去pm2官網(wǎng)上注冊個賬號镜会,收費的更好些,我們看下free版本终抽。

[root@localhost ~]# pm2 link key1 ke2 [62server]
[Keymetrics.io] Using (Public key: yklukcus7ugg7u6) (Private key: fhgynshuxtahahd)
[Keymetrics.io] [Agent created] Agent ACTIVE - Web Access: https://app.keymetrics.io/

key1和key2是注冊后官網(wǎng)給的戳表。

系統(tǒng)提供監(jiān)控的key

系統(tǒng)監(jiān)控

6、補充問題昼伴,如何開放端口

[root@localhost ~]# /sbin/iptables -I INPUT -p tcp --dport 1337 -j ACCEPT
[root@localhost ~]# /etc/rc.d/init.d/iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
[root@localhost ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:1337 

全文完匾旭。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市圃郊,隨后出現(xiàn)的幾起案子价涝,更是在濱河造成了極大的恐慌,老刑警劉巖持舆,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件色瘩,死亡現(xiàn)場離奇詭異,居然都是意外死亡逸寓,警方通過查閱死者的電腦和手機居兆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竹伸,“玉大人泥栖,你說我怎么就攤上這事。” “怎么了吧享?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵魏割,是天一觀的道長。 經常有香客問我钢颂,道長钞它,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任甸陌,我火速辦了婚禮,結果婚禮上盐股,老公的妹妹穿的比我還像新娘钱豁。我一直安慰自己,他們只是感情好疯汁,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布牲尺。 她就那樣靜靜地躺著,像睡著了一般幌蚊。 火紅的嫁衣襯著肌膚如雪谤碳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天溢豆,我揣著相機與錄音蜒简,去河邊找鬼。 笑死漩仙,一個胖子當著我的面吹牛搓茬,可吹牛的內容都是我干的。 我是一名探鬼主播队他,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼卷仑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了麸折?” 一聲冷哼從身側響起锡凝,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垢啼,沒想到半個月后窜锯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡芭析,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年衬浑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片放刨。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡工秩,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情助币,我是刑警寧澤浪听,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站眉菱,受9級特大地震影響迹栓,放射性物質發(fā)生泄漏。R本人自食惡果不足惜俭缓,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一克伊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧华坦,春花似錦愿吹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至歹袁,卻和暖如春坷衍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背条舔。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工枫耳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人孟抗。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓嘉涌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親夸浅。 傳聞我的和親對象是個殘疾皇子仑最,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容