詳細瞭解在.NET Core 上啟動並執行WordPress

來源:互聯網
上載者:User
在.NET Core 上啟動並執行 WordPress,無需安裝PHP既可跨平台運行WordPress。

在Peachpie中實現PHP所需的功能數月後,現在終於可以運行一個真實的應用程式:WordPress。

本文是基於Peachpie https://github.com/iolevel/peachpie

Peachpie是一個基於Microsoft的Roslyn的現代PHP編譯器。

在.NET上運行WordPress

流行的Phalanger項目已經證明,可以在Microsoft .NET上運行幾乎未經修改的WordPress應用。

但是這個解決方案存在著問題,與新的WordPress版本不相容。現在,Peachpie 也能夠將WordPress作為一個完全託管的應用程式運行在.NET和.NET Core上。

這隻是一個證明Peachpie仍然是一個進行中中的項目。不建議在生產環境中使用它

本篇文章主要目的是證明Peachpie真的與WordPress中使用的標準PHP相容,並展示其優點。

先決條件:

.NET Core 1.0

MySQL Server

對WordPress修改

由於Peachpie 0.5.0版本,編譯器不支援擴充有條件聲明的類,如

if (condition) { class X {} }class Y extends X {} // extending conditionally declared class

wp-includes/class-json.php:

  • 注釋條件 if (!class_exists(...))

  • 注釋第一個Services_JSON_Error類,保留第二個

這裡準備了一個修改好的WordPress版本,已經包括上面修改,使你編譯項目更容易。

.NET Core WordPress

預先修改 wp-config.php 配置了包含MySQL資料庫的憑據的檔案。使用預設連接埠3306,密碼為'' ,伺服器是'localhost'。這裡大家根據實際情況進行修改。

編譯WordPress

編譯由dotnet及其website/project.json 專案檔驅動。

{  "version": "1.0.0",   "buildOptions": {    "compilerName": "php",    "compile": "**\\*.php",    "debugType": "portable",    "xmlDoc": true  },  "dependencies": {    "Peachpie.App": "0.5.0-*"  },  "tools": {    "Peachpie.Compiler.Tools": "0.5.0-*"  },  "frameworks": {    "netcoreapp1.0": {      "dependencies": {        "Microsoft.NETCore.App": {          "type": "platform",          "version": "1.0.0"        }      }    }  }}

使用 Peachpie.Compiler.Tools 進行編譯WordPress項目。

然後有一個app 項目也就是ASP.NET Core。

static void Main() {    var root = Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory()) + "/website";     var host = new WebHostBuilder()        .UseKestrel()        .UseWebRoot(root).UseContentRoot(root) // content root with wp static files        .UseUrls("http://*:5004/")        .UseStartup<Startup>() // initialization routine, see below        .Build();     host.Run();} class Startup {    public void Configure(IApplicationBuilder app) {        Pchp.Core.Context.DefaultErrorHandler = new Pchp.Core.CustomErrorHandler(); // disables debug asserts         app.UsePhp(); // installs handler for *.php files and forwards them to our website.dll        app.UseDefaultFiles();        app.UseStaticFiles();    }}

接著還原項目,在根目錄下dotnet restore.

還原好以後cd app dotnet run

然後訪問http://localhost:5004/ ,只要MySQL 配置正確,就會跳轉至安裝介面。注意要先在資料庫中建立wordpress 資料庫。

為了證明該網站真的在.NET Core上運行,我們可以反編譯website.dll 看看。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.