系列文章
- 基于 abp vNext 和 .NET Core 開發博客專案 - 使用 abp cli 搭建專案
- 基于 abp vNext 和 .NET Core 開發博客專案 - 給專案瘦身,讓它跑起來
- 基于 abp vNext 和 .NET Core 開發博客專案 - 完善與美化,Swagger登場
- 基于 abp vNext 和 .NET Core 開發博客專案 - 資料訪問和代碼優先
- 基于 abp vNext 和 .NET Core 開發博客專案 - 自定義倉儲之增刪改查
- 基于 abp vNext 和 .NET Core 開發博客專案 - 統一規范API,包裝回傳模型
- 基于 abp vNext 和 .NET Core 開發博客專案 - 再說Swagger,分組、描述、小綠鎖
- 基于 abp vNext 和 .NET Core 開發博客專案 - 接入GitHub,用JWT保護你的API
- 基于 abp vNext 和 .NET Core 開發博客專案 - 例外處理和日志記錄
- 基于 abp vNext 和 .NET Core 開發博客專案 - 使用Redis快取資料
- 基于 abp vNext 和 .NET Core 開發博客專案 - 集成Hangfire實作定時任務處理
- 基于 abp vNext 和 .NET Core 開發博客專案 - 用AutoMapper搞定物件映射
- 基于 abp vNext 和 .NET Core 開發博客專案 - 定時任務最佳實戰(一)
- 基于 abp vNext 和 .NET Core 開發博客專案 - 定時任務最佳實戰(二)
- 基于 abp vNext 和 .NET Core 開發博客專案 - 定時任務最佳實戰(三)
- 基于 abp vNext 和 .NET Core 開發博客專案 - 博客介面實戰篇(一)
- 基于 abp vNext 和 .NET Core 開發博客專案 - 博客介面實戰篇(二)
- 基于 abp vNext 和 .NET Core 開發博客專案 - 博客介面實戰篇(三)
- 基于 abp vNext 和 .NET Core 開發博客專案 - 博客介面實戰篇(四)
- 基于 abp vNext 和 .NET Core 開發博客專案 - 博客介面實戰篇(五)
- 基于 abp vNext 和 .NET Core 開發博客專案 - Blazor 實戰系列(一)
- 基于 abp vNext 和 .NET Core 開發博客專案 - Blazor 實戰系列(二)
- 基于 abp vNext 和 .NET Core 開發博客專案 - Blazor 實戰系列(三)
- 基于 abp vNext 和 .NET Core 開發博客專案 - Blazor 實戰系列(四)
- 基于 abp vNext 和 .NET Core 開發博客專案 - Blazor 實戰系列(五)
- 基于 abp vNext 和 .NET Core 開發博客專案 - Blazor 實戰系列(六)
- 基于 abp vNext 和 .NET Core 開發博客專案 - Blazor 實戰系列(七)
- 基于 abp vNext 和 .NET Core 開發博客專案 - Blazor 實戰系列(八)
- 基于 abp vNext 和 .NET Core 開發博客專案 - Blazor 實戰系列(九)
- 基于 abp vNext 和 .NET Core 開發博客專案 - 終結篇之發布專案
終于到了這一步了,開發了 API,緊接著又開發了 Blazor 版的博客專案,慶祝本系列文章完結撒花,??????
既然開發完成了,還是拿出來溜溜比較好,本篇是本系列文章的最后一篇了,準備將 API 部署到 Linux,把前端 Blazor 開發的博客部署到 GitHub Pages,
- blog:https://blazor.meowv.com/
- api:https://api2.meowv.com/
先放地址,體驗一下,要有點耐心,第一次訪問會下載資源檔案到本地瀏覽器,后面訪問就賊快了,
也是第一次使用 Blazor 開發專案,不管怎么說,這個實驗性的帶教學和宣傳目的博客總算是搞出來了,自己用的話,完全可以,同時在開發程序中自己也有不少識訓,
發布API
發布自己寫的后端API專案,必須要有屬于自己的服務器,當然如果只是為了動動手玩玩就沒啥必要了,因為 .NET Core 跨平臺咱們可以任意選擇,我這里演示將專案發布到 Linux 下,
在這之前可以看一下我去年的一篇文章,基于.NET Core開發的個人博客發布至CentOS小記 ,簡單了解下,
我的機器是很久之前擼羊毛的渣渣配置服務器,1G記憶體,1核CPU,1M帶寬,不過對于我們這種小站來說沒啥訪問量,照樣用,????
首先肯定是需要安裝 .NET Core 運行環境,直接安裝最新的 .NET Core 3.1 即可,這一步大家根據微軟官方檔案來就可以了,https://docs.microsoft.com/zh-cn/dotnet/core/install/linux ,
安裝完成后可以使用 dotnet --list-runtimes 查看運行時,

接著就可以去安裝 Nginx ,高性能 Web 服務器,在這里使用它反向代理的功能,當然它的功能遠不止于此,關于 Nginx 的安裝我也不說了,如果你不懂,網上太多教程了,
安裝完成后可以使用 nginx -V 查看安裝版本等資訊,

到這一步就可以把我們API專案部署上去了,直接利用 Visual Studio 將專案打包發布,appsettings.json組態檔資訊填好,這一步不用多說吧,相信大家都會,

利用 WinSCP 工具將發布好的代碼上傳至服務器,我這里新建了檔案夾 qix/api2 方便自己管理,順便提一句,WinSCP 是一個 Windows 環境下使用的 SSH 的開源圖形化 SFTP 客戶端,

那么現在我們可以在終端中定位到API所在目錄,cd /qix/api2,然后執行命令啟動專案dotnet run Meowv.Blog.HttpApi.Hosting.dll這時候便會看到輸出資訊,我們就可以使用服務器IP+埠的方式訪問到API了,
如果只是這樣肯定不是我想要的,這時候就引入了 Linux 下的守護行程,就類似于 Windows 下面的服務一樣,讓守護行程幫助我們運行專案,當關機、重啟或者其它例外問題出現時,可以自動幫我們重啟應用,就是自動執行dotnet run xxx.dll這句命令,
關于守護行程用的比較多的,supervisor 與 pm2 ,前者基于Python開發的,后者是基于nodejs開發的,
咱這里就選用 supervisor 了,當然 pm2 也不錯也可以用用,
在 centos 下安裝 supervisor 也很簡單,直接貼幾行代碼,照著執行即可,
yum install python-setuptools
easy_install supervisor
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
安裝成功后還需要花點時間去配置它,找到檔案 /etc/supervisor/supervisord.conf 去掉檔案最后的注釋,可以改成向下面這樣,
...
[include]
files = conf.d/*.ini
這時候就可以監聽到 conf.d 檔案夾下面的 ini 組態檔了,在 /etc/supervisor/ 下新建檔案夾 conf.d,conf.d 檔案夾下新建一個組態檔 api2_meowv.conf 檔案,名字隨便起,內容如下:
[program:api2_meowv] # api2_meowv程式名稱
command=dotnet Meowv.Blog.HttpApi.Hosting.dll # 執行的命令
directory=/qix/api2 # 命令執行的目錄
environment=ASPNETCORE__ENVIRONMENT=Production # 環境變數
user=root
stopsignal=INT
autostart=true # 是否自啟動
autorestart=true # 是否自動重啟
startsecs=3 # 自動重啟時間間隔(s)
stderr_logfile=/var/log/api2.meowv.com.err.log #錯誤日志檔案指向目錄
stdout_logfile=/var/log/api2.meowv.com.out.log #輸出日志檔案指向目錄
每行都帶有注釋,很清楚知道是干啥用的,順便貼幾條常用的命令:
supervisorctl start program_name #啟動某個行程(program_name=配置的行程名稱)
supervisorctl stop program_name #停止某一行程
supervisorctl reload #重新啟動配置中的所有程式
supervisorctl stop all #停止全部行程
supervisorctl update #更新新的配置到supervisord
supervisorctl restart program_name #重啟某一行程
supervisorctl #查看正在守候的行程

使用上面命令成功啟動專案,使用IP+埠的方式去訪問API肯定是不友好的,這時候就需要一個域名了,我這里將新建一個二級域名 api2.meowv.com 執行新開發的API專案,
關于域名的決議啥的不說了,配置完域名我順便去申請了一個SSL證書,使用HTTPS的方式訪問,
這時可以去配置 Nginx 方向代理了,來到 nginx 安裝目錄,我這里是 /etc/nginx ,新建一個檔案夾 ssl ,將申請的SSL證書放進去,然后再 conf.d 檔案夾下新建一個 api2_meowv.conf 檔案,寫入下面的配置資訊,
server {
listen 443 ssl;
server_name api2.meowv.com;
ssl_certificate ssl/1_api2.meowv.com_bundle.crt;
ssl_certificate_key ssl/2_api2.meowv.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
location / {
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Headers 'Authorization,Content-Type';
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
return 204;
}
proxy_pass http://localhost:5009;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 20M;
}
}
server {
listen 80;
server_name api2.meowv.com;
rewrite ^(.*)$ https://api2.meowv.com;
}

關于配置資訊大家可以自己去學習一下,我這里也是簡單的使用,我這里監聽的埠是 5009,這個埠在 API 專案中是可以自定義的,相信大家都知道,做好以上操作后,在終端執行 nginx -s reloa,重繪 nginx 配置使其生效,然后就大功告成了,
關于專案中的資料庫和Redis快取,大家可以自行安裝,資料庫可以選擇使用Sqlite,專案中已經做了一鍵切換資料庫,安裝Redis也很簡單,相信大家可以自己完成,Redis可用可不用,可以直接關閉,

現在API專案便發布成功,將其部署在Linux系統下面,有了線上正常運行的API,接下來把前端 Blazor 開發的博客也發一下,
發布Blog
為了節省服務器資源,現在里面已經容納了超級多的東西了,我準備將 Blog 部署在 GitHub Pages 上,
使用 Blazor WebAssembly 發布后是純靜態的檔案,所以啊,其實放在哪里都可以,無關憾訓境,只要可以開啟一個WEB服務即可,
在GitHub上創建一個倉庫來放我們的發布后的代碼,關于創建倉庫不會的看這里,https://pages.github.com ,
接下來去發布 Blazor 專案,發布之前改一下API地址,當然這個也可以做成組態檔形式的,


然后將創建好的倉庫克隆下來,把博客靜態檔案拷貝進去,這時候還不能直接push到倉庫中,為了適配 GitHub Pages 我們還要做幾點改動,
GitHub Pages 使用的是 Jekyll,以特殊字符開頭的檔案夾是不會被映射到路由中去的,我們發布的靜態檔案中剛好有以_開頭的檔案夾_framework,為了解決這個問題可以在倉庫下面創建一個以.nojekyll命名的空檔案即可,
根據實際操作和踩坑,現在如果發布還是會報一個無法加載資源的錯誤The resource has been blocked.,然后在GitHub找到了解決辦法,詳見:https://github.com/dotnet/aspnetcore/issues/19907#issuecomment-600054113 ,
新建一個.gitattributes檔案,寫入內容:* binary,即可,現在將檔案 push 到倉庫,
然后在倉庫的settings下面開啟 GitHub Pages 功能選項,

我這里自定義了一個域名,如果你也想自定義域名可以在根目錄添加一個名為CNAME的檔案,里面的內容就是你的域名,我這里就是:blazor.meowv.com ,

最后在去配置一下域名的 CNAME 決議即可,等待 DNS 生效,便可以用自定義域名訪問了,
結束語
本系列文章從零開始搭建了API,使用 Blazor 開發了一個簡單的博客系統,功能不是很多,整體來說從無到有,自己也踩了一遍坑,也算有不少識訓了,
在這里再次感謝那些在公眾號給我贊賞的人,??????
可能整體涉及到的東西不是很多,廣度和深度都沒有,只是很基礎的用了用,在寫之前我也已經說過,這些系列是用來記錄自己的編碼程序,因為大佬們都不愿意出來分享,所以我們渣渣只能做到這種程度,
如果對你沒啥幫助,權當看過笑過????或者右上角點一下小叉叉??,因為不管你做的如何,總有人喜歡說三道四~~
如果對你有些許幫助,請多多推廣喲,???
最后大家可以關注一下我的微信公眾號:『阿星Plus』??????
因為疫情影響,今年高考推遲到7月份,每年高考便是我所在公司的業務高峰期,接下來實在太忙,估計也沒時間創作了,正好準備休息一段時間,好好思考思考后面為大家帶來更好的文章,有緣人下個系列見吧,??????
本系列文章代碼開源地址:https://github.com/meowv/blog

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/9695.html
標籤:.NET Core
