使用PM2 启动ASP.NET Core应用程序
2016-07-27 00:00
1011 查看
摘要: 使用PM2 启动ASP.NET Core应用程序
npm install -g pm2
将 pm2 全局安装到nodejs全局环境下,安装成功后就可以使用pm2命令了
以下是pm2常用的命令行
然后放几张效果美图
执行命令来看看是否创建成功,在浏览器中输入
接下来更新一下
重启使用命令
新建文件
最后将文件名配置到
dotnet publish -r centos.7-x64 -c Release
将代码打包并上传到服务器,使用
使用pm2 命令启动程序
pm2 start start.sh --name mywebapp
结果如图所示,可以看到aspnet core 默认占用的内存非常小哦:
这个文件在一台服务器上运行多个网站的时候非常有用。 可以设置日志的目录,自动重启的内存阈值等,其实也可以通过配置环境变量的方式来指定应用程序的端口,并通过配置多个节点来多进程运行同一个应用。
使用PM2 启动ASP.NET Core应用程序
PM2
PM2 (github上的源码)是开源的基于Nodejs的进程管理器,包括守护进程,监控,日志的一整套完整的功能,基本是Nodejs应用程序不二的守护进程选择,事实上它并不仅仅可以启动Nodejs的程序,只要是一般的脚本的程序它同样可以胜任。安装 PM2
首先安装NodeJS的运行环境(可自行google方法,还是比较简单),在命令行方式下输入命令:npm install -g pm2
将 pm2 全局安装到nodejs全局环境下,安装成功后就可以使用pm2命令了
以下是pm2常用的命令行
$ 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 ## 没翻译几个没怎么用过,有机会大家可以试试
然后放几张效果美图
进程管理
CPU / 内存监控
日志分析
通过PM2启动 ASP.NET Core应用程序
1 新建应用程序,并调整配置
你可以通过VS2015 创建,或者通过yo aspnet模板来创建,这无关紧要,这里我通过
yo aspnet创建了一个名为MyWebApp的应用程序
$ cd MyWebApp $ dotnet restore $ dotnet build $ dotnet run
执行命令来看看是否创建成功,在浏览器中输入
http://localhost:5000/来查看运行效果
2 修改配置,使用自定义端口
在网站根目录新建hosting.json文件,将应用程序绑定到两个端口 6001和6002,内容如下
{ "server.urls": "http://0.0.0.0:6001;http://0.0.0.0:6002" }
接下来更新一下
Program.cs来加载你的hosting配置, 然后使用
UseConfiguration扩展方法将 配置信息传递给
WebHostBuilder:
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" ] },
3 发布程序
通过命令将程序发布成指定平台,如下所示: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 //通过配置文件的形式 重新启动
相关文章推荐
- Asp.Net Mvc 使用WebUploader 多图片上传
- 远程调试 ASP.NET MVC 项目
- asp.net web api long running task
- ASP.NET页面之间传递值的几种方式
- 树莓派 Learning 001 装机 ---之 1 安装NOOBS系统
- [译]Writing Custom Middleware in ASP.NET Core 1.0
- Entity Framework添加记录时获取自增ID值
- WebService的开发、部署、调用
- 使自己做的asp.net网页适应手机浏览
- ASP.NET Core开发-读取配置文件Configuration
- Raspberry pi2串口通信
- Asp.Net 之 二维码生成
- asp.net mvc 未找到路径“/favicon.ico”的控制器或该控制器未实现 IController
- asp.net TreeView递归循环子节点生成树形菜单实例
- asp.net实现上传图片时判断图片的模式GRB或CMYK的方法
- asp.net简单页面控件赋值实现方法
- asp.net core + angular2
- WCF 无法激活服务,因为它不支持 ASP.NET 兼容性。已为此应用程序启用了 ASP.NET 兼容性
- asp.net实现的MD5加密和DES加解密算法类完整示例
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(二)-- Web Api Demo