<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>txtName</title><link>https://blog.txtname.cn/</link><description>博客</description><item><title>腾讯云轻量应用服务器纯Docker环境部署网站和mysql等服务</title><link>https://blog.txtname.cn/2023/05/10.html</link><description>&lt;p&gt;由于之前购买的服务器到期，要把原有的网站和服务迁移过来，下面记录的是遇到的问题和解决方案。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;原服务器是3年前以个人新用户300块买的3年的2核4G5M带宽的服务器，现在到期了续费不起太贵了而且也用不到这么高的配置，在阿里云和腾讯云对比下最终选择了老用户可以参加的优惠购买了现在这款服务器，配置是2核2G4M带宽，但月流量是300G，3年1000，也完全够用。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;之前为了省事，老服务器上装的宝塔面板，部署网站和其他服务很方便。但现在换了轻量应用服务器，ubuntu系统内置Docker环境，腾讯云控制台可以直接部署容器，虽然用不到。。。这次不想再用宝塔面板，想纯手动部署以更加熟练和了解Docker的一些命令和机制。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;先说网站，网站就是现在的ZBlog，把之前的网站的备份上传到新服务器，由于网站里有上传的附件等可编辑的目录等，本人也对linux下的权限什么的也不太精通（主要是懒），所以打算用nginx直接挂载宿主机目录来实现访问而不是用打包镜像的方法。具体访问结构是，先部署一个web-nginx容器负责整个宿主机80和443的访问，这个web-nginx仅负责接收外部请求然后转发到内部各个容器服务，不涉及php等其他内容的解析什么的，仅仅就是转发，一个网站一个配置文件。&lt;/p&gt;&lt;p&gt;先看一下我的目录结构&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2023/05/202305111683771582210273.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;每个目录下都有一个部署该服务的docker-compose.yml文件，下来先说这个web-nginx，certs目录里放着所有网站的ssl证书，conf.d里是所有网站的配置文件&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2023/05/202305111683771690865434.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;docker-compose.yml&lt;/p&gt;&lt;pre class=&quot;language-markup&quot;&gt;version:&amp;nbsp;&amp;#39;3.9&amp;#39;

services:
&amp;nbsp;&amp;nbsp;web-nginx:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;container_name:&amp;nbsp;&amp;#39;web-nginx&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;restart:&amp;nbsp;always
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;image:&amp;nbsp;&amp;#39;nginx:latest&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ports:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;&amp;#39;80:80&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;&amp;#39;443:443&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;volumes:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;/home/txtname/docker/nginx/certs:/certs
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;/home/txtname/docker/nginx/conf.d:/etc/nginx/conf.d
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;/home/txtname/docker/web_sites:/web_sites
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;environment:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;TZ=Asia/Shanghai
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;networks:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;mynetwork
networks:
&amp;nbsp;&amp;nbsp;mynetwork:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;txtname_default
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;external:&amp;nbsp;true&lt;/pre&gt;&lt;p&gt;blog.txtname.cn.conf&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-  language-actionscript&quot;&gt;server&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;listen&amp;nbsp;80;
&amp;nbsp;&amp;nbsp;&amp;nbsp;listen&amp;nbsp;443&amp;nbsp;ssl;
&amp;nbsp;&amp;nbsp;&amp;nbsp;server_name&amp;nbsp;blog.txtname.cn;

&amp;nbsp;&amp;nbsp;&amp;nbsp;ssl_certificate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/certs/blog.txtname.cn.pem;
&amp;nbsp;&amp;nbsp;&amp;nbsp;ssl_certificate_key&amp;nbsp;&amp;nbsp;/certs/blog.txtname.cn.key;

&amp;nbsp;&amp;nbsp;&amp;nbsp;location&amp;nbsp;/&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_pass&amp;nbsp;http://blog-web:8080;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_set_header&amp;nbsp;Host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;blog.txtname.cn;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_set_header&amp;nbsp;X-Forwarded-For&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$proxy_add_x_forwarded_for;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_set_header&amp;nbsp;X-Forwarded-Proto&amp;nbsp;&amp;nbsp;&amp;nbsp;$scheme;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_set_header&amp;nbsp;X-Forwarded-Port&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$server_port;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;上面的http://blog-web:8080就是本站的nginx，下面看一下网站的docker-compose.yml和nginx.conf&lt;/p&gt;&lt;p&gt;docker-compose.yml&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-  language-actionscript&quot;&gt;version:&amp;nbsp;&amp;quot;3.9&amp;quot;
services:
&amp;nbsp;&amp;nbsp;&amp;nbsp;blog-web:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;container_name:&amp;nbsp;blog-web
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;image:&amp;nbsp;bitnami/nginx:1.16.1-debian-9-r56
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;depends_on:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;blog-web-php-fpm
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;restart:&amp;nbsp;always
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;volumes:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;/home/txtname/docker/web_sites/blog.txtname.cn/www:/app
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;/home/txtname/docker/web_sites/blog.txtname.cn/nginx.conf:/opt/bitnami/nginx/conf/server_blocks/myapp.conf
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;networks:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;mynetwork
&amp;nbsp;&amp;nbsp;&amp;nbsp;blog-web-php-fpm:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;container_name:&amp;nbsp;blog-web-fpm
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;image:&amp;nbsp;bitnami/php-fpm:5.5.30-2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;restart:&amp;nbsp;always
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;volumes:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;/home/txtname/docker/web_sites/blog.txtname.cn/www:/app
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;networks:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;mynetwork
networks:
&amp;nbsp;&amp;nbsp;mynetwork:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;txtname_default
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;external:&amp;nbsp;true&lt;/pre&gt;&lt;p&gt;nginx.conf&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-  language-actionscript&quot;&gt;server&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listen&amp;nbsp;&amp;nbsp;8080;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;root&amp;nbsp;&amp;nbsp;&amp;nbsp;/app;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;location&amp;nbsp;/&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;index&amp;nbsp;&amp;nbsp;index.html&amp;nbsp;index.htm&amp;nbsp;index.php;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#error_page&amp;nbsp;&amp;nbsp;404&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/404.html;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;redirect&amp;nbsp;server&amp;nbsp;error&amp;nbsp;pages&amp;nbsp;to&amp;nbsp;the&amp;nbsp;static&amp;nbsp;page&amp;nbsp;/50x.html
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;error_page&amp;nbsp;&amp;nbsp;&amp;nbsp;500&amp;nbsp;502&amp;nbsp;503&amp;nbsp;504&amp;nbsp;&amp;nbsp;/50x.html;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;location&amp;nbsp;=&amp;nbsp;/50x.html&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;root&amp;nbsp;&amp;nbsp;&amp;nbsp;/opt/bitnami/nginx/html;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;pass&amp;nbsp;the&amp;nbsp;PHP&amp;nbsp;scripts&amp;nbsp;to&amp;nbsp;FastCGI&amp;nbsp;server&amp;nbsp;listening&amp;nbsp;on&amp;nbsp;127.0.0.1:9000
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;location&amp;nbsp;~&amp;nbsp;\.php$&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fastcgi_pass&amp;nbsp;&amp;nbsp;&amp;nbsp;blog-web-fpm:9000;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fastcgi_index&amp;nbsp;&amp;nbsp;index.php;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fastcgi_param&amp;nbsp;&amp;nbsp;SCRIPT_FILENAME&amp;nbsp;&amp;nbsp;/app$fastcgi_script_name;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;include&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fastcgi_params;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(-f&amp;nbsp;$request_filename/index.html){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rewrite&amp;nbsp;(.*)&amp;nbsp;$1/index.html&amp;nbsp;break;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(-f&amp;nbsp;$request_filename/index.php){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rewrite&amp;nbsp;(.*)&amp;nbsp;$1/index.php;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!-f&amp;nbsp;$request_filename){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rewrite&amp;nbsp;(.*)&amp;nbsp;/index.php;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;deny&amp;nbsp;access&amp;nbsp;to&amp;nbsp;.htaccess&amp;nbsp;files,&amp;nbsp;if&amp;nbsp;Apache&amp;#39;s&amp;nbsp;document&amp;nbsp;root
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#&amp;nbsp;concurs&amp;nbsp;with&amp;nbsp;nginx&amp;#39;s&amp;nbsp;one
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;#
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;location&amp;nbsp;~&amp;nbsp;/\.ht&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;deny&amp;nbsp;&amp;nbsp;all;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;至此，把上面的这些内容都部署以后就可以访问到网站了。下来还需要部署mysql。&lt;/p&gt;&lt;p&gt;mysql的docker-compose.yml&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-  language-actionscript&quot;&gt;version:&amp;nbsp;&amp;#39;3.9&amp;#39;

services:
&amp;nbsp;&amp;nbsp;mysql:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;container_name:&amp;nbsp;mysql
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;restart:&amp;nbsp;always
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;image:&amp;nbsp;&amp;#39;bitnami/mysql:5.7.37&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;volumes:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;/home/txtname/docker/mysql/data:/bitnami/mysql/data
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;environment:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;MYSQL_ROOT_PASSWORD=your_root_password
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;BITNAMI_DEBUG=true
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;TZ=Asia/Shanghai
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;networks:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;mynetwork
&amp;nbsp;&amp;nbsp;phpmyadmin:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;container_name:&amp;nbsp;phpmyadmin
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;image:&amp;nbsp;&amp;#39;phpmyadmin:latest&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;volumes:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;./phpmyadmin.config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;environment:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;PMA_HOST=mysql
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;restart:&amp;nbsp;always
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;networks:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;mynetwork
networks:
&amp;nbsp;&amp;nbsp;mynetwork:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;txtname_default
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;external:&amp;nbsp;true&lt;/pre&gt;&lt;p&gt;然后是phpmyadmin的配置文件，是为了部署在二级目录下的配置，选择这种方式部署是想把后续服务都部署在域名的二级目录下，这样不用申请很多证书，也方便记忆和管理。。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-  language-php&quot;&gt;&amp;lt;?php
$cfg[&amp;#39;PmaAbsoluteUri&amp;#39;]=&amp;#39;https://domain.com/phpmyadmin/&amp;#39;;&lt;/pre&gt;&lt;p&gt;phpmyadmin等其他服务的nginx.conf，强制跳转https&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-  language-actionscript&quot;&gt;server&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;listen&amp;nbsp;80;
&amp;nbsp;&amp;nbsp;&amp;nbsp;server_name&amp;nbsp;domain.com;

&amp;nbsp;&amp;nbsp;&amp;nbsp;rewrite&amp;nbsp;^(.*)&amp;nbsp;https://$server_name$1&amp;nbsp;permanent;
}
server&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;listen&amp;nbsp;443&amp;nbsp;ssl;
&amp;nbsp;&amp;nbsp;&amp;nbsp;server_name&amp;nbsp;domain.com;

&amp;nbsp;&amp;nbsp;&amp;nbsp;ssl_certificate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/certs/domain.pem;
&amp;nbsp;&amp;nbsp;&amp;nbsp;ssl_certificate_key&amp;nbsp;&amp;nbsp;/certs/domain.key;

&amp;nbsp;&amp;nbsp;&amp;nbsp;location&amp;nbsp;/phpmyadmin/&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_pass&amp;nbsp;http://phpmyadmin/;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_set_header&amp;nbsp;Host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;domain.com;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_set_header&amp;nbsp;X-Forwarded-For&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$proxy_add_x_forwarded_for;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_set_header&amp;nbsp;X-Forwarded-Proto&amp;nbsp;&amp;nbsp;&amp;nbsp;$scheme;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;proxy_set_header&amp;nbsp;X-Forwarded-Port&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$server_port;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/pre&gt;&lt;p&gt;好了，mysql和phpmyadmin部署完成，基本的访问和管理都已就绪，后面通过phpmyadmin把之前备份的网站数据库导入就可以了。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 20px;&quot;&gt;&lt;strong&gt;下面说说部署过程中遇到的一些问题&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;1、部署完blog网站后，web-nginx访问不到blog-web，然后想起来每个容器内部的网络都是隔离和独立的，后来用了links方式把这些服务都绑到一起，但感觉很别扭，想想后面如果再增加其他服务还要一个个去绑定真的很烦。后来查了docker-compose的文档，发现可以用networks这个东西，他可以让各个容器加入同一个网络，然后通过容器名称或别名直接访问，就像上面配置文件里的那样，直接访问mysql、blog-web等。&lt;/p&gt;&lt;p&gt;txtname_default这个network是预先创建的好的&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-  language-bash&quot;&gt;sudo&amp;nbsp;docker&amp;nbsp;network&amp;nbsp;create&amp;nbsp;txtname_default&lt;/pre&gt;&lt;p&gt;另外说一下，如果用docker-compose方式部署报错，说使用了未定义的network的或不支持network.external属性的时候基本上就是docker-compose版本低了不支持，我最早是单独修改docker-compose.yml 里的version不起作用，查了才知道是版本低了，更新命令如下，文档地址：&lt;a title=&quot;参考地址&quot; href=&quot;https://docs.docker.com/compose/install/standalone/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.docker.com/compose/install/standalone/&lt;/a&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-  language-bash&quot;&gt;curl&amp;nbsp;-SL&amp;nbsp;https://github.com/docker/compose/releases/download/v2.17.3/docker-compose-linux-x86_64&amp;nbsp;-o&amp;nbsp;/usr/local/bin/docker-compose
sudo&amp;nbsp;ln&amp;nbsp;-s&amp;nbsp;/usr/local/bin/docker-compose&amp;nbsp;/usr/bin/docker-compose&lt;/pre&gt;&lt;p&gt;2、全部部署完以后发现，既然创建了单独的网络，那就没必要把所有服务都暴露，后来就只留了web-nginx的80和443的映射，其他的全都去掉了，让他们通过内部网络直接访问这样更安全。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2023/05/202305111683773985768690.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;</description><pubDate>Thu, 11 May 2023 09:58:15 +0800</pubDate></item><item><title>WinForm Label自动换行</title><link>https://blog.txtname.cn/2022/05/9.html</link><description>&lt;p&gt;AutoSize=false时会自动换行，但超出范围的不显示&lt;/p&gt;&lt;p&gt;AutoSize=true时不会自动换行，超出范围的也看不到&lt;/p&gt;&lt;p&gt;可以使用TextBox的自动换行特性来获取需要的合适的大小&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2022/05/202205131652435238857471.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2022/05/202205131652434641443890.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-csharp&quot;&gt;//构造函数里或初始化控件的地方
_textbox&amp;nbsp;=&amp;nbsp;new&amp;nbsp;TextBox&amp;nbsp;{&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//设置TextBox允许的最大宽度
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaximumSize&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Size(315,&amp;nbsp;0),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Multiline&amp;nbsp;=&amp;nbsp;true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WordWrap&amp;nbsp;=&amp;nbsp;true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Visible&amp;nbsp;=&amp;nbsp;false,
};
Controls.Add(_textbox);
lblMessage.TextChanged&amp;nbsp;+=&amp;nbsp;LblMessage_TextChanged;

//在给Label控件赋值的地方
_textbox.Text&amp;nbsp;=&amp;nbsp;message;
lblMessage.Text&amp;nbsp;=&amp;nbsp;message;

private&amp;nbsp;void&amp;nbsp;LblMessage_TextChanged(object&amp;nbsp;sender,&amp;nbsp;EventArgs&amp;nbsp;e)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//获取TextBox的首选大小，系统推荐的
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;newSize&amp;nbsp;=&amp;nbsp;_textbox.PreferredSize;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//如果新的高度高于默认窗体高度内Label能显示的最高高度就改变窗体高度
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//同步修改Label的宽高
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(newSize.Height&amp;nbsp;&amp;gt;&amp;nbsp;80)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Height&amp;nbsp;+=&amp;nbsp;newSize.Height&amp;nbsp;-&amp;nbsp;80;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lblMessage.AutoSize&amp;nbsp;=&amp;nbsp;false;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lblMessage.Width&amp;nbsp;=&amp;nbsp;newSize.Width;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lblMessage.Height&amp;nbsp;=&amp;nbsp;newSize.Height;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Label居中显示
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lblMessage.Location&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Point(lblMessage.Location.X,&amp;nbsp;(Height&amp;nbsp;-&amp;nbsp;lblMessage.Height&amp;nbsp;-&amp;nbsp;CaptionHeight)/2&amp;nbsp;+&amp;nbsp;5);
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Fri, 13 May 2022 17:34:24 +0800</pubDate></item><item><title>[转]安装.Net Framework 4.7+出现证书链和时间戳错误的解决办法</title><link>https://blog.txtname.cn/2021/07/5.html</link><description>&lt;p&gt;最新发现有些小伙伴在Win7系统安装.net4.7.2的时候出现一些错误导致安装不上，自己就安装了一个Win7 sp1的虚拟机来测试。&lt;/p&gt;&lt;p&gt;果然出现的第一个错误是“&lt;span style=&quot;color: #FF0000;&quot;&gt;已处理证书链，但是在不受信任提供程序信任的根证书终止。&lt;/span&gt;”&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2021/07/202107141626242234401393.png&quot; style=&quot;&quot; title=&quot;net472_error1.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;如果这时候你百度说让你安装一个名为“&lt;span style=&quot;color: #FF0000;&quot;&gt;MicrosoftRootCertificateAuthority2011.cer&lt;/span&gt;”，那么你就会出现“&lt;span style=&quot;color: #FF0000;&quot;&gt;时间戳签名/或证书无法验证或已损坏&lt;/span&gt;”&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2021/07/202107141626242548502956.png&quot; title=&quot;net472_error2.png&quot; alt=&quot;net472_error2.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;然后你再百度的话会让你安装一个“&lt;span style=&quot;color: #FF0000;&quot;&gt;Windows6.1-KB2813430&lt;/span&gt;”的补丁，不过装完依然是这个错误&lt;/p&gt;&lt;p&gt;后来发现了博客园的一篇文章直接解决问题，所以就记录下来方便小伙伴们搜索查询。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 36px;&quot;&gt;解决办法：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;安装独立安全更新&lt;/strong&gt;&lt;strong&gt;KB4474419&lt;/strong&gt;&lt;strong style=&quot;margin: 0px; padding: 0px; color: rgb(51, 51, 51); font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;以引入 SHA-2 代码签名支持。&lt;/strong&gt;&lt;span style=&quot;color: #FF0000;&quot;&gt;MicrosoftRootCertificateAuthority2011.cer&lt;/span&gt;和&lt;span style=&quot;color: #FF0000;&quot;&gt;Windows6.1-KB2813430&lt;span style=&quot;color: #000000;&quot;&gt;完全不用安装，装了也没用！！！&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #FF0000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;补丁下载地址：&lt;a href=&quot;https://www.catalog.update.microsoft.com/search.aspx?q=kb4474419&quot; target=&quot;_blank&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(0, 0, 0); font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;https://www.catalog.update.microsoft.com/search.aspx?q=kb4474419&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;根据系统选择版本安装即可，安装完需要重启系统，然后再安装.Net Framework&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2021/07/202107141626243178114157.png&quot; style=&quot;&quot; title=&quot;net472_solution1.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2021/07/202107141626243178122280.png&quot; style=&quot;&quot; title=&quot;net472_solution2.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;文章转自：&lt;a href=&quot;https://www.cnblogs.com/TopStop/p/14952149.html&quot; target=&quot;_blank&quot;&gt;https://www.cnblogs.com/TopStop/p/14952149.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #FF0000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 14 Jul 2021 13:53:08 +0800</pubDate></item><item><title>记一次“机智如我”的部署Exceptionless中遇到的各种坑</title><link>https://blog.txtname.cn/2020/06/4.html</link><description>&lt;p&gt;由于不想每次都在项目发生异常的时候登录服务器查看日志，尤其是项目多的时候，根据&lt;span style=&quot;color: #FF0000;&quot;&gt;以往的了解&lt;/span&gt;最终选择使用轻量级的日志框架Exceptionless（Windows环境）。&lt;/p&gt;&lt;p&gt;然后随便打开了一个部署教程开始搞&lt;/p&gt;&lt;p&gt;OK，现在下载ES，地址：&lt;a href=&quot;https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.1-windows-x86_64.zip&quot; target=&quot;_blank&quot; textvalue=&quot;Elasticsearch-7.7.1&quot;&gt;Elasticsearch-7.7.1&lt;/a&gt;&amp;nbsp; &amp;nbsp;&lt;a href=&quot;https://www.elastic.co/cn/downloads/elasticsearch&quot; target=&quot;_blank&quot;&gt;其他版本下载&lt;/a&gt;&lt;/p&gt;&lt;p&gt;因为ES是由Java开发的，so..还要JDK，由于没有Oracle账号也不想登录，就百度了某下载站的链接。地址：&lt;a href=&quot;http://dl-t1.wmzhe.com/30/30118/jdk_8.0.1310.11_64.exe&quot; target=&quot;_blank&quot;&gt;某下载站JDK1.8&lt;/a&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #FF0000; text-decoration: underline;&quot;&gt;&lt;a href=&quot;https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html&quot; target=&quot;_blank&quot; style=&quot;color: rgb(255, 0, 0); text-decoration: underline;&quot;&gt;官方JDK下载地址&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;安装JDK...&lt;/p&gt;&lt;p&gt;解压ES...运行ES目录/bin/elasticsearch.bat 就能启动ES，如果想把ES安装成服务的话可以用命令行在ES的bin目录里运行cmd，elasticsearch-service.bat install&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591951735397053.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;默认地址是：&lt;a href=&quot;http://localhost:9200&quot; _src=&quot;http://localhost:9200&quot;&gt;http://localhost:9200&lt;/a&gt;，能看到下面这个结果就说明ES已经跑起来了&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591951543392035.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;由于ES我是部署在内网服务器上的，想要本机也能访问到需要修改配置文件，我就去找config/elasticsearch.yml这个配置文件。&lt;/p&gt;&lt;p&gt;大概观察了一下知道要修改成这样&lt;/p&gt;&lt;div style=&quot;color: rgb(212, 212, 212); background-color: rgb(30, 30, 30); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; line-height: 19px; white-space: pre;&quot;&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;network.host&lt;/span&gt;: &lt;span style=&quot;color: #b5cea8;&quot;&gt;0.0.0.0&lt;/span&gt;&lt;/div&gt;&lt;p&gt;以为好了的时候发现又出了其他错误，去看了ES的启动日志发现有这么一行&lt;/p&gt;&lt;p&gt;[2020-06-12T17:06:25,430][ERROR][o.e.b.Bootstrap] [WIN-JUS4E3TPC8V] node validation exception&lt;/p&gt;&lt;p&gt;[1] bootstrap checks failed&lt;/p&gt;&lt;p&gt;[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured&lt;/p&gt;&lt;p&gt;根据我蹩脚的英文看出来 discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes 这3个参数至少要配置一个，然后又去看了配置文件。。。&lt;/p&gt;&lt;div style=&quot;color: rgb(212, 212, 212); background-color: rgb(30, 30, 30); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; line-height: 19px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Pass an initial list of hosts to perform discovery when this node is started:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# The default list of hosts is [&amp;quot;127.0.0.1&amp;quot;, &amp;quot;[::1]&amp;quot;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#discovery.seed_hosts: [&amp;quot;host1&amp;quot;, &amp;quot;host2&amp;quot;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Bootstrap the cluster using an initial set of master-eligible nodes:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#cluster.initial_master_nodes: [&amp;quot;node-1&amp;quot;, &amp;quot;node-2&amp;quot;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# For more information, consult the discovery and cluster formation module documentation.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;尝试把&lt;span style=&quot;color: #6A9955; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; white-space: pre; background-color: #1E1E1E;&quot;&gt;discovery.seed_hosts: [&amp;quot;host1&amp;quot;, &amp;quot;host2&amp;quot;]&lt;/span&gt;取消注释然后重启ES服务果然可以内网访问了。。&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;下来从Github上下载了最新版6.0的源码开始部署。地址：&lt;a href=&quot;https://github.com/exceptionless/Exceptionless/archive/v6.0.0.zip&quot; target=&quot;_blank&quot; textvalue=&quot;Exceptionless-6.0.0&quot;&gt;Exceptionless-6.0.0&lt;/a&gt;&amp;nbsp; &amp;nbsp;&lt;a href=&quot;https://github.com/exceptionless/Exceptionless&quot; target=&quot;_blank&quot;&gt;Github项目地址&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #FF0000;&quot;&gt;很熟练的&lt;/span&gt;用VS打开然后发现配置文件竟然不是常见的appsettings.json而是appsettings.yml，感觉有点像Docker里的配置方式&lt;/p&gt;&lt;p&gt;首先把&amp;nbsp;Elasticsearch的配置解除注释，然后F5运行&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591953456750405.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;跑起来了啦！然后打开 &lt;a href=&quot;https://localhost:5001，然鹅&quot; _src=&quot;https://localhost:5001，然鹅&quot;&gt;https://localhost:5001，然鹅&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591953553919838.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;这是什么鬼，登录页面呢，和网上看的不一样啊。。&lt;/p&gt;&lt;p&gt;一顿百度发现还需要一个前端项目叫 ExceptionlessUI，赶紧回去再看下Github&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591953681832482.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;醉醉的。。&lt;/p&gt;&lt;p&gt;一样到Realease页面下载，地址：&lt;a href=&quot;https://github.com/exceptionless/Exceptionless.UI/archive/v2.9.0.zip&quot; target=&quot;_blank&quot;&gt;ExceptionlessUI-2.9.0&lt;/a&gt;&lt;/p&gt;&lt;p&gt;以前学习过一点点VUE，so..NodeJs和VSCode都有&lt;/p&gt;&lt;p&gt;然后又轻车熟路的用VSCode直接打开，在下面的终端进入src目录后直接输入 npm install，安装依赖包&lt;/p&gt;&lt;p&gt;眼看依赖包安装完成，然后输入 npm run build，提示没有这个命令。。FK！&lt;/p&gt;&lt;p&gt;观察了一下项目结构发现和VUE项目有些略微的差别，又是一番百度后发现是AngularJS项目，要用Grunt。。没听说过啊。。&lt;/p&gt;&lt;p&gt;再次百度。。&lt;/p&gt;&lt;p&gt;npm install -g grunt-cli&lt;/p&gt;&lt;p&gt;下来 grunt --version 检查版本已确认是否安装成功&lt;/p&gt;&lt;p&gt;然后直接输入 grunt就开始打包项目啦，完了和VUE一样会有个dist目录，这里面就是打包后的文件&lt;/p&gt;&lt;p&gt;打包之前记得修改app.config.js，把BASE_URL修改成你Exceptionless项目的地址&lt;/p&gt;&lt;div style=&quot;color: rgb(212, 212, 212); background-color: rgb(30, 30, 30); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; line-height: 19px; white-space: pre;&quot;&gt;&lt;div&gt;(&lt;span style=&quot;color: #569cd6;&quot;&gt;function&lt;/span&gt;&amp;nbsp;()&amp;nbsp;{&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;use&amp;nbsp;strict&amp;#39;&lt;/span&gt;;&lt;/div&gt;&lt;br/&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;angular.module(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;app.config&amp;#39;&lt;/span&gt;,&amp;nbsp;[])&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;BASE_URL&amp;#39;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;https://localhost:5001&amp;#39;&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;EXCEPTIONLESS_API_KEY&amp;#39;&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;EXCEPTIONLESS_SERVER_URL&amp;#39;&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;FACEBOOK_APPID&amp;#39;&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;GITHUB_APPID&amp;#39;&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;GOOGLE_APPID&amp;#39;&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;INTERCOM_APPID&amp;#39;&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;LIVE_APPID&amp;#39;&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;SLACK_APPID&amp;#39;&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;STRIPE_PUBLISHABLE_KEY&amp;#39;&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;SYSTEM_NOTIFICATION_MESSAGE&amp;#39;&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;USE_HTML5_MODE&amp;#39;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;false&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;USE_SSL&amp;#39;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;false&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.constant(&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;#39;ENABLE_ACCOUNT_CREATION&amp;#39;&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;true&lt;/span&gt;);&lt;/div&gt;&lt;div&gt;}());&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;然后把dist目录里的东西全都复制到Exceptionless项目的wwwroot目录，如果单独运行这个前端项目的话会出现跨域问题，还要改源码麻烦&lt;/p&gt;&lt;p&gt;然后删除Exceptionless.Web.csproj里的这些内容，不然编译报错&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;ItemGroup&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;EmbeddedResource Include=&amp;quot;wwwroot\docs.css&amp;quot; /&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/ItemGroup&amp;gt;&lt;/p&gt;&lt;p&gt;重新启动Exceptionless后还是空白页，习惯性的F12查看了一下&lt;/p&gt;&lt;p&gt;发现jquery和lodashjs这俩加载不出来。。老外的项目用的cds好多国内访问要么速度慢要么访问不到&lt;/p&gt;&lt;p&gt;我百度了国内的jscdn替换，在index.html里，然后重新打包替换。。&lt;/p&gt;&lt;div style=&quot;color: rgb(212, 212, 212); background-color: rgb(30, 30, 30); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; line-height: 19px; white-space: pre;&quot;&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;link&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;rel&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;href&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #808080;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;link&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;rel&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;href&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;https://cdn.bootcdn.net/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #808080;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;link&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;rel&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;stylesheet&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;href&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #808080;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;color: rgb(212, 212, 212); background-color: rgb(30, 30, 30); font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; line-height: 19px; white-space: pre;&quot;&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;src&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data-concat&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data-remove&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;src&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data-concat&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data-remove&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;src&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.15/lodash.min.js&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data-concat&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data-remove&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;再次运行还是白页，发现是什么CSP给拦截了。。。&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591955201592135.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;还好当时大概看了看源码，知道在哪里修改&lt;/p&gt;&lt;p&gt;在 Starup.cs 里找到这些，每块下面都添加一行 .From(&amp;quot;&lt;a href=&quot;https://cdn.bootcdn.net%22%29%3B/&quot; _src=&quot;https://cdn.bootcdn.net&amp;quot;);&quot; style=&quot;white-space: normal;&quot;&gt;https://cdn.bootcdn.net&amp;quot;);&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591955275224616.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;然后就好啦！！！&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591955385525230.png&quot; alt=&quot;image.png&quot;/&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591955396506352.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;下来创建组织和项目&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591955482140035.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;创建好后选择 ASP.NET Core，记住密钥&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591955548951895.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;下来在Api项目里装NuGet包 Exceptionless.AspNetCore并设置&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-csharp&quot;&gt;ExceptionlessClient.Default.Configuration.ApiKey&amp;nbsp;=&amp;nbsp;&amp;quot;NfNJLgde2pIJHS1F3aLEoEuPUqnIQ1JZagLxnPYl&amp;quot;;
ExceptionlessClient.Default.Configuration.ServerUrl&amp;nbsp;=&amp;nbsp;&amp;quot;https://localhost:5001&amp;quot;;
app.UseExceptionless();&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;测试一下异常代码&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-csharp&quot;&gt;[HttpGet]
public&amp;nbsp;IActionResult&amp;nbsp;Get()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;str&amp;nbsp;=&amp;nbsp;null;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;length&amp;nbsp;=&amp;nbsp;str.Length;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch&amp;nbsp;(Exception&amp;nbsp;ex)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ex.ToExceptionless().Submit();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;Ok();
}&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591955969911467.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;可以看到已经有日志过来啦！&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591956077276253.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;既然本地成功了我就要发布到内网测试，总不能每次本机都要运行这个吧。。&lt;/p&gt;&lt;p&gt;又是一顿熟练的操作后发布到了内网服务器的IIS里，替换APIKey继续尝试，然后怎么都不行，日志接收不到&lt;/p&gt;&lt;p&gt;没办法只能打开&amp;nbsp;stdoutLogEnabled=&amp;quot;true&amp;quot; 输出日志查看，果然发现一条异常信息&lt;/p&gt;&lt;p&gt;[18:25:26 ERR] Error enqueuing event post.&lt;/p&gt;&lt;p&gt;System.InvalidOperationException: Synchronous operations are disallowed. Call ReadAsync or set AllowSynchronousIO to true instead.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at Microsoft.AspNetCore.Server.IIS.Core.HttpRequestStream.Read(Byte[] buffer, Int32 offset, Int32 count)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at Microsoft.AspNetCore.Server.IIS.Core.WrappingStream.Read(Byte[] buffer, Int32 offset, Int32 count)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at System.IO.Stream.CopyTo(Stream destination, Int32 bufferSize)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at System.IO.Stream.CopyTo(Stream destination)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at Foundatio.Storage.InMemoryFileStorage.ReadBytes(Stream input)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at Foundatio.Storage.InMemoryFileStorage.SaveFileAsync(String path, Stream stream, CancellationToken cancellationToken)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at Exceptionless.Core.Services.EventPostService.EnqueueAsync(EventPost data, Stream stream, CancellationToken cancellationToken) in D:\Projects\Exceptionless-6.0.0\src\Exceptionless.Core\Services\EventPostService.cs:line 35&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at Exceptionless.Web.Controllers.EventController.PostAsync(String projectId, Int32 apiVersion, String userAgent) in D:\Projects\Exceptionless-6.0.0\src\Exceptionless.Web\Controllers\EventController.cs:line 1039&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;百度了以后尝试用以下设置解决&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-csharp&quot;&gt;services.Configure&amp;lt;IISServerOptions&amp;gt;(options=&amp;gt;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;options.AllowSynchronousIO&amp;nbsp;=&amp;nbsp;true;
});&lt;/pre&gt;&lt;p&gt;完了接着重试。。然鹅发现这次连日志输出都没有了。。等了几分钟还是没有日志输出就强行把进程结束了，然后发现了有疑似超时卡住的日志&lt;br/&gt;&lt;/p&gt;&lt;p&gt;[18:41:46 FTL] Job host terminated unexpectedly&lt;/p&gt;&lt;p&gt;System.OperationCanceledException: The operation was canceled.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at System.Threading.CancellationToken.ThrowOperationCanceledException()&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at Microsoft.Extensions.Hosting.Internal.Host.StopAsync(CancellationToken cancellationToken)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.WaitForShutdownAsync(IHost host, CancellationToken token)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;at Exceptionless.Web.Program.Main(String[] args) in D:\Projects\Exceptionless-6.0.0\src\Exceptionless.Web\Program.cs:line 28&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;下来又尝试用dotnet命令启动看日志输出&amp;nbsp;dotnet Exceptionless.Web.dll --urls &amp;quot;&lt;a href=&quot;http://*:8088;&amp;quot;&quot; _src=&quot;http://*:8088;&amp;quot;&quot;&gt;http://*:8088;&amp;quot;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;启动以后发现又是&amp;nbsp;Synchronous operations are disallowed. Call ReadAsync or set AllowSynchronousIO to true instead. 这个异常&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591958801561717.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;心想之前是IIS承载的，现在是Kestrel内核承载，又百度后换了如下更改&lt;/p&gt;&lt;p&gt;services.Configure&amp;lt;KestrelServerOptions&amp;gt;(options=&amp;gt; {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; options.AllowSynchronousIO = true;&lt;/p&gt;&lt;p&gt;});&lt;/p&gt;&lt;p&gt;继续尝试。。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://blog.txtname.cn/zb_users/upload/2020/06/202006121591961190918531.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;Error creating the index prod-events-v1-2020.06.12: Original: (400 - ElasticsearchClientException) Request failed to execute. Call: Status code 400 from: PUT /prod-events-v1-2020.06.12. ServerError: Type: mapper_parsing_exception Reason: &amp;quot;Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters:&amp;nbsp; [_size : {enabled=true}]&amp;quot; CausedBy: &amp;quot;Type: mapper_parsing_exception Reason: &amp;quot;Root mapping definition has unsupported parameters:&amp;nbsp; [_size : {enabled=true}]&amp;quot;&amp;quot;&lt;/p&gt;&lt;p&gt;Server: (400) Type: mapper_parsing_exception Reason: &amp;quot;Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters:&amp;nbsp; [_size : {enabled=true}]&amp;quot; CausedBy: &amp;quot;Type: mapper_parsing_exception Reason: &amp;quot;Root mapping definition has unsupported parameters:&amp;nbsp; [_size : {enabled=true}]&amp;quot;&amp;quot;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;在本机好好的，怎么放到服务器上就不行了呢？？？这个问题困扰了我一天多，百度了很久也没有答案，直到我看到一篇帖子说如果报这个错的话需要Mapper-Size插件。。。醉了。。为什么本机没问题。。&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/mapper-size/2.4.6/mapper-size-2.4.6.zip.&quot; target=&quot;_blank&quot;&gt;Mapper-Size离线下载&lt;/a&gt;&amp;nbsp; &amp;nbsp;&lt;a href=&quot;https://www.elastic.co/guide/en/elasticsearch/plugins/2.4/mapper-size.html&quot; target=&quot;_blank&quot;&gt;Mapper-Size下载页面&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;下载好以后在ES的plugins里新建一个 mapper-size-7.7.1这个目录，然后把 mapper-size-7.7.1.zip放进去重启ES服务就好了&lt;/p&gt;&lt;p&gt;别像我一样先解压放进去服务起不来，然后把zip放进去一样起不来，最后才想到新建一个目录。。&lt;/p&gt;&lt;p&gt;java.lang.IllegalStateException: Could not load plugin descriptor for plugin directory [mapper-size-7.7.1.zip]&lt;/p&gt;&lt;p&gt;Likely root cause: java.nio.file.NoSuchFileException: D:\Softs\elasticsearch-7.7.1\plugins\mapper-size-7.7.1.zip\plugin-descriptor.properties&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;最后直接用IIS启动Exceptionless就OK了，一切结束。。。&lt;/p&gt;</description><pubDate>Fri, 12 Jun 2020 16:18:38 +0800</pubDate></item></channel></rss>