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 //经过配置文件的形式 从新启动