使用PM2 启动ASP.NET Core应用程序

使用PM2 启动ASP.NET Core应用程序

PM2

PM2 (github上的源码)是开源的基于Nodejs的进程管理器,包括守护进程,监控,日志的一整套完整的功能,基本是Nodejs应用程序不二的守护进程选择,事实上它并不单单能够启动Nodejs的程序,只要是通常的脚本的程序它一样能够胜任。node

安装 PM2

首先安装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

进程管理

进程管理

CPU / 内存监控

CPU内存监控

日志分析

日志分析

经过PM2启动 ASP.NET Core应用程序

1 新建应用程序,并调整配置

你能够经过VS2015 建立,或者经过yo aspnet模板来建立,这可有可无,这里我经过yo aspnet建立了一个名为MyWebApp的应用程序centos

$ cd MyWebApp
$ dotnet restore
$ dotnet build
$ dotnet run

执行命令来看看是否建立成功,在浏览器中输入http://localhost:5000/来查看运行效果 运行效果api

2 修改配置,使用自定义端口

在网站根目录新建 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"
    ]
  },

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 //经过配置文件的形式 从新启动
相关文章
相关标签/搜索