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