首页 >  C#/.net >  Exceptionless本地IIS部署
Exceptionless本地IIS部署
编辑时间:2023-10-27 16:56:25 浏览量:159

    Exceptionless有官方的系统,但要钱,免费的限制太大,只能加一个项目,考虑自己部署到自己的服务器。

    以前部署过7.2.1版本,那时是.net5的,现在成.net6了,折腾了下没成功,总有那么点问题,然后又换8.0.4版本,elasticsearch要使用8,我下了最新的elasticsearch 8.10.4,部署好后,有的接口报错,又不行,又考虑换版本,折腾死了,最后想是不是elasticsearch版本太高了,换成elasticsearch 8.0.0,它妈的,可以了。文档又不写具体支持哪些版本,只写es8,太高还不行,搞死人。


在此写下部署过程,记录下以后万一还要用,也避免其它人折腾。


一、安装elasticsearch

       进入https://www.elastic.co/cn/downloads/elasticsearch 下载8.0.0版本,具体其它哪些版本能用我也不清楚,反正8.10.4会出现Exceptionless接口报错。


1、下载解压后进入config文件夹下,找到elasticsearch.yml文件,在最后增加如下内容:

http.cors.enabled: true 
http.cors.allow-origin: "*" 
xpack.security.enabled: false    #不使用https
ingest.geoip.downloader.enabled: false  #不连接GeoLite2-ASN.mmdb库

elasticsearch8会比较占内存,可以设置config下的jvm.options文件

## -Xms4g
## -Xmx4g
改为
-Xms2g
-Xmx2g
表示2G,具体设多少自己把握


2、进入bin文件,默认什么都不用改,直接双击elasticsearch.bat,等待初始化安装即可。


3、cmd进入bin文件目录,执行命令elasticsearch-service.bat install安装windows服务,然后用elasticsearch-service.bat manager设置服务为自启动,然后点击启动或命令启动服务(注:刚开始可能启动一会就停掉,等会再启动

elasticsearch-service.bat install #注册为服务
elasticsearch-service.bat remove  #删除服务
elasticsearch-service.bat start   #启动服务
elasticsearch-service.bat stop    #停止服务
elasticsearch-service.bat manager #管理服务,设置服务启动类型,设置自动

打开http://localhost:9200有内容表示成功


4、安装mapper-size

    下载插件 https://artifacts.elastic.co/downloads/elasticsearch-plugins/mapper-size/mapper-size-8.0.0.zip(版本要与elasticsearch对应),然后进入cmd进入elasticsearch的bin文件目录,执行如下命令

elasticsearch-plugin install file:///D:\Exceptionless\mapper-size-8.0.0.zip

这个路径改为你刚刚下载的mapper-size文件的存放路径,打开http://localhost:9200/_cat/plugins有mapper-size-8.0.0内容表示成功


二、部署Exceptionless

    下载地址:https://github.com/exceptionless/Exceptionless/releases,找到8.0.0版本下载。


1、用VS打开项目,修改appsettings.Production.yml文件如下(测试相应的修改appsettings.Development.yml)

---
ConnectionStrings:
  Elasticsearch: server=http://localhost:9200
#  Cache: provider=redis;server="localhost,abortConnect=false"
#  MessageBus: provider=redis;server="localhost,abortConnect=false"
#  Queue: provider=redis;server="localhost,abortConnect=false"
#  Storage: ''
  Storage: provider=folder;path=.\storage
  Email: 'smtps://327****:baihtyz****@smtp.qq.com:587' 
#  LDAP: ''
#  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: 'http://localhost:5000/'

RunJobsInProcess: true

# Controls whether users can signup.
EnableAccountCreation: true

# Exceptionless Client Settings
ExceptionlessServerUrl: http://localhost:5000
InternalProjectId: 50ca6b2423d6c8493020b823

# test email
SmtpFrom: 32725***@qq.com
TestEmailAddress: 32725***@qq.com

Serilog:
  MinimumLevel:
    Default: Warning
  WriteTo:
  - Name: Console
    Args: 
      theme: "Serilog.Sinks.SystemConsole.Themes.ConsoleTheme::None, Serilog.Sinks.Console"

Apm:
  ServiceEnvironment: prod

Elasticsearch: server=http://localhost:9200为前面安装的Elasticsearch地址

Email是用于发邮件的smtp地址

多个地方的http://localhost:5000是部署地址

SmtpFrom和TestEmailAddress都是发送邮件地址和测试邮件地址

其它的就不改了,如暂时不用redis,不独立Jobs


2、修改前端Exceptionless.Web\ClientApp下的app.config.js(不改也可以)

constant("USE_HTML5_MODE", false)
改为
constant("USE_HTML5_MODE", true)  避免地址中有#!

以前可以还要改constant("BASE_URL", window.location.origin),但现在前后端是部署
在一起,不需要改

   

 3、然后发布(独立或依赖都可以,看自己服务器是否装了.net6),前端代码在ClientApp文件夹中,发布项目会发布到wwwroot中,上传到服务器部署即可。

    以前的版本是Api和前端分开部署的,现在可以一起部署,比如以前Api部署http://localhost:5000,前端部署http://localhost:5100,现在直接部署一个,如http://localhost:5000即可


    至此就部署好了,浏览器中打开 http://localhost:5000,然后注册,登录就能用了,后面的项目代码中如何接入就使用Exceptionless就不说了。


三、Delete接口失败问题

        在IIS部署完后,删除日志等可能会报“405 Method Not Allowed”,发现删除接口用的是“DELETE”方式调用的,有可能是模块WebDAVModule的原因,在web.config文件中增加如下代码去除WebDAVModule

<modules runAllManagedModulesForAllRequests="true">  
   <remove name="WebDAVModule" />  
</modules>

例如:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <modules runAllManagedModulesForAllRequests="true">  
        <remove name="WebDAVModule" />  
      </modules>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath=".\Exceptionless.Web.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>