# PM2
https://noob.tw/pm2/
守護進程管理工具,幫助管理守護的應用程式。以簡單直觀的 CLI 命令列方式進行工作。
### 安裝全域 pm2
```bash
$ sudo npm install pm2 -g
```
## pm2 管理 Nuxt 頁面
轉到背景或用 pm2 管理 process(永久運行)
```bash
$ sudo pm2 start /local/build/pm2.config.js
```
### 系統啟動時運行
```bash
$ sudo pm2 startup systemd
```
### 查看所有啟動的進程列表
```bash
$ sudo pm2 list
```
### 停止id為0的進程
```bash
$ sudo pm2 stop 0
```
### 停止所有進程
```bash
$ sudo pm2 stop all
```
### 重啟 指定/所有 進程
```bash
$ sudo pm2 restart (id|all)
```
### 刪除 指定/所有 進程
```bash
$ sudo pm2 delete (id|all)
```
### pm2 部署 Nuxt SSR 頁面
pm2.config.js 配置文件
```javascript
module.exports = {
apps: [
{
name: 'app_name', // 應用程式名稱
exec_mode: 'fork',
args: 'start',
port: 3000,
script: './.output/server/index.mjs', // 啟動檔案位址
cwd: './', // 目前工作路徑
watch: [
// 監控變化的目錄,一旦變化自動重啟
'.output',
'public',
],
ignore_watch: [
// 忽略這些目錄的變化
'node_modules',
'logs',
],
node_args: '--harmony', // node的啟動模式
env: {
// PORT: 3000,
NODE_ENV: 'development', // 設定運行環境,此時process.env.NODE_ENV的值就是development
// ORIGIN_ADDR: 'http://www.yoduao.com'
},
env_production: {
// PORT: 80,
NODE_ENV: 'production',
},
out_file: './logs/out.log', // 普通日誌路徑
error_file: './logs/err.log', // 錯誤日誌路徑
merge_logs: true,
log_date_format: 'YYYY-MM-DD HH:mm Z',
}
]
}
```
## express 部署靜態頁面
### app.js 配置文件
```javascript
const express = require("express");
const app = express();
// 部署靜態頁面 Port
app.listen(8080);
app.use('/assets', express.static('./assets'));
```
## 相關文章參考
* [pm2 中文網](https://pm2.fenxianglu.cn/docs/start)
* [使用 pm2 管理 Node.js 服務](https://noob.tw/pm2/)
* [install pm2 on aws linux](https://juejin.cn/s/install%20pm2%20on%20aws%20linux)
* [下載Putty](https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe)
* [pm2 - 用法大全](https://tn710617.github.io/zh-tw/pm2/)
* [PM2 | hackmd 筆記](https://hackmd.io/@CSIneD0STRmGlODbThwELw/rJJKCn9rp)