一、關於NopCommerce
NopCommerce是國外ASP.Net領域一個高質量的B2C開源電商項目,最新版本4.2基於ASP.NET Core MVC 2.2和EF Core 2.2開發,其強大的功能特性和插件機制使其成為了.NET領域開源電商項目的標桿。當然,還有一些其他的開源電商項目如Smart.Net Store,SimplCommerce等,但是其功能都不如NopCommerce齊全,但是架構上卻各有特色。這里我選擇NopCommerce,主要目的還是為了學習電商后台的業務功能,以便未來能夠吸取其設計並改造為微服務架構構造業務中台。
二、下載NopCommerce
兩種下載方式:
(1)官方網站:https://www.nopcommerce.com/downloads.aspx
(2)GitHub:https://github.com/nopSolutions/nopCommerce/releases
這里我們選擇 nopCommerce_4.20_Source.rar,即源代碼版本的release。
三、運行NopCommerce
3.1 編譯代碼
打開NopCommerce.sln解決方案,可以看到如下圖所示的代碼結構:
整個項目代碼由4個部分組成,核心庫、插件庫、展示層以及測試。關於每個部分的介紹,可以閱讀園友Runable的《基於NopCommerce的開發框架》一文。
這里借用Runable的一張圖,我們可以清晰看到各個層的主要組成部分及其職責。
先了解這么多,先編譯代碼吧,肯定是沒有Error的,除非你沒有安裝.NET Core 2.2的SDK。
3.2 第一次調試運行
編譯無誤后,我們就可以F5調試運行了,第一次運行時會彈出安裝配置頁面,如下圖所示,我們需要預先輸入一個管理員賬號,以及數據庫的連接信息,這里我事先創建了一個nop_db的MSSQL數據庫用於NopCommerce幫我創建tables。
關於MSSQL數據庫,也可以使用docker方式運行,可以參考以下步驟:
(1)拉取MSSQL鏡像
docker pull microsoft/mssql-server-linux
(2)創建MSSQL實例
docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<YourStrong!Passw0rd>' \ -p 1433:1433 --name edc-mssql-dbms \ -d microsoft/mssql-server-linux
准備工作完成后,點擊“安裝”按鈕就開始了安裝,整個過程會持續接近1分鍾左右:
接下來你就進入了NopCommerce的默認商城主頁,如下圖所示:
這時我們可以檢查一下MSSQL數據庫,已經幫我們創建了120張表了:
除了前端我們常見的商城頁面,更強大的是后台系統,通過在默認URL后邊跟上Admin,例如:http://localhost:8080/Admin 則會跳轉至后台登錄頁,輸入我們在首次配置時配置的郵箱和密碼,則進入了Nop的后台系統,如下圖所示,商品管理、銷售管理、客戶管理、促銷管理等常見電商后台功能一應具有。
3.3 添加中文語言包
如果我們覺得英文看着吃力,可以為Nop添加中文語言包。
(1)到這里下載Nop的中文語言包(一個xml文件)
(2)到后台系統中,選擇Configuration中的Languages菜單,彈出的頁面中點擊Add New按鈕,表單中錄入相應內容
(3)然后單擊Import Resource按鈕,將中文包導入
(4)在首頁的語言下拉菜單中選中“簡體中文”,刷新后就是中文菜單了
四、以Docker方式運行NopCommerce
NopCommerce 4.2基於ASP.NET Core開發,自然支持Docker方式部署到Linux上,同樣兩種方式:
(1)使用官方自帶的Dockerfile
# create the build instance FROM microsoft/dotnet:2.2-sdk AS build WORKDIR /src COPY ./src ./ # restore solution RUN dotnet restore NopCommerce.sln WORKDIR /src/Presentation/Nop.Web # build and publish project RUN dotnet build Nop.Web.csproj -c Release -o /app RUN dotnet publish Nop.Web.csproj -c Release -o /app/published # create the runtime instance FROM microsoft/dotnet:2.2-aspnetcore-runtime-alpine AS runtime # add globalization support RUN apk add --no-cache icu-libs ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false WORKDIR /app RUN mkdir bin RUN mkdir logs COPY --from=build /app/published . ENTRYPOINT ["dotnet", "Nop.Web.dll"]
(2)自行發布Release並上傳到Linux上,然后使用以下命令創建Docker實例
docker run -u root --ulimit core=0 --restart=always -v /etc/localtime:/etc/localtime -d -e --privileged=true --name=nop_commerce_web -p 8080:80 -v /Edison/publish/NopCommerce.Web/:/app -w /app microsoft/dotnet:2.2-aspnetcore-runtime dotnet Nop.Web.dll;
由於在配置過程中需要兩個文件夾的支持,所以進入docker實例中創建兩個文件夾
docker exec -it nop_commerce_web /bin/bash
mkdir bin
mkdir logs
然后查看docker狀態,啟動成功
參考資料
Runable,《基於NopCommerce的開發框架》
向坤,《NopCommerce從無到有-01》
Nop,《NopCommerce下載與安裝》