我是怎樣在家辦公的

      一直很期待遠程在家辦公,可是如今真實施起來,確實不是那麼適應,甚至有些無聊。由於涉及到團隊協做,時間上也沒有作到自由安排。在這段時間的遠程辦公中,涉及到的主要問題就是和前端開發人員的對接上,咱們的服務端程序部署在阿里雲上,由於項目仍然處於開發階段,接口上咱們也須要常常調整,頻繁發佈更新特別影響效率,因此想到了內網穿透的方案,採用ngrok搭建了一套內網轉發服務,同時也移植構建了一版http報表系統。Ngrok官網地址:https://ngrok.com ngrok官網提供的有免費服務,可是速度特別感人。前端

  前提條件:域名、主機 ,筆者所用主機是阿里雲centos8.0,域名也是在阿里雲購買。(備註:若是還沒有備案,請選擇香港或者國外雲主機)node

  ngrok搭建步驟以下:linux

    1.環境安裝git

      首先安裝gcc和git,安裝命令以下:github

        yum install gcc -y
        yum install git -y

            安裝go語言環境,若是不想經過yum安裝,能夠自行去官網下載,安裝到服務器上。安裝命令以下:golang

        yum install -y mercurial git bzr subversion golang

 

    2.搭建服務web

      在搭建服務的過程當中,首先就是製做證書,製做證書命令以下:windows

        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源碼:centos

       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來對天天的請求進行分析。哪些接口容易報錯、哪些接口耗時最長、哪些接口請求頻率最高等等。

相關文章
相關標籤/搜索