ZKEACMS Core 是基于 .net core 开发的,可以在 windows, linux, mac 上跨平台运行,接下来我们来看看如何在 CentOS 上使用 Jexus 托管运行 ZKEACMS,通常我们在 Linux 部署 ASP.NET Core 应用,按照微软的官方文档,我们通常需要 Nginx 搭配 Systemd (https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction), Nginx 并没有接管 Kestrel 进程,我们需要维护 2 个进程,增加了复杂度。如果你把 asp.net core 部署于 windows 上,我们可以用 IIS 来接管 Kestrel 进程,我们在 Linux 上也可以用 Jexus 来达到 IIS 一样的体验。
安装 .Net Core 运行时
按照官方文档 https://www.microsoft.com/net/core#linuxcentos :运行以下命令,安装 .Net Core Runtime
- sudo yum install libunwind libicu
- curl -sSL -o dotnet.tar.gzhttps://go.microsoft.com/fwlink/?linkid=843421
- sudomkdir -p /usr/local/dotnet && sudo tar zxf dotnet.tar.gz -C /usr/local/dotnet
- sudo ln -s /usr/local/dotnet/dotnet /usr/local/bin
- 按照《CentOS 7.2下安装Mono 5.0》安装好了Mono 5,
- 我这里是安装通用版的Jexus,通用版的Jeuxs才能使用到我们自己安装的最新版的Mono 5。安装Jexus直接使用一下命令即可 (需要在root身份下执行) :
- curl https: //jexus.org/release/install | sh
- 安装成功后会提示:OK,
- Jexus has been installed in /usr/jexus.
- 备注:
- 你可以直接安装独立版的Jexus,独立版的Jexus自带Mono,使用的是Mono的稳定版本4.8,安装命令也是一个命令就可以搞定:curl https: //jexus.org/release/x64/install.sh|sh
我使用的是腾讯云的云数据库 MySQL(Cloud Database for MySQL)是腾讯云基于全球最受欢迎的开源数据库 MySQL 专业打造的高性能分布式数据存储服务,100% 完全兼容 MySQL 协议,适用于面向关系型数据库的场景。ZKEACMS Core 默认使用的是 Oracle 官方的 Mysql 驱动,由于 Oracle 官方的 mysql 驱动有很多问题,目前还是 beta 版本,最近也不见更新,我在生产环境使用的是 Pomelo.EntityFrameworkCore.MySql ,我 ZKEACMS 的 MySQL 驱动更改为 Pomelo.EntityFrameworkCore.MySql,经测试工作良好,我已经把相关修改 pull 给 ZKEACMS。 MySQL for .NET Core - Pomelo 扩展包系列 包括 Pomelo.Data.MySql 和 Pomelo.EntityFrameworkCore.MySql ,推荐大家使用,经过了实际项目的检验。
ZKEACMS Core 的数据库脚本只有 SQL Server, 将 SQL Server 数据库转换为 MySQL 的工具非常多,这里不做具体介绍了。
发布 ZKEACMS.Core 比较简单,双击 Publish.cmd 即可
生成的文件在目录 ZKEACMS.Core\src\ZKEACMS.webHost\bin\Release\PublishOutput
打开 appsettings.json,加入 MySQL 的数据库连接字符串,结果如下
{"ConnectionStrings": {"DefaultConnection": "","Sqlite":"", "MySql": "Server=10.66.241.199;Database=ZKEACMS_Core;User Id=root;Password=xxxxxxx;"}, "ApplicationInsights": {"InstrumentationKey": ""},"Logging": {"IncludeScopes": false,"LogLevel": {"Default":"Debug","System":"Information","Microsoft":"Information"}}, "CDN": {"Enable": true, "Url": "http://cdn.zkeasoft.com/core"}, "Culture": "zh-CN"}
我们将发布好的程序同 winscp 程序上传到服务器 / var/www/csharpkit 目录,具体操作可参考文章《使用 WinSCP 软件在 windows 和 Linux 中进行文件传输》
定位到目录,然后使用 dotnet 命令运行
- cd /
- var / www / csharpkit
- dotnet ZKEACMS.WebHost.dll
运行成功以后,就可以使用您服务器的 IP 或者域名访问了,默认访问的端口是 5000 退出 SSH 远程连接客户端后,发现访问不了,这是因为 dotnet 也退出了。下面我们就通过 Jexus 来管理我们服务进程。
使用以下命令:
1、切换到 Jexus 配置文件目录
- cd /usr/jexus/siteconf
2、复制默认的配置文件为 test
- cp
- default csharpkit
3、编辑 csharpkit 配置文件
- nano csharpkit
####################### Web Site: csharpkit########################################
port=80root=/ /var/www/csharpkithosts=www.csharpkit.com #OR your.com,*.your.com
AppHost={cmd=dotnet /var/www/csharpkit/ZKEACMS.WebHost.dll; root=/var/www/csharpkit; port=0;}
配置的重点就在于 AppHost 中,需要注意的是在 AppHost 中的 port(端口号)不代表 Jexus 对外服务的 port(端口号), 而是指要转发的 Asp.Net Core 应用程序的端口号,如果在程序中使用了 UsrUrls 自定义端口则使用 UsrUrls 中填写的端口 (不建议使用 UsrUrls 自定义端口), 在没有使用 UsrUrls 自定义端口的情况下端口号设置为 0,Jexus 会在运行时与 Asp.Net Core 进行 "协商" 具体使用的端口号,避免多个应用分配,端口的麻烦和冲突的风险。 简单来说就是会将外部的请求转发到这个端口,由这个端口对应的 Asp.Net Core 应用程序对请求进行处理。
4、启动 / 重启 Jexus
当配置文件编辑完成后使用以下命令对 Jexus 进行 启动 / 重启
- # 如果已启动 Jexus:
- sh /usr/jexus/jws restart
- # 如果未启动 Jexus:
- sh /usr/jexus/jws start
启动 / 重启成功后,在浏览器中输入 ip 地址 / 域名: 端口号 例如 (http://www.csharpkit.com/) 即可访问 Asp.Net Core 应用程序
以上即是 Jexus 托管 Asp.Net Core 应用程序的配置全过程
来源: http://www.cnblogs.com/shanyou/p/6883931.html