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同樣的體驗。html
安裝 .Net Core 運行時mysql
按照官方文檔https://www.microsoft.com/net/core#linuxcentos :運行如下命令,安裝 .Net Core Runtimelinux
sudo yum install libunwind libicu curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?linkid=843421 sudo mkdir -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 ,推薦你們使用,通過了實際項目的檢驗。git
ZKEACMS Core 的數據庫腳本只有SQL Server, 將SQL Server數據庫轉換爲MySQL的工具很是多,這裏不作具體介紹了。github
發佈 ZKEACMS.Core 比較簡單,雙擊 Publish.cmd 便可sql
生成的文件在目錄 ZKEACMS.Core\src\ZKEACMS.WebHost\bin\Release\PublishOutput數據庫
打開 appsettings.json,加入 MySQL的數據庫鏈接字符串,結果以下json
{
"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"
}windows
咱們將發佈好的程序同winscp 程序上傳到服務器/var/www/csharpkit 目錄,具體操做可參考文章《使用WinSCP軟件在windows和Linux中進行文件傳輸》centos
定位到目錄,而後使用 dotnet 命令運行
cd /var/www/csharpkit
dotnet ZKEACMS.WebHost.dll
運行成功之後,就可使用您服務器的IP或者域名訪問了,默認訪問的端口是5000 退出SSH遠程鏈接客戶端後,發現訪問不了,這是由於 dotnet 也退出了。下面咱們就經過Jexus來管理咱們服務進程。
使用如下命令:
一、切換到Jexus配置文件目錄
cd /usr/jexus/siteconf
二、複製默認的配置文件爲test
cp default csharpkit
三、編輯csharpkit配置文件
nano csharpkit
######################
# Web Site: csharpkit
########################################
port=80
root=/ /var/www/csharpkit
hosts=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應用程序對請求進行處理。
四、啓動/重啓 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應用程序的配置全過程