日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端

發(fā)布時間:2023/12/4 Ubuntu 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在《WeText項目:一個基于.NET實現(xiàn)的DDD、CQRS與微服務(wù)架構(gòu)的演示案例》文章中,我介紹了自己用Visual Studio 2015(C# 6.0 with .NET Framework 4.6.1)開發(fā)的DDD/CQRS/微服務(wù)架構(gòu)的案例項目:WeText。文章發(fā)出后反響很好,也很感謝大家的關(guān)注。在本文中我將介紹如何在Ubuntu 14.04.4 LTS中運行WeText項目的服務(wù)端。

為跨平臺而生

從一開始的設(shè)計,我就把WeText的服務(wù)端跨平臺納入了實踐目標(biāo),因此,所選擇的框架和技術(shù)全部都是可以跨平臺運行的。在這個過程中我沒有嘗試最新的.NET Core RC,而是繼續(xù)使用最新版本的Mono。Mono目前對微軟官方的.NET Framework兼容性已經(jīng)做得非常好了,一句話概括:除了WPF、WWF不支持,以及部分WCF與ASP.NET 4.5異步支持不完善以外,其它功能完全支持。.NET Framework已經(jīng)支持到4.6.1,C#語言規(guī)范已經(jīng)支持到C# 6.0。具體詳情可以參考Mono的官方說明:http://www.mono-project.com/docs/about-mono/compatibility/。在最近工作上遇到一個項目需要能夠運行在Linux下,項目本身不大,也非常簡單,但美國團隊一聽說我打算采用Mono就不太愿意接受,最后還是選擇使用Java。當(dāng)然我承認(rèn)Java在多平臺的支持方面的確非常出色,但我還是想親身實踐一下Mono,想證明基于Mono的方案的確也能做得很好。這也是我將WeText定位為能夠跨平臺的一個原因吧。話說回來,從客戶的角度,微軟的開源為解決方案的技術(shù)選型提供了更為廣闊的選擇余地,客戶的整套方案不需要像以前那樣,一個部分使用了微軟技術(shù),就整個解決方案都要使用微軟技術(shù)(比如,選擇了.NET Framework,就需要運行Windows的服務(wù)器;使用了Windows服務(wù)器,LDAP就是Active Directory最合適;使用Entity Framework,就需要SQL Server做數(shù)據(jù)庫,客戶一想,我還有一大堆的服務(wù)程序都是運行于Linux的,憑什么我的服務(wù)器一定要選擇Windows?于是,客戶也不會選擇.NET Framework)。當(dāng)然,這是另外的話題,在這里我還是繼續(xù)介紹WeText服務(wù)端的跨平臺特性吧。

我在Ubuntu 14.04.4 LTS版本的Linux系統(tǒng)中成功安裝并運行了WeText的服務(wù)端,而且成功從Windows下的WeText.Web項目訪問這臺Linux服務(wù)器并跑通了所有的業(yè)務(wù)邏輯。聽起來是不是很讓人興奮?現(xiàn)在,就請和我一起了解一下整個安裝和運行過程吧。

環(huán)境準(zhǔn)備

首先,得要有一臺Ubuntu 14.04.4 LTS的機器(如果是其它系列的Linux,以下安裝過程會有些不同,請大家自行參考各種組件在相應(yīng)版本的Linux下的安裝步驟進(jìn)行安裝,但不會影響后續(xù)WeText的編譯和執(zhí)行)。在準(zhǔn)備完這臺機器之后,就可以開始一步步地準(zhǔn)備環(huán)境了。

安裝Mono

在Linux系統(tǒng)中安裝Mono,可以參考http://www.mono-project.com/docs/compiling-mono/linux/?;旧嫌袃煞N方式:一種是直接從發(fā)布版本進(jìn)行編譯安裝,另一種是通過克隆代碼庫然后編譯安裝。當(dāng)然,無論哪種方式,在編譯之前,請先通過下面的命令確保所有所需的軟件包都已經(jīng)正確安裝:

1 sudo apt-get install git autoconf libtool automake build-essential mono-devel gettext

我自己是通過下載Release Package完成安裝的,Mono所有的Release Package位于:http://download.mono-project.com/sources/mono/。直接選擇最新版本下載解壓即可。

解壓完成后,進(jìn)入解壓后的目錄,依次執(zhí)行下面的命令完成編譯安裝:

1 2 3 ./configure --prefix=/usr/local make make install

第一條命令中的—prefix參數(shù)可以根據(jù)自己的情況設(shè)定。

安裝MongoDB

在WeText中,MongoDB被用作Event Store(事實上Event Sourcing暫時還未實現(xiàn))。使用MongoDB的原因,是因為事件數(shù)據(jù)本身是非結(jié)構(gòu)化的,而且MongoDB在replication方面有著很好的解決方案。安裝過程如下:

1. 為包管理系統(tǒng)導(dǎo)入公鑰

1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

2. 為MongoDB創(chuàng)建list文件

這將為MongoDB在/etc/apt/sources.list.d目錄下創(chuàng)建mongodb-org-3.2.list文件。

1 echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

3. 刷新本地包數(shù)據(jù)庫

1 sudo apt-get update

4. 安裝最新版本的MongoDB

1 sudo apt-get install -y mongodb-org

5. 啟動MongoDB服務(wù)

1 sudo service mongod start

6. 直接執(zhí)行mongo命令,檢查MongoDB是否已經(jīng)正確安裝

如果需要更加詳細(xì)的安裝步驟,請直接參考官方文檔,或者也可以上網(wǎng)搜索相關(guān)的中文資料參考。注意:目前暫時建議整個安裝過程采用默認(rèn)設(shè)置,因為MongoDB的配置目前是寫死在服務(wù)端代碼中的(具體位置是:WeText.DomainRepositories項目下的WeTextMongoSetting.cs文件中)。如果更改了MongoDB的配置,那么也需要相應(yīng)地更改這部分代碼,然后重新編譯WeText服務(wù)端(本文后半部分會介紹編譯過程)。今后會將MongoDB的配置移到配置文件中。

安裝RabbitMQ

1. 使用以下命令將RabbitMQ的APT Repository加到/etc/apt/sources.list.d目錄下

1 echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list

2. 將RabbitMQ的公鑰加入受信秘鑰列表中

1 wget -O- https://www.rabbitmq.com/rabbitmq-signing-key-public.asc | sudo apt-key add -

3. 刷新本地包數(shù)據(jù)庫

1 sudo apt-get update

4. 安裝RabbitMQ

1 sudo apt-get install rabbitmq-server

如果需要更加詳細(xì)的安裝步驟,請直接參考官方文檔。

安裝MySQL

1. 刷新本地包數(shù)據(jù)庫

1 sudo apt-get update

2. 安裝MySQL

1 sudo apt-get install mysql-server

3. 使用以下命令嘗試連接MySQL服務(wù)

1 mysql -u root -p

如果需要更加詳細(xì)的安裝步驟,請直接參考這篇文章。

從源代碼編譯

1. 使用下面的git命令將WeText源代碼克隆到本地

1 git clone https://github.com/daxnet/we-text.git

2. 進(jìn)入we-text\scripts目錄,執(zhí)行mysql –u root –p命令啟動MySQL客戶端。并在MySQL中執(zhí)行下面的命令,初始化WeText所需使用的查詢數(shù)據(jù)庫:

1 \. mysql_query_databases.sql

3.?注意:在Linux下的nuget.exe還是有些問題,在WeText下執(zhí)行nuget.exe restore命令無法將所有的依賴庫下載下來(我還沒找到解決方案)。因此,只能在Windows中先使用Visual Studio 2015編譯WeText.sln,然后再將下載下來的packages目錄復(fù)制到Linux下we-text\src目錄下??梢酝ㄟ^Samba服務(wù),或者使用FTP將packages目錄上傳到Linux系統(tǒng)中

4. 進(jìn)入we-text\src目錄,使用下面的命令完成WeText服務(wù)端的編譯:

1 xbuild /p:TargetFrameworkVersion=v4.6.1 /p:Configuration=ServerDebug WeText.sln

5. 編譯完成后,會出現(xiàn)一些Assembly Binding的警告,請暫且忽略

運行WeText服務(wù)端

進(jìn)入we-text\bin目錄,執(zhí)行./WeText.Service.exe命令,啟動WeText服務(wù)端,將看到以下畫面:

在Windows中通過Visual Studio 2015打開WeText項目,修改WeText.Web項目的web.config文件,將下圖中的設(shè)置更改為Linux中的WeText服務(wù)端地址:

啟動WeText.Web項目,新建一個daxnet的用戶:

登錄后點擊菜單欄的My Texts菜單,創(chuàng)建一個新的Text:

現(xiàn)在,查看Linux下的MongoDB數(shù)據(jù)庫:

查看MySQL查詢數(shù)據(jù)庫:

查看RabbitMQ消息隊列:

OK,整個流程運行下來沒什么問題。最后,只要在WeText.Service.exe的窗口中直接回車,即可退出服務(wù)端的運行(退出需要花幾秒鐘時間)。

總結(jié)

本文詳細(xì)介紹了在Linux環(huán)境中編譯運行WeText客戶端的方法,并成功走通了整個流程。正如前文所述,WeText還有很多需要改進(jìn)的地方,我也會一步步對其進(jìn)行改進(jìn)調(diào)整,如果有新的心得體會,我也會繼續(xù)分享給大家。

原文地址:http://www.cnblogs.com/daxnet/p/5426806.html


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注

贊賞

人贊賞

總結(jié)

以上是生活随笔為你收集整理的【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。