我是怎样在家办公的

      一直很期待远程在家办公,但是现在真实施起来,确实不是那么适应,甚至有些无聊。因为涉及到团队协作,时间上也没有做到自由安排。在这段时间的远程办公中,涉及到的主要问题就是和前端开发人员的对接上,我们的服务端程序部署在阿里云上,因为项目仍然处于开发阶段,接口上我们也需要经常调整,频繁发布更新特别影响效率,所以想到了内网穿透的方案,采用ngrok搭建了一套内网转发服务,同时也移植构建了一版http报表系统。Ngrok官网地址:https://ngrok.com ngrok官网提供的有免费服务,但是速度特别感人。

  前提条件:域名、主机 ,笔者所用主机是阿里云centos8.0,域名也是在阿里云购买。(备注:如果尚未备案,请选择香港或者国外云主机)

  ngrok搭建步骤如下:

    1.环境安装

      首先安装gcc和git,安装命令如下:

        yum install gcc -y
        yum install git -y

            安装go语言环境,如果不想通过yum安装,可以自行去官网下载,安装到服务器上。安装命令如下:

        yum install -y mercurial git bzr subversion golang

 

    2.搭建服务

      在搭建服务的过程中,首先就是制作证书,制作证书命令如下:

        export NGROK_DOMAIN ="test.com"  # 个人域名
        openssl genras -out rootCA.key 2048
        openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
        openssl genrsa -out device.key 2048
        openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
        openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

     复制粘贴运行就行,运行结果如下图所示:  

     

 

 

     然后下载ngrok源码:

       git clone https://github.com/inconshreveable/ngrok.git

 

          代码下载完毕之后,用刚才生产的证书替换ngrok的证书,如下所示:

    

            证书替换完毕之后,在ngrok文件夹下,即代码文件夹下输入命令编译服务端代码:

       GOOS=linux GOARCH-amd64 make release-server

 

          编译过程较慢,请耐心等待,且有可能会遇到编译失败的情况,重新编译即可。编译完成之后,会在bin目录下生产。服务启动命令是     ngrokd -domain='你的域名'。先不用启动服务端,往下继续编译客户端。客户端可以自行diy,修改ngrok默认服务地址,如下所示:

                    

        

 

 

   在第24行,修改defaultServerAddr为配置的域名,端口改为4443。

   修改客户端logo,如下所示,在第100行左右修改ngrok为自己的logo文字即可。

   

 

 

   完事之后,即可编译生产客户端,编译后的客户端也在bin目录,编译完成之后自行下载到个人电脑。编译命令如下:

    GOOS=windows GOARCH=amd64 make release-client

 

     服务端、客户端均编译完毕,可为服务端创建服务便于服务运行,一下为笔者服务配置:

    [Unit]
    Description=ngrok service
    After=network.target
    After=syslog.target

    [Service]
    Type=simple
    ExecStart=/new-ngrok/code/ngrok/bin/ngrokd -domain= #个人配置的域名
    ExecStop=/bin/kill $MAINPID
    ExecReload=/bin/kill -USR1 $MAINPID
    Restart=always

    [Install]
    WantedBy=multi-user.target

    同时,关闭服务器防火墙,或者自行配置

   systemctl stop firewalld

   启动服务端,启动客户端,客户端使用方式如下,如果客户端未正确链接,配置下服务器的安全组规则即可,开放对应端口: 

  

 

  

 

 

  然后访问对应的公网地址即可。同时,管理地址是127.0.0.1:4040,界面如下:

 

  

 

 

  通过这样的方式,可以清楚的查看到前端每次请求具体参数、返回信息,便于在对接过程中能够很快的排查问题。

 

  内网转发服务搭建完毕,下一步就是集成到http报表,报表首页面如下:

 

 

 

  在此感谢SpringLeee本报表是基于开源项目移植而成,项目地址是https://github.com/SpringLeee/HttpReports

  本项目是采用中间件的形式对请求进行统计,且github上此报表是core版本的,与作者沟通作者不打算整进.net framework。因为我们这边的项目大都是.net framework版本,所以只能自己动手移植到framework,花费了5个多小时成功移植,且针对具体功能进行了部分优化。移植后的版本,采用autofac进行DI。且通过httomodule的方式记录请求,因此在使用方式上,也以中间件的形式,只需要在web.config中注册本httpmodule即可。framework版本代码,以及使用方式,后续整理过后会分享到github。

 

  在远程期间,我是依靠ngrok来解决前后端的对接问题,采用httpreports来对每天的请求进行分析。哪些接口容易报错、哪些接口耗时最长、哪些接口请求频率最高等等。

 

 

 

 

 

 

 

 

 

 

  

 

 

 

 

   

 

 

 

 

 

     

posted @ 2020-02-18 19:51  Zy宇  阅读(854)  评论(2编辑  收藏  举报