您的位置:首页 > 编程语言 > ASP

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

2016-07-27 00:00 1011 查看
摘要: 使用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 / 内存监控



日志分析



通过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 //通过配置文件的形式 重新启动
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: