angularjs sill 創建項目_開源項目——博客項目MyBlogs.Core,基于.NET 5

個人博客站項目源碼,高性能低占用的博客系統,這也許是我個人目前寫過的性能最高的web項目了 。目前日均處理請求數80-120w次,同時在線活躍用戶數30-100人,數據量累計已達到100多萬條,數據庫+Redis+網站主程序同時運行在一臺2核2GB的機器上,瀏覽器頁面請求秒級響應,CPU平均使用率控制在20%左右。

e5e2fd6f74b42adfd6fbfbe2edee0080.png

演示站點

首頁_懶得勤快的博客_互聯網分享精神?masuit.com
523872d90bf2d552c8f331c9799fcb74.png

不依賴于具體的數據庫,已測試SQL Server和mysql正常,其他數據庫還請自測;也不依賴于數據庫的開發模式,code First、DB First均可自由切換。部分功能在Linux下可能無法使用,須待測,比如:硬件監測。

github

https://github.com/ldqk/Masuit.MyBlogs?github.com

老項目已經移動到分支net461

開發環境

操作系統:Windows 10 2009
IDE:Visual Studio 2019 v16.8
數據庫:MySQL 8.0
Redis:redis-server-windows 3.2

當前運行環境

操作系統:Windows Server 2008 R2
數據庫:MySQL 8.0
Redis:redis-server-windows 3.2
運行時:.NET 5
服務器配置:2核+4GB+1M

硬件要求

最低配置推薦配置
CPU1核2核
內存1GB2GB
帶寬1Mbps2Mbps
數據庫SQL Server 2008/MySQL 5SQL Server 2012/MySQL 8

主要功能

服務器性能監控

可直接在線實時監控服務器的運行狀態,包括CPU、網絡帶寬、磁盤使用率、內存占用等情況,可記錄最近一天的服務器健康狀態,通過websocket進行數據的推送,僅支持Windows,且需要Windows安裝最新的更新。

文章管理

包含文章審核、文章合并、文章列表的增刪查改、分類管理、專題管理;

服務器性能監控

可直接在線實時監控服務器的運行狀態,包括CPU、網絡帶寬、磁盤使用率、內存占用等情況,可記錄最近一天的服務器健康狀態,通過websocket進行數據的推送,僅支持Windows,且需要Windows安裝最新的更新。

文章管理

包含文章審核、文章合并、文章列表的增刪查改、分類管理、專題管理;

文章審核:當用戶在前臺頁進行投稿后,會進入審核狀態,審核通過后,才會在前臺頁的文章列表中展示出來。

文章合并:當用戶在前臺頁進行了文章的編輯后,會創建出文章的合并請求,當后臺管理進行相應的合并操作后,前臺用戶的修改才會正式生效,可以直接合并、編輯并合并和拒絕合并,拒絕時,修改人會收到相應的郵件通知。

文章操作:可對文章進行修改、新增、置頂、臨時刪除(下架)、還原、永久刪除、禁止評論等操作,編輯后的文章會生成歷史版本。支持上傳word文檔自動轉換, 文章支持按地區進行投放,支持5種投放模式。

分類管理:對文章的分類進行增刪查改和文章的移動等操作,與文章的關系:一對多。

專題管理:對文章的專題進行管理,與文章的關系:多對多。

快速分享:首頁快速分享欄目的管理。

評論和留言管理

對前臺用戶提交的留言和評論進行審核,當前臺用戶提交的內容可能包含有敏感詞時,會進入人工審核,審核成功才會在前臺頁中展示。

消息通知

站內消息包含評論、留言、投稿、文章合并等郵件通知。

郵件支持smtp和http模式,http模式的已支持mailgun服務。

公告管理

對網站的公告進行增刪查改管理。

雜項頁管理

一些通用的頁面管理,可自由靈活的創建靜態頁面。

系統設置

包含系統的全局設置、防火墻管理、網站運行日志記錄、友鏈管理、郵件模板的管理。

全局設置:網站的一些基本配置和SEO相關操作等;

防火墻

對網站的所有請求進行全局流量的攔截,讓規則內的請求阻止掉,支持黑名單、白名單、IP地址段(支持IPv4和IPv6)、國家或地區、關鍵詞審查、ASN、運營商等規則;

攔截記錄支持提交到cloudflare等第三方cdn服務商;

防火墻審計可一鍵加黑白名單或提交到上層防火墻服務;

防火墻記錄了詳細的日志,便于查看審計。

菜單管理

菜單支持拖拽配置,樹狀無級菜單,3種子菜單類型。

廣告管理

主動式的廣告投放管理,支持競價排名,支持在banner、邊欄、頁內、列表內的廣告展示,競價或權重的高低決定廣告出現的概率。

贊助管理

對網站打賞進行增刪查改操作,自動掩碼。

搜索統計

當前臺用戶每Session周期內的關鍵詞搜索,不重復的關鍵詞將會被記錄,用于熱詞統計,僅記錄最近一個月內的所有搜索關鍵詞,用于統計當月、7天以及當天的搜索熱詞。

任務管理

hangfire的可視化管理頁面

文件管理

服務器文件的在線管理,支持瀏覽、預覽、壓縮、解壓縮、創建文件夾、上傳、下載、打包下載等文件的基本操作。

站內搜索

站內搜索支持全文檢索,基于自定義詞庫。

友情鏈接

友情鏈接支持自助上鏈,回鏈檢測,自動排名等。

全局功能

網站全局時間將根據訪客所在時區自動進行轉換;

圖片上傳支持自定義水印文字;

圖片上傳支持本地存儲、gitlab倉庫、阿里云oss等;

前臺數據帶緩存;

對于需要前臺展示的用戶數據,將進行脫敏處理后進行展示;

支持文章,分類,評論,單文章的rss訂閱。

項目架構

項目采用單體架構,方便部署和配置,傳統的MVC模式,http://ASP.NET Core MVC+EF Core的簡單架構。
Controller→Service→Repository→DbContext

0fa430124b9f2898da08a43c66843220.png

現在只有這么一個項目了,額外的引用了Masuit.Tools.Core這個項目作為工具庫,因為.NET Core無處不在的依賴注入,使得數據庫和ORM之間沒有了強依賴的關系,這使得更換數據庫的成本相對較低,所以所有的代碼都全部放在了一起。

文件夾定義:

App_Data:存放網站的一些常規數據,以文本的形式存在,這類數據不需要頻繁更新的。

┠─cert文件夾:存放https證書

┠─ban.txt:敏感詞庫

┠─CustomKeywords.txt:搜索分詞詞庫

┠─denyip.txt:IP地址黑名單

┠─DenyIPRange.txt:IP地址段黑名單

┠─GeoLite2-City.mmdb:MaxMind地址庫

┠─ip2region.db:ip2region地址庫

┠─mod.txt:審查詞庫

┠─whitelist.txt:IP地址白名單

Common:之前老項目的Common項目;

Configs:項目的一些配置對象

Controllers:控制器

Extensions:一些擴展類或一些項目的擴展功能,比如hangfire、ueditor、中間件、攔截器等;

Hubs:SignalR推送服務類;

Infrastructure:數據訪問基礎設施,包含Repository和Services,相當于老項目的DAL和BLL;

Migrations:數據庫CodeFirst模式的遷移文件;

Models:老項目的Models項目,存放一些實體類或DTO;

Views:razor視圖

wwwroot:項目的所有靜態資源;

核心功能點技術實現

后端技術棧:

依賴注入容器:.NET Core自帶的+Autofac,autofac主要負責批量注入和屬性注入;
實體映射框架:automapper 9.0;
緩存框架:CacheManager統一管理網站的熱數據,如Session、內存緩存,EFSecondLevelCache.Core負責管理EF Core的二級緩存;
定時任務:hangfire統一管理定時任務,包含友鏈回鏈檢查、文章定時發布、訪客統計、搜索熱詞統計、Lucene庫刷新等任務;
Websocket:SignalR進行流推送實現服務器硬件健康狀態的實時監控;
硬件檢測:Masuit.Tools封裝的硬件檢測功能;
全文檢索:Masuit.LuceneEFCore.SearchEngine基于http://Lucene.Net 4.8實現的全文檢索中間件;
中文分詞:結巴分詞結合本地詞庫實現中文分詞;
斷點下載:Masuit.Tools封裝的斷點續傳功能;
Redis:CSRedis負責Redis的讀寫操作;
文件壓縮:Masuit.Tools封裝的zip文件壓縮功能;
Html字符串操作:htmldiff.net-core實現文章版本的內容對比,HtmlAgilityPack實現html字符串的“DOM”操作,主要是用于提取img標簽,HtmlSanitizer實現表單的html代碼的仿XSS處理;
圖床:支持多個圖床的上傳:gitee、gitlab、阿里云OSS、sm.ms圖床、人民網圖床;
攔截器:授權攔截器、請求攔截器負責網站全局流量的攔截和清洗、防火墻攔截器負責攔截網站自帶防火墻規則的請求流量、異常攔截器、url重定向重寫攔截器,主要用于將http的請求重定向到https;
請求IP來源檢查:IP2Region+本地數據庫實現請求IP的來源檢查;
RSS:WilderMinds.RssSyndication實現網站的RSS源;
EF擴展功能:zzzproject相關nuget包
Word文檔轉換:OpenXml實現瀏覽器端上傳Word文檔轉換為html字符串。
在線文件管理:angular-filemanager+文件管理代碼實現服務器文件的在線管理

前端技術棧

前臺頁面:

基于bootstrap3布局
ueditor+layedit富文本編輯器
notie提示欄+sweetyalert彈窗+layui組件
angularjs

后臺管理頁:

angularjs單一頁面應用程序
material布局風格
highchart+echart圖表組件
ng-table表格插件
material風格angular-filemanager文件管理器

性能和安全相關

hangfire實現分布式任務調度;
Z.EntityFramework.Plus實現數據訪問層的高性能數據庫批量操作;

http://Lucene.NET實現高性能站內檢索;

通過url的敏感詞檢查過濾惡意流量;
限制客戶端的請求頻次;
表單的AntiForgeryToken防止惡意提交;

ip2region+MaxMind地址庫實現請求來源審查;

用戶信息采用端到端RSA非對稱加密進行數據傳輸;

項目部署

編譯:

編譯需要將Masuit.Tools項目和Masuit.LuceneEFCore.SearchEngine項目也一起clone下來,和本項目平級目錄存放,才能正常編譯,否則,將Masuit.Tools項目和Masuit.LuceneEFCore.SearchEngine項目移除,通過nuget安裝也是可以的。

8ea877bf696547f83c6d7ebfdd938ab7.png

配置文件:

主要需要配置的是https證書、數據庫連接字符、redis、BaiduAK以及圖床配置;

cacbb3ef67540941322a38204ca363c9.png

同時,BaiduAK參與了數據庫的加密,如果你沒有BaiduAK,自行到百度地圖開放平臺申請,免費的。

如果你使用了CDN,需要配置TrueClientIPHeader選項為真實IP請求轉發頭,如cloudflare的叫CF-Connecting-IP。

如果Redis不在本機,需要在配置文件中的Redis節下配置,固定為Redis,值的格式:127.0.0.1:6379,allowadmin=true,若未正確配置,將按默認值“127.0.0.1:6379,allowadmin=true,abortConnect=false”。

IIS:部署時必須將應用程序池的標識設置為LocalSystem,否則無法監控服務器硬件,同時需要安裝.NET Core Hosting運行時環境,IIS程序池改為無托管代碼。

81a8f3d0bb1037a6f52d2ea59a1a1a0b.png

獨立運行:配置好環境和配置文件后,可直接通過dotnet Masuit.MyBlogs.Core.dll --port 80 --sslport 443命令運行。

docker:自行爬文。

運行參數:

網站默認會以5000和5001端口運行,如果需要指定端口,需要在appsettings.json中進行配置。

a22f3525907fcca3bf8280ebc69f9a2c.png

20874c3e8060126a8259891c6413ac84.png

后臺管理:

初始用戶名:masuit

初始密碼:123abc@#$

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532424.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532424.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532424.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

懷舊服推薦配置_【懷舊服】狂暴戰P4畢業裝備推薦

在懷舊服開啟P4階段之后,狂暴戰玩家的輸出也得到了進一步的提升。當然,狂暴戰想要打出足夠的傷害離不開對應的裝備,現在就給大家介紹下狂暴戰P4階段的BIS裝備。散件裝備狂暴戰在這一階段依舊有非常不錯的散件裝備,個人建議玩家入手…

高斯混合模型GMM及EM迭代求解算法(含代碼實現)

高斯混合模型GMM及EM迭代求解算法(含代碼實現) 高斯分布與高斯混合模型 高斯分布 高斯分布大家都很熟悉了,下面是一元高斯分布的概率密度函數(Probability Density Function,PDF): P(x)N(μ,…

十個模塊_專欄 | ABAQUS Part模塊的十個小技巧

作者介紹星辰_北極星2012年開始從事Abaqus仿真相關工作,服務大小課題逾百項; 主要仿真領域:石油工程、巖土工程和金屬加工工藝; 重點研究方向:ABAQUS GUI二次開發、固體力學、斷裂以及損傷等。Abaqus有部件(Part)和裝配體(Assembl…

深度學習時代的視頻理解綜述

深度學習時代的視頻理解綜述 本文為b站bryanyzhu老師四期視頻理解相關論文解讀的匯總圖文筆記。 我們先精讀深度學習時代視頻理解領域最為重要的兩篇論文:雙流網絡和 I3D。它們分別是領域內兩大類方法雙流(利用光流)網絡和 3D CNN 網絡的代…

typec擴展塢hdmi沒反應_typec擴展塢轉hdmi/vga多功能網口usb轉換器蘋果華為電腦matebook6元優惠券券后價26.8元...

★typec擴展塢轉hdmi/vga多功能網口usb轉換器蘋果華為電腦matebook,6元拼多多優惠券★券后價26.8元★★★typec擴展塢轉hdmi/vga多功能網口usb轉換器蘋果華為電腦matebook¥26.8元¥32.8元已拼5097件點擊搶購猜你喜歡[速發]喵喵機P1熱敏打印機手…

NLP任務概覽

NLP任務概覽 本文為臺灣大學李宏毅老師視頻課程筆記。本課程介紹了 (2020年)NLP 領域常見的 17 種任務。本文只會從輸入輸出的角度概覽多種 NLP 任務,并簡介它們的常見做法,并不會細致地介紹每個任務模型的具體細節。 兩種模式與…

大物實驗總結模板_期中總結大會amp;期末動員大會

在逐漸降溫的雙創周麥包坊的期中總結暨期末動員大會來啦在學長團和小麥包的分享下希望大家重新啟航奮斗期末板塊一學長團經驗分享面對本學期十二門科目,作為過來人的前輩們給出很多對本學期各科目的針對性建議,可謂是干貨滿滿,快來瞧瞧吧&…

PTMs:NLP預訓練模型的全面總結

PTMs:NLP預訓練模型的全面總結 轉自:https://zhuanlan.zhihu.com/p/115014536 預訓練模型(Pre-trained Models,PTMs) 的出現將NLP帶入了一個全新時代。2020年3月18日,邱錫鵬老師發表了關于NLP預訓練模型的綜述《Pre-trained Models for Natur…

python中提取幾列_Python一鍵提取PDF中的表格到Excel(實例50)

從PDF文件獲取表格中的數據,也是日常辦公容易涉及到的一項工作。一個一個復制吧,效率確實太低了。用Python從PDF文檔中提取表格數據,并寫入Excel文件,灰常灰常高效。上市公司的年報往往包含幾百張表格,用它作為例子再合…

EM算法公式推導

EM算法公式推導 EM 算法是一種用來進行含有隱變量的概率生成模型參數估計的迭代算法。 EM算法步驟 EM 算法通過迭代求 L(θ)log?P(X∣θ)L(\theta)\log P(X|\theta)L(θ)logP(X∣θ) 的極大似然估計,每次迭代包含兩部:E步,求期望&#xf…

詳解最大似然估計(MLE)、最大后驗概率估計(MAP),以及貝葉斯公式的理解

詳解最大似然估計(MLE)、最大后驗概率估計(MAP),以及貝葉斯公式的理解 聲明:本文為原創文章,發表于nebulaf91的csdn博客。歡迎轉載,但請務必保留本信息,注明文章出處。 本…

elemntui icon 大小_自定義elementui中的圖標

前提elementui圖標庫圖標較少當你想用elementui的控件而不想用它的圖標時,就可以使用自定義的方式來實現實現el-icon-my-export為我自定義的圖標命名導出//使用圖片來替換//before屬性中的content文本是用來占位的,必須有//可以設置字體大小來確定大小//使用visibil…

變分推斷公式推導

變分推斷公式推導 背景介紹 機器學習中的概率模型可分為頻率派和貝葉斯派。頻率派最終是求一個優化問題,而貝葉斯派則是求一個積分問題。 頻率派 舉幾個例子: 線性回歸 樣本數據:{(xi,yi)}i1N\{(x_i,y_i)\}_{i1}^N{(xi?,yi?)}i1N? 模…

重新打開_iPhone 應用停止響應或無法打開的解決辦法

如果當您在 iPhone 上使用某個重要應用時,遇到應用停止響應、意外退出或無法打開的問題,請參考如下步驟嘗試解決:1.強制退出應用:在 iPhone 后臺強制關閉該應用之后,再次重新打開看看。2.重啟您的設備,然后…

機器學習理論——優雅的模型:變分自編碼器(VAE)

機器學習理論——優雅的模型:變分自編碼器(VAE) 轉自:機器學習理論—優雅的模型(一):變分自編碼器(VAE) 另外直觀理解 VAE, 推薦 臺大李宏毅老師的課程&#…

grub引導項修復詳解_重新安裝win7后,修復Grub啟動項

重新安裝win7后,修復Grub啟動項發布時間:2010-09-14 22:14:00來源:紅聯作者:null925[is] 本帖最后由 null925 于 2010-9-14 22:18 編輯 [/i]原先使用Win7,Gentoo,Ubuntu三系統,Grub作為系統引導管理器,今天重新安裝Win…

基于流的(Flow-based)生成模型簡介

基于流的(Flow-based)生成模型簡介 生成任務 我們先回顧一下所謂的生成任務,究竟是做什么事情。我們認為,世界上所有的圖片,是符合某種分布 pdata(x)p_{data}(x)pdata?(x) 的。當然,這個分布肯定是個極其復雜的分布。而我們有一…

iec60870-5-104通訊協議編程_三菱FX編程口通訊協議1——協議解讀

三菱PLC編程口通訊協議:1、三菱PLC編程口通訊協議有四個命令,如下:2、三菱FX系列PLC地址對應表:PLC_X Group Base AddRess128;Const PLC_Y_Group Base AddRess160;M _Group Base_AddRess 256;P…

采用ODP.NET 批量進行數據同步

因開發、測試場景經常需要模擬機生產環境的數據,原同事開發了一個ado.net圖形化同步工具,對非技術人員操作友好,但對技術員使用并不方便,每次同步需源庫數據與目標的數據源字段進行配置,且同步大數據時慢,因…

熔斷器熔斷時間標準_一種熔斷器熔斷時間測試電路的制作方法

本實用新型涉及汽車制造技術領域,尤其涉及一種熔斷器熔斷時間測試電路。背景技術:伴隨著日新月異的科技進步,人們對生活質量的追求也越來越高,汽車已經成為人們日常出行必不可少的交通工具,人們對汽車的舒適性、安全性…