关于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站点,应该正常能注册创建账号了。

如果根据以上步骤还是不能搞定的,请留言或私信我。为了捣鼓手动部署,浪费了我不少时间,希望该文章能为下一个和我一样手动部署的你节省宝贵的时间。

最后上一张图

exceptionless 在 windows 上 手动部署,非docker 详细步骤的更多相关文章

  1. Tomcat手动部署Web项目详细步骤

    阅读须知:文章基于Tomcat8,其它版本若有差异,请自行辨别.本文为博主原创文章,转载请附原文链接. 不借助任何IDE,这里介绍在Tomcat中手动部署web项目的三种方式: 1.部署解包的weba ...

  2. 在windows 上编译部署Rap2

    在windows 上编译部署Rap2 引言 安装需要的环境 安装后端站点 创建数据库 在全局安装pm2 和 typescript 配置mysql,redis 数据库链接配置 初始化 编译 初始化数据库 ...

  3. Primecoin在windows上的部署和启动服务

     Primecoin在windows上的部署和启动服务: 一.从官方获得Primecoin的windows版安装包: 二.一路像安装客户端一样的安装: 三.安装成功后它会自动弹出客户端运行,同步数据, ...

  4. Zabbix agent 在windows上安装部署

    Zabbix agent 在windows上安装部署 1.下载与解压 地址: http://www.zabbix.com/downloads/2.4.4/zabbix_agents_2.4.4.win ...

  5. 使用 Azure CLI 在 Azure China Cloud 云平台上手动部署一套 Cloud Foundry

    这篇文章将介绍如何使用 Azure CLI 在 Azure China Cloud 云平台上手动部署一套 Cloud Foundry.本文的目的在于: 了解作为 PaaS 的 Cloud Foundr ...

  6. jenkins在windows上自动化部署.Net(.Net Core)项目

    前言 什么是持续集成呢?Continuous integration(CI).持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集成. ...

  7. Python+CGI,在Windows上快速部署Python到IIS

    通过CGI,我们可以快速在Windows上部署Python 1. Windows安装IIS服务 2. 在IIS里打开“ISAPI和CGI限制”->添加,路径=python.exe的完全路径+&q ...

  8. 在Windows上安装部署Cuckoo

    1. Cuckoo使用的第三方工具及库 Yara:http://plusvic.github.io/yara/ Pydeep:https://github.com/kbandla/pydeep Yar ...

  9. Kubernetes集群的部署方式及详细步骤

    一.部署环境架构以及方式 第一种部署方式 1.针对于master节点 将API Server.etcd.controller-manager.scheduler各组件进行yum install.编译安 ...

  10. Windows Server 2016 配置 IIS 的详细步骤

    Ø  简介 本文主要记录 Windows Server 2016 环境下,安装配置 IIS 的详细步骤.需要说明的是,在选择"功能"或"角色服务"时不建议将所有 ...

随机推荐

  1. python rsa-oaep加密示例

    代码: 1 from Crypto.PublicKey import RSA 2 from Crypto.Cipher import PKCS1_OAEP 3 import base64 4 rsa_ ...

  2. 面试官:Dubbo一次RPC调用会经过哪些环节?

    大家好,我是三友~~ 今天继续探秘系列,扒一扒一次RPC请求在Dubbo中经历的核心流程. 本文是基于Dubbo3.x版本进行讲解 一个简单的Demo 这里还是老样子,为了保证文章的完整性和连贯性,方 ...

  3. oeasy教您玩转vim - 39 - # 剪切粘贴

    ​ 剪切粘贴 回忆上节课内容 我们大幅度地复习了整个 motion: 直接运动 h j k l 行运动 首行g g 末行G 第n行n G 单词运动 wbe w 是到下一个 word 的开头 b 是到当 ...

  4. 学习笔记--Java中方法递归调用

    Java中方法递归调用 public class RecursionTest01{ public static void main(String[] args){ System.out.println ...

  5. openEuler 安装 DocekrCE

    就个人而言,openEuler 算是不错的国产化操作系统."一脉传承"自redhat让实际的使用体验非常丝滑.软件源都是国内的,开箱即用,漏洞的补丁发的也挺及时.美中不足的是貌似 ...

  6. mybatis源码分析:Mapper接口是什么

    在<mybatis源码分析:启动过程>中分析了mybatis的启动过程,mybatis的启动过程主要集中在解析其核心配置文件(mybatis-config.xml)上,把配置文件中的配置全 ...

  7. c++ 快速复习第一部份

    去年有事无事学过一c++ ,,由于工作用不上,学来没有用,所以学得乱七八的,最近需要复习一下,因为最近想学习一下硬 件相关 第一   引用头文件和自定义头 #include <iostream& ...

  8. JavaScript 中的闭包和事件委托

    包 (Closures) 闭包是 JavaScript 中一个非常强大的特性,它允许函数访问其外部作用域中的变量,即使在该函数被调用时,外部作用域已经执行完毕.闭包可以帮助我们实现数据的私有化.封装和 ...

  9. 【CI/CD】Centos7 下载安装 Jenkins

    一.Docker安装Jenkins 参考: https://www.bilibili.com/video/BV11B4y1W7eH?p=5 安装Jenkins最新稳定版镜像: [root@Centos ...

  10. 【YAML】非标记语言的标记语言

    什么是YAML? YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写. 在开发的这种语言时,YAML 的意思其实是:&qu ...