用.NetCore 编译国产老牌PHP论坛DiscuzX ,世界上最好的语言从此属于.Net 的一员
??? DiscuzX是北京康盛新創(chuàng)科技有限責(zé)任公司推出的一套通用的社區(qū)論壇軟件系統(tǒng)。自2001年6月面世以來,Discuz!已擁有15年以上的應(yīng)用歷史和200多萬網(wǎng)站用戶案例,是全球成熟度最高、覆蓋率最大的論壇軟件系統(tǒng)之一。目前最新版本Discuz! X3.4正式版于2017年8月2日發(fā)布,去除了云平臺(tái)的相關(guān)代碼,是 X3.2 的穩(wěn)定版本。?通過DiscuzX 用戶可以在不需要任何編程的基礎(chǔ)上,通過簡(jiǎn)單的設(shè)置和安裝,在互聯(lián)網(wǎng)上搭建起具備完善功能、很強(qiáng)負(fù)載能力和可高度定制的論壇服務(wù)。Discuz! 的基礎(chǔ)架構(gòu)采用世界上最流行的web編程組合PHP+MySQL實(shí)現(xiàn),是一個(gè)經(jīng)過完善設(shè)計(jì),適用于各種服務(wù)器環(huán)境的高效論壇系統(tǒng)解決方案。????作為國內(nèi)最大的社區(qū)軟件及服務(wù)提供商,Comsenz旗下的 Discuz! 開發(fā)組具有豐富的 web應(yīng)用程序設(shè)計(jì)經(jīng)驗(yàn),尤其在論壇產(chǎn)品及相關(guān)領(lǐng)域,經(jīng)過長期創(chuàng)新性開發(fā),掌握了一整套從算法,數(shù)據(jù)結(jié)構(gòu)到產(chǎn)品安全性方面的領(lǐng)先技術(shù)。使得 Discuz! 無論在穩(wěn)定性、負(fù)載能力、安全保障等方面都居于國內(nèi)外同類產(chǎn)品領(lǐng)先地位!
??????? .NET Core 是一個(gè)通用的開放源代碼開發(fā)平臺(tái)。可以使用多種編程語言針對(duì) x64、x86、ARM32 和 ARM64 處理器創(chuàng)建適用于 Windows、macOS 和 Linux 的 .NET Core 應(yīng)用。為云、IoT、客戶端 UI 和機(jī)器學(xué)習(xí)提供了框架和 API。? 最新版是 .NET Core 3.1, .Net 5 將于2020年11月發(fā)布。?
? ? ? ??作為曾經(jīng)的DiscuzX老粉絲, 要讓DiscuzX在性能上有大幅度提升, 在部署方面采用現(xiàn)代的部署環(huán)境, 想讓DiscuzX繼續(xù)發(fā)光發(fā)熱, peachpie編譯器絕對(duì)是不二之選。?下面開始介紹具體步驟:
??
一、安裝 PeachPie Visual Studio Extension
??插件下載地址?https://marketplace.visualstudio.com/items?itemName=iolevel.peachpie-vs
安裝后界面如下:
二、新建PeachPie項(xiàng)目?
由于我們的DiscuzX是一個(gè)Web項(xiàng)目, 因此我們創(chuàng)建?PeachPie ASP.Net Core Web App , 創(chuàng)建后?如下圖:
解決方案中包含兩個(gè)項(xiàng)目, Server 是 ASP.Net Core 項(xiàng)目,?在這里可以理解為承載PHP的宿主, Web1 則是PHP項(xiàng)目!
三、編譯php?
由于默認(rèn)模板中的 Peachpie.NET.Sdk/1.0.0-preview1 似乎存在bug , 經(jīng)過參考? https://github.com/iolevel/peachpie-samples , 我們將web1 項(xiàng)目 改成 Peachpie.NET.Sdk/1.0.0-preview2 ,? server項(xiàng)目中的Peachpie.AspNetCore.Web ?也改為 1.0.0-preview2版本!
接下來, 讓我們把?DiscuzX 的 upload文件夾中的所有文檔放在 Web1 項(xiàng)目中, 如圖:
然后查看項(xiàng)目
在這里我們遇到一個(gè)問題,?source\plugin\mobile 中引用了一個(gè)不存在的php文件, 我們直接把mobile 排除掉, 因?yàn)檫@個(gè)插件目前對(duì)于?DiscuzX 沒什么可用價(jià)值, 然后再編譯, 編譯結(jié)果如下:
無數(shù)警告,??沒心細(xì)看, 直接點(diǎn)Server的運(yùn)行, 結(jié)果發(fā)現(xiàn) 樣式, 圖片全沒有, (敲黑板,劃重點(diǎn)),我們需要在?Startup 的?Configure 方法中 加入下面這行代碼
app.UseStaticFiles(new StaticFileOptions { FileProvider = new PhysicalFileProvider(Path.GetFullPath("../upload/")) });?如圖:
四 運(yùn)行
點(diǎn)擊運(yùn)行后, 運(yùn)行過程中會(huì)有多個(gè)報(bào)錯(cuò), 比如
ob_end_clean 的問題已經(jīng)實(shí)現(xiàn)了, 只不過沒發(fā)布,?
點(diǎn)繼續(xù)運(yùn)行就好。?
不管任何情況, 點(diǎn)繼續(xù)就好。?
?
現(xiàn)在, 我們看到了熟悉的界面, 如下圖:?
點(diǎn)擊同意
點(diǎn)擊下一步
這里記得前提是數(shù)據(jù)庫密碼和用戶名要對(duì)!
然后你會(huì)看到安裝過程一閃而過。?
那么接下來,?界面并不能顯示出來, 表并沒有創(chuàng)建成功,?
如圖:
總結(jié):
DiscuzX?要想繼續(xù)在.Net Core 上使用,?并不是短短一兩個(gè)小時(shí)可以搞定的,?需要進(jìn)一步調(diào)整,?一些?內(nèi)容可能依然存在?peachpie沒有實(shí)現(xiàn)的情況, 因此如果你有興趣參與DiscuzX在.Net Core中的調(diào)試 ,可以訪問
https://gitee.com/maikebing/DiscuzX
如果你想了解更多有關(guān)php運(yùn)行在.Net Core 上的內(nèi)容, 可以關(guān)注 peachpie
https://github.com/peachpiecompiler/peachpie
總結(jié)
以上是生活随笔為你收集整理的用.NetCore 编译国产老牌PHP论坛DiscuzX ,世界上最好的语言从此属于.Net 的一员的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用 dotTrace 来诊断 ne
- 下一篇: PHP大势已去,PHP宝藏可为我所用