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>
2019-04-12 11:35:07 未知 回复