exceptionless 在 windows 上 手動部署,非docker 詳細步驟


關於exceptionless 是什么我就不多說了,能看到這篇文章的都知道了。網上幾乎都是docker部署的,docker部署的確十分方便,但是有的人沒有條件用docker,像我就不想花這個錢去多服務器或者雲服務

所以我就利用現有的windows 服務器搭建了。網上關於手動搭建exceptionless的文章幾乎沒有,只有一點點大家抄來抄去的文章,並且都是老掉牙的版本。倒騰了好久,自己摸索出步驟,現在把記錄發出來,供大家參考。

我用目前github上最新的exceptionless版本來搭建。目前github上最新的版本為 v7.0.9配套的elasticsearch版本為7.10(在dockerfile中可以看到)

該項目涉及的文件,我沒傳,需要的人請留言或者私信我我發給你吧。一般自己編譯即可,從github上下載下來后,直接可以編譯過去。要確保vs版本為2019+並且支持.net 5.0的開發。

 先說下該項目的大概運行方式:1、一個api項目,里面包含了所有api。2、一個elasticsearch項目,用來存儲相關數據。3、一個UI項目,也就是查看異常、設置新異常郵件通知等操作的后台。

再說一下異常在客戶端提交的代碼原理:一個異常被提交,先寫入一個隊列,然后隨后會被post 到 api ,api收到數據后也是先寫隊列,然后再通過job作業同步到elasticsearch。

expectionless允許不要redis緩存,job作業隨api項目一起啟動,不需要單獨部署

綜上,該項目最小化運行的方案:不要redis,不要job單獨進程,只需要部署:1、api項目。2、elasticsearch項目。3、ui項目

如果性能不滿足使用,再考慮上redis以及單獨部署job作業以便多job作業,同步數據到elasticsearch更及時。

以下開始部署步驟:(以下部署均為內網環境,先跑通內網環境后,再來設置外網環境)
第一步:
首先,該項目使用.net 5.0開發,所以,服務器上必須要安裝 .net5.0運行環境,只要在服務器上安裝“dotnet-hosting-5.0.1-win.exe” 文件即可
(如何確認windows服務器是否安裝了.net 5.0?答:在cmd下運行 dotnet --version 即可看到)

第二步:
部署 elasticsearch-7.10.0 (請從官網下載,官網地址為:https://www.elastic.co/cn/downloads/elasticsearch ,如果要指定版本下載,找到頁面中的“past releases” 點擊)。

elasticsearch 部署方式為:解壓 elasticsearch-7.10.0-windows-x86_64.zip 到某個文件夾,比如 D:\elasticsearch-7.10.0\
(elasticsearch 的索引數據文件默認存儲路徑為自身根目錄下的 data 文件夾,所以盡量將它放在一個剩余空間比較大的盤符中)
然后cmd進入到該目錄的bin文件夾下(比如D:\elasticsearch-7.10.0\bin) ,然后 運行 elasticsearch.bat
(服務器上最好以service的方式運行elasticsearch,因為可以設置自啟動。server方式運行的話就是cmd運行 elasticsearch-service.bat)
如果不修改配置文件,正確 運行 elasticsearch 后,訪問 http://localhost:9200/ 可以成功訪問,並展示一段json,json中包含集群名字、版本等信息,看到該json代表elasticsearch正確運行。

第三步:
安裝 mapper-size 。 因為expectionless一定要這個插件,具體作用百度。安裝插件的方法在下面這個鏈接
https://www.elastic.co/guide/en/elasticsearch/plugins/current/mapper-size.html
簡單說一下安裝這個插件的步驟
第1步:下載插件 https://artifacts.elastic.co/downloads/elasticsearch-plugins/mapper-size/mapper-size-7.10.0.zip (可以修改版本號直接下載其他es版本,es版本與這個插件版本必須要一一對應,,比如 mapper-size-7.10.1.zip 它對應的是7.10.1的elasticsearch)
第2步:打開cmd ,進入到 D:\elasticsearch-7.10.0\bin 目錄下運下面這個命令: elasticsearch-plugin install file:///C:/path/to/plugin.zip (這個路徑改為你剛剛下載的文件的存放路徑)
第3步:看到installed的字樣后,代表插件安裝完成,然后重啟es后,訪問如下地址: http://localhost:9200/_cat/plugins (http://localhost:9200 是你es安裝成功后,elasticsearch默認的訪問地址,/_cat/plugins 代表查看當前運行的插件) ,
如果能看到 mapper-size 7.10.0 ,則代表已成功安裝該插件。

第四步:將已經編譯好的的 Exceptionless.Web 部署到IIS中,這是整個 expectionless 的api (在測試過程中,先不要部署IIS,直接運行編譯后的文件夾中的Exceptionless.Web.exe 文件,直接運行該exe它將默認以 5000 端口通訊,請確保5000端口未被占用,先不要嘗試修改端口以免后面文檔銜接不上。)。部署后,確保 http://localhost:5000/ 可以訪問,並且點擊 “API Documentation” 能看到所有api列表(expectionless用 Swagger 做api 文檔)

第五步:將已經編譯好的Exceptionless.UI項目部署到IIS中(Exceptionless.UI-3.0.11.Build.zip 該文件我),這個項目是用來創建賬號、登錄查看異常、處理異常的,也就是expectionless的后台。
(Exceptionless.UI是 angularJs 寫的項目,要把它編譯一下)
Exceptionless.UI 部署到IIS后,該項目還要做以下幾件事
1、將根目錄下的“app.config.8abddc8ed08ca795.js” (文件名類似這樣子不一定是這個樣子,看你自己編譯后的結果) 的js修改一下,將BASE_URL中的值改為你剛剛api的地址,正常來說,默認的就是 http://localhost:5000/
2、如果IIS的MIME類型中沒有.json的話,還需要添加一條文件拓展名為 .json MIME類型為 application/json 的記錄(如果訪問UI項目,瀏覽器調試工具的network中.json請求出錯,代表服務器不支持該mime)。
3、注冊賬號登錄后,會發現url類似 http://localhost:5100/#!/type/error/frequent 會帶着 #! ,而郵件發過來的url會類似 http://localhost:5100/type/error/frequent ,導致不能訪問,
這個時候需要修改 app.config.8abddc8ed08ca795.js .constant('USE_HTML5_MODE', false) 修改該值為true,即 .constant('USE_HTML5_MODE', true)
4、做了第3步后會發現 http://localhost:5100/type/error/frequent 可以訪問了,但是如果刷新會報404,這是由於anglarjs特性導致的,需要加入重寫規則。(具體解決方案看這里 https://www.cnblogs.com/fxck/p/13076467.html)

 

搭建過程就是以上 五個步驟 ,接下來,修改一下 Exceptionless.Web 的項目配置

首先,Exceptionless.Web項目加載配置文件,是根據系統環境變量來加載不同的配置文件的(如果不知道是什么搜一下windows系統環境變量,其他系統自行百度)
如果系統環境變量中存在 EX_AppMode 的話,比如 EX_AppMode=Staging則加載 appsettings.Staging.yml 文件。(EX_AppMode如果不存在則為 Production) 

以下是一個配置文件示例,可以視情況自己修改,配置文件是以QQ郵箱作為發信郵箱的,Email: "smtps://10000:bsvfwsfcucxwagfa@smtp.qq.com:465" 這個配置文件 10000 代表你的QQ號,: 號后面的是你QQ smtp發信密碼(不是QQ密碼,具體自己去QQ郵箱申請smtp密碼,其他幾個參數不動。)

---
ConnectionStrings:
# Redis: server="localhost,abortConnect=false"
Elasticsearch: server=http://localhost:9200;replicas=0
Storage: provider=folder;path=D:\webform\expectionless\storage
# Cache: provider=redis;
# MessageBus: provider=redis;
# Metrics: provider=statsd;server=10.0.0.5;
# Queue: provider=redis;
Email: "smtps://10000:bsvfwsfcucxwagfa@smtp.qq.com:465"
# OAuth: FacebookId=395178683904310;GitHubId=7ef1dd5bfbc4ccf7f5ef;GoogleId=809763155066-enkkdmt4ierc33q9cft9nf5d5c02h30q.apps.googleusercontent.com;MicrosoftId=000000004C137E8B;SlackId=34500115540.177239122322;

# Base url for the ui used to build links in emails and other places.
#BaseURL: https://dev.exceptionless.io
BaseURL: http://ex.xxxxx.net

# Exceptionless Client Settings
#ExceptionlessServerUrl: https://dev-api.exceptionless.io
ExceptionlessServerUrl: http://exapi.xxxxx.net/
InternalProjectId: 50ca6b2423d6c8493020b823
#TestEmailAddress: 10000@qq.com
#SmtpEncryption: StartTLS

#是否將作業運行在同一個進程中,如果為true,則在同一個進程中運行作業,如果false,則需要單獨開啟 Exceptionless.Job
RunJobsInProcess: true

#將允許外發郵件的郵箱域名加到這里,不然的話會統一發往 TestEmailAddress這個郵箱
AllowedOutboundAddresses: "qq.com,xxxxx.net"

#如果是用QQ郵箱發郵件的話,需要加上發件郵箱賬號,因為QQ郵箱的smtp服務需要驗證這個。
SmtpFrom: 10000@qq.com

#urls: http://localhost:5000
Serilog:
MinimumLevel:
Default: Debug

 

 重啟expectionless后,訪問 Exceptionless.UI這個項目的IIS站點,應該正常能注冊創建賬號了。

如果根據以上步驟還是不能搞定的,請留言或私信我。為了搗鼓手動部署,浪費了我不少時間,希望該文章能為下一個和我一樣手動部署的你節省寶貴的時間。

最后上一張圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM