在上一篇文章Exceptionless - .Net Core开源日志框架中就说到如何对Exceptionless进行本地化部署,不过我也跟大家说了,仅限于能用的阶段。那今天我就继续来探讨一下如何再用好。
后台运行服务上次我就是直接通过脚本Start-ElasticSearch.ps1启动ElasticSearch和Kibana服务,但是大家也能看到,服务是运行起来了,同时还有两个命令窗口,如果一个不小心把窗口关闭了,服务也就关闭了,而且一旦服务器重启了,这两个服务也不会自动启动。
我这里先暂时把Kibana扔一边去,来看看ElasticSearch服务。ElasticSearch是直接有脚本支持将ElasticSearch安装为Windows服务,在后台运行。
就是这个elasticsearch-service.bat脚本,支持一下参数:
install 将Elasticsearch作为服务安装
remove 删除已安装的Elasticsearch服务(并在启动时停止服务)
start 启动Elasticsearch服务(如果已安装)
stop 停止Elasticsearch服务(如果启动)
manager 启动一个GUI来管理已安装的服务
安装
命令行,进入到elasticsearch-service.bat所在的目录,然后执行下面的脚本
启动
这个时候我们可以直接在浏览器访问9200端口看看服务是否正常
继续使用上次部署好的Exceptionless
(如何使用IIS部署Exceptionless Web服务,请看Exceptionless - .Net Core开源日志框架)
因为我是直接用回之前ElasticSearch的节点,而且也没有清空数据,所以可以直接用之前注册的账号重新登录
也是成功的,ElasticSearch服务已经运行在后台了。
自动启动
通过ElasticSearch提供的GUI可以将服务设置为自动启动
将Startup Type选择为Automatic,再点击OK保存
这样,即使服务器重启了,我们的ElasticSearch服务也会自动启动
其实,有玩过Windows服务的朋友一定知道,上面的一些操作在Windows自带的服务管理器也能完成
同时按下"WIN+R" 打开服务的命令运行窗口。在服务运行窗口中输入services.msc
在列表中也可以找到ElasticSearch服务,双击打开属性窗口,跟刚刚的GUI操作就是一样的了
再看Web.config上次我只是改了Exceptionless的端口设置,其实这里面还包含很多配置信息
<add connectionString="localhost:6379,abortConnect=false" /> <add connectionString="http://localhost:9200" />官方是建议大家安装和配置Redis,这样就可以同时运行多个实例,并且重启不会丢失状态,强烈建议在Linux上运行Redis 3.0+版本,RedisConnectionString就是Redis的连接串
ElasticSearchConnectionString是必须的,指向ElasticSearch服务,如果有多个节点,则使用,隔开
<!-- Exceptionless Web 基础Url --> <add key="BaseURL" value="http://localhost:50001/#" /> <!-- 是否启用ssl --> <add key="EnableSSL" value="false" /> <!-- Dev: Use this mode when debugging. (Outbound emails will not be sent) QA: Use this mode when deployed to staging. (Outbound emails restricted) Production: Use this mode when deployed to production. --> <add key="WebsiteMode" value="Production" /> <!-- Controls whether users can signup. --> <add key="EnableAccountCreation" value="true" /> <!-- Controls whether daily summary emails are sent --> <add key="EnableDailySummary" value="true" />网站模式WebsiteMode主要是限制邮件发送,默认值是Dev,不发送邮件,所以我这里设置为Production
邮件发送配置,记得跟上面的WebsiteMode一起配置
<add key="SmtpHost" value="smtp.qq.com" /> <add key="SmtpPort" value="25" /> <add key="SmtpEncryption" value="SSL" /> <add key="SmtpUser" value="xxx@qq.com" /> <add key="SmtpPassword" value="xxx" />我在案例中使用的是自己的qq邮箱。我在qq邮箱中已经开启了SMTP服务,并且也通过一个控制台应用程序测试可以发送邮件。
但是在Exceptionless这里一样的设置就是不行,在Web中点击发送邮件,log记录错误如下:
ERROR MailMessageJob Job run "MailMessageJob" failed: 由于意外的数据包格式,握手失败。 System.IO.IOException: 由于意外的数据包格式,握手失败。
清除Url
我们现在使用的Url都会带有#!,例如
可以按照下面步骤清除字符#!
首先保证你的IIS是否已经安装了重写模块,可通过双击IIS中的模块查看是否包含了RewriteModule
更新Web.config文件
释放出在system.webServer中的rewrite节点
删除BaseURL值中的/#
注释了在system.webServer\modules中的<remove />标签
修改app.config.77fc9ddd679d37dc.js文件中USE_HTML5_MODE的值为true