<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 安裝 ~~~ npm install pm2 -g ~~~ <br> ## CLI 自動補全 ~~~bash pm2 completion install ~~~ <br> <br> # 常用命令 PM2會保留您的進程列表,以便能夠輕松啟動,重新啟動和停止它們。 您的所有應用程序都在后臺啟動,讓您可以訪問命令行。 使用PM2 CLI與您的應用進行交互。 <br> ## 啟動 ~~~ pm2 start app.js --watch -i 2 ~~~ 參數說明: * `--watch`:監聽應用目錄的變化,一旦發生變化,自動重啟。如果要精確監聽、不見聽的目錄,最好通過配置文件。 * `-i --instances`:啟用多少個實例,可用于負載均衡。如果`-i 0`或者`-i max`,則根據當前機器核數確定實例數目。 * `--ignore-watch`:排除監聽的目錄/文件,可以是特定的文件名,也可以是正則。比如`--ignore-watch="test node_modules "some scripts""` * `-n --name`:應用的名稱。查看應用信息的時候可以用到。 * `-o --output <path>`:標準輸出日志文件的路徑。 * `-e --error <path>`:錯誤輸出日志文件的路徑。 <br> ## 查看進程狀態 ~~~ pm2 ls ~~~ <br> ## 停止進程 停止特定的應用。可以先通過`pm2 list`獲取應用的名字(--name指定的)或者進程id。 ~~~ pm2 stop app_name|app_id ~~~ 如果要停止所有應用,可以 ~~~ pm2 stop all ~~~ <br> ## 刪除進程 ~~~ pm2 delete app_name|app_id pm2 delete all ~~~ <br> ## 重啟進程 pm2 restart app <br> > 默認進程名稱是不帶.js的文件名(例如:app.js的app)。 使用--nameor -n進行更改。 ## 查看某個進程的信息 ~~~ pm2 describe app_name|app_id ~~~ ~~~ Describing process with id 0 - name app ┌───────────────────┬───────────────────────────────┐ │ status │ online │ │ name │ app │ │ version │ N/A │ │ restarts │ 0 │ │ uptime │ 53s │ │ script path │ /root/app.js │ │ script args │ N/A │ │ error log path │ /root/.pm2/logs/app-error.log │ │ out log path │ /root/.pm2/logs/app-out.log │ │ pid path │ /root/.pm2/pids/app-0.pid │ │ interpreter │ node │ │ interpreter args │ N/A │ │ script id │ 0 │ │ exec cwd │ /root │ │ exec mode │ fork_mode │ │ node.js version │ 12.4.0 │ │ node env │ N/A │ │ watch & reload │ X │ │ unstable restarts │ 0 │ │ created at │ 2019-06-12T09:33:15.361Z │ └───────────────────┴───────────────────────────────┘ ~~~ <br> <br> # Ecosystem 文件 在多個服務器上部署或使用多個CLI參數時,命令行的替代方法可以更方便地啟動應用程序。 Ecosystem文件的目的是收集所有應用程序的所有選項和環境變量。 ## 生成模板 ~~~ pm2 init ~~~ 執行后會生成文件 `ecosystem.config.js`。 具體配置見 [ecosystem file reference](https://pm2.io/doc/en/runtime/reference/ecosystem-file/) ~~~javascript module.exports = { apps : [{ name: 'API', script: 'app.js', // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/ args: 'one two', instances: 1, autorestart: true, watch: false, max_memory_restart: '1G', env: { NODE_ENV: 'development' }, env_production: { NODE_ENV: 'production' } }], deploy : { production : { user : 'node', host : '212.83.163.1', ref : 'origin/master', repo : 'git@github.com:repo.git', path : '/var/www/production', 'post-deploy' : 'npm install && pm2 reload ecosystem.config.js --env production' } } }; ~~~ ## 使用 源代碼工作目錄中,可以將所有應用程序添加到進程列表中: ~~~ pm2 start ~~~ 這將運行使用 `pm2 init` 生成的`ecosystem.config.js`中定義的`apps` 。 從其他文件夾加載ecosystem文件: ~~~bash pm2 start /path/to/ecosystem.config.js ~~~ <br> ## 環境變量 為多個環境聲明變量。 每個環境鍵盤必須具有以下格式:`env_ <environment-name>`。 <br> app進程能夠以兩種環境啟動 `development` 和 `production`。 ~~~javascript module.exports = { apps : [{ name: "app", script: "./app.js", env: { NODE_ENV: "development", }, env_production: { NODE_ENV: "production", } }] } ~~~ <br> 要在特定環境中啟動此 app ,使用 `--env` 標志 ~~~bash pm2 start ecosystem.config.js # 從 `env` 使用變量 pm2 start ecosystem.config.js --env production # 從 `env_production` 使用變量 ~~~ <br> <br> # 監聽和重啟 在當前目錄或其子目錄中修改文件時,PM2可以自動重新啟動應用程序: ~~~bash pm2 start app.js --watch ~~~ 如果啟用了·--watch·,停止它將不會停止監聽: * `pm2 stop 0` - 不會停止監聽 * `pm2 stop 0 --watch` - 將停止監聽 * `restart --watch` 將切換watch參數。 要監聽特定路徑,請使用生態系統文件,watch可以采用字符串或路徑數組。 具體可參考文檔 [https://pm2.io/doc/en/runtime/features/watch-restart/](https://pm2.io/doc/en/runtime/features/watch-restart/) <br> <br> # 啟動鉤子 啟動鉤子的目的是保存您的進程列表并在機器重啟時將其恢復,甚至是意外的重啟。 每個操作系統都有一個特定的工具來處理啟動鉤子:PM2提供了一種生成和配置它們的簡便方法。 <br> ## 步驟 ### 保存進程列表 啟動鉤子會自動加載先前保存的進程列表。 ~~~ pm2 save ~~~ > 警告:如果刪除所有進程然后重新啟動系統(或使用pm2 update),它會復活所有進程(以前存儲在轉儲文件中)。它是為了防止“空轉儲文件”的錯誤。 <br> 如果要創建空轉儲文件,應使用: ~~~bash pm2 cleardump ~~~ <br> ### 生成開機自啟動的命令 要檢測計算機上的可用初始化系統并生成配置,請使用: ~~~ pm2 startup # 您必須以root身份運行此命令。 執行以下命令: sudo su -c env PATH=$PATH:/home/unitech/.nvm/versions/node/v4.3/bin pm2 startup <distribution> -u <user> --hp <home-path> ~~~ 在CLI中復制并粘貼此命令的輸出以設置啟動掛鉤。 > 使用NVM,更新Node.js時pm2路徑會發生變化。 每次更新后都需要運行啟動命令。 > 您可以通過 `--service-name <name>` 選項自定義服務名稱 ![](https://box.kancloud.cn/6ef17d48d7bc229aa17bf457c4f1312c_843x425.png) <br> ### 運行服務命令 ~~~ systemctl enable pm2-root ~~~ ## 禁用startup系統 ~~~bash pm2 unstartup ~~~ <br> ## 用戶權限 如果希望在另一個用戶下執行啟動掛鉤,請使用 `-u<username>` 選項和 `--hp<user_home>`: ~~~bash pm2 startup ubuntu -u www --hp /home/ubuntu ~~~ <br> ## 更新啟動 要更新啟動鉤子,請運行以下命令: ~~~bash pm2 unstartup pm2 startup ~~~ ## 兼容性 支持的Init系統包括: * **systemd**: Ubuntu >= 16, CentOS >= 7, Arch, Debian >= 7 * **upstart**: Ubuntu <= 14 * **launchd**: Darwin, MacOSx * **openrc**: Gentoo Linux, Arch Linux * **rcd**: FreeBSD * **systemv**: Centos 6, Amazon Linux <br> 如果您愿意,可以指定您使用的平臺: ~~~bash pm2 [startup | unstartup] [platform] ~~~ <br> 平臺可以是下面任何一個: ubuntu,ubuntu14,ubuntu12,centos,centos6,arch,oracle,amazon,macos,darwin,freebsd,systemd,systemv,upstart,launchd,rcd,openrc <br> <br> # 負載均衡 命令如下,表示開啟三個進程。如果`-i 0`,則會根據機器當前核數自動開啟盡可能多的進程。 ~~~ pm2 start app.js -i 3 # 開啟三個進程 pm2 start app.js -i max # 根據機器CPU核數,開啟對應數目的進程 ~~~ <br> <br> # 環境切換 在實際項目開發中,我們的應用經常需要在多個環境下部署,比如開發環境、測試環境、生產環境等。在不同環境下,有時候配置項會有差異,比如鏈接的數據庫地址不同等。 <br> 對于這種場景,pm2也是可以很好支持的。首先通過在配置文件中通過`env_xx`來聲明不同環境的配置,然后在啟動應用時,通過`--env`參數指定運行的環境。 ## 環境配置聲明 首先,在配置文件中,通過`env`選項聲明多個環境配置。簡單說明下: * `env`為默認的環境配置(生產環境),`env_dev`、`env_test`則分別是開發、測試環境。可以看到,不同環境下的`NODE_ENV`、`REMOTE_ADDR`字段的值是不同的。 * 在應用中,可以通過`process.env.REMOTE_ADDR`等來讀取配置中生命的變量。 ~~~ "env": { "NODE_ENV": "production", "REMOTE_ADDR": "http://www.example.com/" }, "env_dev": { "NODE_ENV": "development", "REMOTE_ADDR": "http://wdev.example.com/" }, "env_test": { "NODE_ENV": "test", "REMOTE_ADDR": "http://wtest.example.com/" } ~~~ ## 啟動指明環境 假設通過下面啟動腳本(開發環境),那么,此時`process.env.REMOTE_ADDR`的值就是相應的 http://wdev.example.com/ ,可以自己試驗下。 ~~~ pm2 start app.js --env dev ~~~ <br> <br> # 訪問日志 所有日志 ~~~ pm2 logs ~~~ 實時日志 ``` pm2 logs app ``` 歷史日志 `~/.pm2/logs`文件夾 ## 日志分割 使用[pm2-logrotate](https://github.com/pm2-hive/pm2-logrotate)進行日志管理使得我們的node服務的log以及pm2的log能夠得到控制,防止log過多導致把磁盤刷爆。[pm2-logrotate](https://github.com/pm2-hive/pm2-logrotate)配置看官網,需要注意的是設置retain參數,來限制日志文件數 ~~~ pm2 set pm2-logrotate:retain 10 ~~~ <br> <br> # 監控 運行如下命令,查看當前通過pm2運行的進程的狀態。 ~~~ pm2 monit ~~~ ![](https://box.kancloud.cn/3135714785d98d59fea9604776ed5b71_1895x1004.png) <br> <br> # 參考資料 [PM2 官方文檔](https://pm2.io/doc/zh/runtime/overview/) [PM2實用入門指南](https://www.cnblogs.com/chyingp/p/pm2-documentation.html) https://www.zhaofinger.com/detail/5
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看