使用PM2 启动ASP.NET 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 / 内存监控

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

转载于:https://my.oschina.net/redhu/blog/718864

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值