Skip to content
This repository has been archived by the owner on Feb 18, 2023. It is now read-only.

Commit

Permalink
完成NODE_RUN.md
Browse files Browse the repository at this point in the history
  • Loading branch information
y2468101216 committed Nov 10, 2015
1 parent d4aebdf commit d54bef3
Show file tree
Hide file tree
Showing 3 changed files with 120 additions and 1 deletion.
118 changes: 118 additions & 0 deletions NODE_RUN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# 前言

當你把程式寫好遠端部署在VPS上,就會碰到一個問題:如何使程式永不中斷的運行?你會發現當你關掉vps的遠端連線後程式就掛了。
你需要pm2,不要再用forever。

# 安裝 pm2

安裝pm2

```
$ npm install pm2 -g
```

# 永續執行一隻app

```
$ pm2 start yourapp.js
```

現在即使你關掉了遠端連線他也會持續運轉

* option

如果你想要更新code後會自動restart的話,請使用

```
$ pm2 start yourapp.js --watch
```

他會監看該程式底下的所有目錄,如果有更新會立即restart。

# 模擬多線程(實驗階段)

javascript本身是單線程的,如果要多線程必須要寫code,聽起來就很麻煩,幸好pm2可以幫我們解決這個問題。

```
$ pm2 start yourapp.js -i 3
```

這樣就會直接啟動三個yourapp.js。

* 注意

因為是多線程,請保證你的session改用redis。

當然效果跟多開yourapp.js是相似的

# 部署

厭煩了每次都要遠端連上vps用git作部署?pm2可以給你十分良好的部署體驗。

在你的專案根目錄底下新增一個ecosystem.json

```json
{
"apps": [
{
"name": "scriptname",//pm2裡顯示的服務名稱
"script": "start.js"//實際要執行的js檔
}
],
"deploy": {
"production": {
"key": "yousshKey",//ssh key 給pm2遠端連線vps部署用
"user": "youraccount",//遠端登入的帳號
"host": "212.83.163.1",//遠端連線的IP
"ref": "origin/master",//使用哪個git branch
"repo": "git@github.com:repo.git",//git網址
"path": "/var/www/production",//部署目錄
"post-deploy": "sudo npm install && sudo pm2 startOrRestart ecosystem.json"//遠端需要執行的指令
}
}
}
```

先下setup指令部署目錄
```
$ pm2 deploy ecosystem.json production setup
```

之後再部署code

```
$ pm2 deploy ecosystem.json production
```

他就會自動安裝ndoe_module跟運行code,之後如果要更新code只需運行

```
$ pm2 deploy ecosystem.json production
```

# 重開機

有的時候你需要將server重開,但是你不想要一個一個將pm2的程式start,你可以下以下指令:


這會建立pm2的開機程式

```
$ pm2 startup
```

這會儲存pm2現在運行了哪些程式,供下次開機執行

```
$ pm2 save
```

你可以放心重開機了。

# 結語

pm2還有許多延伸,比如查看記憶體使用狀態,reload。有興趣的人可以參考官網研究一下。

# 參考資料

* pm2:<http://pm2.keymetrics.io>
2 changes: 1 addition & 1 deletion NODE_TEST.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 前言

test是程式中很重要的一環,本篇我們將會介紹如何用mocha.js跟nightwatch.js撰寫test case。
test是程式中很重要的一環,本篇我們將會介紹如何用mocha.js、nightwatch.js、cucumber.js撰寫test case。

# 原始碼

Expand Down
1 change: 1 addition & 0 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
* [NODE_EXPRESS_VIEW](NODE_EXPRESS_VIEW.md)
* [NODE_DATABASE](NODE_DATABASE.md)
* [NODE_TEST](NODE_TEST.md)
* [NODE_RUN](NODE_RUN.md)
* [TODO_LIST](TODO_LIST.md)
* [APPENDIX](APPENDIX.md)
* [LINKS](LINKS.md)
Expand Down

0 comments on commit d54bef3

Please sign in to comment.