PM2 (github上的源碼)是開源的基於Nodejs的進程管理器,包括守護進程,監控,日誌的一整套完整的功能,基本是Nodejs應用程序不二的守護進程選擇,事實上它並不單單能夠啓動Nodejs的程序,只要是通常的腳本的程序它一樣能夠勝任。node
首先安裝NodeJS的運行環境(可自行google方法,仍是比較簡單),在命令行方式下輸入命令:git
npm install -g pm2github
將 pm2 全局安裝到nodejs全局環境下,安裝成功後就可使用pm2命令了web
如下是pm2經常使用的命令行npm
$ pm2 start app.js # 啓動app.js應用程序 $ pm2 start app.js -i 4 # cluster mode 模式啓動4個app.js的應用實例 # 4個應用程序會自動進行負債均衡 $ pm2 start app.js --name="api" # 啓動應用程序並命名爲 "api" $ pm2 start app.js --watch # 當文件變化時自動重啓應用 $ pm2 start script.sh # 啓動 bash 腳本 $ pm2 list # 列表 PM2 啓動的全部的應用程序 $ pm2 monit # 顯示每一個應用程序的CPU和內存佔用狀況 $ pm2 show [app-name] # 顯示應用程序的全部信息 $ pm2 logs # 顯示全部應用程序的日誌 $ pm2 logs [app-name] # 顯示指定應用程序的日誌 $ pm2 flush $ pm2 stop all # 中止全部的應用程序 $ pm2 stop 0 # 中止 id爲 0的指定應用程序 $ pm2 restart all # 重啓全部應用 $ pm2 reload all # 重啓 cluster mode下的全部應用 $ pm2 gracefulReload all # Graceful reload all apps in cluster mode $ pm2 delete all # 關閉並刪除全部應用 $ pm2 delete 0 # 刪除指定應用 id 0 $ pm2 scale api 10 # 把名字叫api的應用擴展到10個實例 $ pm2 reset [app-name] # 重置重啓數量 $ pm2 startup # 建立開機自啓動命令 $ pm2 save # 保存當前應用列表 $ pm2 resurrect # 從新加載保存的應用列表 $ pm2 update # Save processes, kill PM2 and restore processes $ pm2 generate # Generate a sample json configuration file $ pm2 deploy app.json prod setup # Setup "prod" remote server $ pm2 deploy app.json prod # Update "prod" remote server $ pm2 deploy app.json prod revert 2 # Revert "prod" remote server by 2 $ pm2 module:generate [name] # Generate sample module with name [name] $ pm2 install pm2-logrotate # Install module (here a log rotation system) $ pm2 uninstall pm2-logrotate # Uninstall module $ pm2 publish # Increment version, git push and npm publish ## 沒翻譯幾個沒怎麼用過,有機會你們能夠試試
而後放幾張效果美圖json
你能夠經過VS2015 建立,或者經過yo aspnet
模板來建立,這可有可無,這裏我經過yo aspnet
建立了一個名爲MyWebApp的應用程序centos
$ cd MyWebApp $ dotnet restore $ dotnet build $ dotnet run
執行命令來看看是否建立成功,在瀏覽器中輸入http://localhost:5000/
來查看運行效果 api
在網站根目錄新建 hosting.json
文件,將應用程序綁定到兩個端口 6001和6002,內容以下瀏覽器
{ "server.urls": "http://0.0.0.0:6001;http://0.0.0.0:6002" }
接下來更新一下 Program.cs
來加載你的hosting配置, 而後使用 UseConfiguration
擴展方法將 配置信息傳遞給 WebHostBuilder
:bash
public static void Main(string[] args) { var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("hosting.json", optional: true) .Build(); var host = new WebHostBuilder() .UseConfiguration(config) .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); }
重啓使用命令 dotnet run
會看到應用會綁定到兩個端口上,而且均可以正常訪問
新建文件 start.sh
編寫實際啓動應用程序的代碼,內容以下:
dotnet MyWebApp.dll
最後將文件名配置到 project.json
中的 publishOptions
節點中,不然發佈的時候會丟失這個文件
"publishOptions": { "include": [ "wwwroot", "Views", "Areas/**/Views", "hosting.json", //添加這個文件名 "start.sh", //添加這個文件名 "appsettings.json", "web.config" ] },
經過命令將程序發佈成指定平臺,以下所示:
dotnet publish -r centos.7-x64 -c Release
將代碼打包並上傳到服務器,使用 dotnet MyWebApp.dll
命令查看是否運行正常
使用pm2 命令啓動程序
pm2 start start.sh --name mywebapp
結果如圖所示,能夠看到aspnet core 默認佔用的內存很是小哦:
其實咱們能夠經過json配置文件來定製pm2的一些配置選項,在網站目錄下新建 production.json
文件 添加內容以下:
{ "apps" : [{ // Application #1 "name" : "mywebapp", "script" : "start.sh", "cwd" : "/home/www/mywebapp", "error_file" : "/home/www/logs/mywebapp-err.log", "out_file" : "/home/www/logs/mywebapp-out.log", "max_memory_restart": "500M", "env": { "ASPNETCORE_ENVIRONMENT":"production" } }] }
這個文件在一臺服務器上運行多個網站的時候很是有用。 能夠設置日誌的目錄,自動重啓的內存閾值等,其實也能夠經過配置環境變量的方式來指定應用程序的端口,並經過配置多個節點來多進程運行同一個應用。
$ pm2 delete mywebapp // 刪除以前啓動的應用 $ pm2 start production.json //經過配置文件的形式 從新啓動