我是怎樣在家辦公的


      一直很期待遠程在家辦公,但是現在真實施起來,確實不是那么適應,甚至有些無聊。因為涉及到團隊協作,時間上也沒有做到自由安排。在這段時間的遠程辦公中,涉及到的主要問題就是和前端開發人員的對接上,我們的服務端程序部署在阿里雲上,因為項目仍然處於開發階段,接口上我們也需要經常調整,頻繁發布更新特別影響效率,所以想到了內網穿透的方案,采用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來對每天的請求進行分析。哪些接口容易報錯、哪些接口耗時最長、哪些接口請求頻率最高等等。

 

 

 

 

 

 

 

 

 

 

  

 

 

 

 

   

 

 

 

 

 

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM