zoukankan      html  css  js  c++  java
  • 我是怎样在家办公的

          一直很期待远程在家办公,但是现在真实施起来,确实不是那么适应,甚至有些无聊。因为涉及到团队协作,时间上也没有做到自由安排。在这段时间的远程办公中,涉及到的主要问题就是和前端开发人员的对接上,我们的服务端程序部署在阿里云上,因为项目仍然处于开发阶段,接口上我们也需要经常调整,频繁发布更新特别影响效率,所以想到了内网穿透的方案,采用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来对每天的请求进行分析。哪些接口容易报错、哪些接口耗时最长、哪些接口请求频率最高等等。

      

       

         

  • 相关阅读:
    用UILocalNotification实现一个闹钟(Swift)
    Swift
    iOS判断一些权限是否被禁止
    ofbiz学习笔记
    POJ1062 昂贵的聘礼 【DFS】
    echarts 应用数个样例
    java 中缀转后缀(逆波兰)
    开放是否能让苹果成为智能家居的标准制定者?
    2015阿里校招前端在线题目
    hql中不能写count(1)能够写count(a.id)
  • 原文地址:https://www.cnblogs.com/ZyCoder/p/12327656.html
Copyright © 2011-2022 走看看