實戰 | 某小公司專案環境部署演變之路
前言
背景
演變
第一階段:傳統安裝
需甲方提供windows或linux伺服器遠端連線方式(這裡各個甲方提供都不一樣,有堡壘機、vpn、直接定向開放埠、vpn+堡壘機等)非常複雜,只能case by case 遠端到伺服器上 上傳資料庫、jdk、tomcat各類安裝包(受限頻寬因素,往往很耗時) 安裝安裝資料庫 安裝jdk、tomcat、nginx(linux環境下,使用寫好的sh指令碼直接執行,依然比較耗時) 人工部署war包等 等
第二階段:映象恢復
需甲方提供windows或linux伺服器遠端連線方式(這裡各個甲方提供都不一樣,有堡壘機、vpn、直接定向開放埠、vpn+堡壘機等)非常複雜,只能case by case 使用vm映象恢復虛擬機器並設定好ip(內含docker) 透過deploy模組一鍵部署war包
第三階段:自動發現註冊+指令下達
甲方使用我們vm映象恢復並設定好ip,保證能ping通我們公司地址 自動發現註冊+指令下達 透過deploy模組一鍵部署war包
具體技術
frp
安裝frp服務端
wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install
Please input frps bind_port [1-65535](Default Server Port: 5443): #輸入frp提供服務的埠,用於伺服器端和客戶端通訊,預設即可
Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80): #輸入frp進行http穿透的http服務埠,建議不用預設
Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443): #輸入frp進行https穿透的https服務埠,建議不用預設
Please input frps dashboard_port [1-65535](Default dashboard_port: 6443):#輸入frp的控制檯服務埠,用於檢視frp工作狀態,預設即可
Please input dashboard_user (Default: admin):#登入控制檯的使用者名稱,預設即可
Please input dashboard_pwd (Default: kpkpM7VZ):#登入控制檯的密碼,如果記不住預設的建議修改
Please input privilege_token (Default: 9m2UAOWa6hx5Eise):#輸入frp伺服器和客戶端通訊的密碼,預設是隨機生成的,預設即可
Please input frps max_pool_count [1-200](Default max_pool_count: 50):#設定每個代理可以建立的連線池上限,預設50
##### Please select log_level #####
1: info
2: warn
3: error
4: debug
#####################################################
Enter your choice (1, 2, 3, 4 or exit. default [1]): 預設即可
Please input frps log_max_days [1-30](Default log_max_days: 3 day):
##### Please select log_file #####
1: enable
2: disable
#####################################################
Enter your choice (1, 2 or exit. default [1]):預設即可
客戶端
編寫reg.sh指令碼
UUID=$(cat /sys/class/dmi/id/product_uuid)
wget -O frpc.ini http://114.114.114.114/frp.php?file=$UUID;
a=`du -s frpc.ini | awk '{print $1}'`
if [ $a -lt 1 ]
then
echo "none"
else
echo "action"
pkill frpc
sleep 2s
rm -rf ~/frp/frpc.ini
cp frpc.ini ~/frp/frpc.ini
~/frp/./frp.sh
fi
編寫crontab
crontab -e
*/5 * * * * ~/reg.sh
frp開機自啟
chmod +x ~/frp/frp.sh
vi /etc/rc.d/rc.local
#檔案底部追加
bash ~/frp/frp.sh
chmod +x /etc/rc.d/rc.local
#重啟即可
frp.php簡易版內容如下
<?php
$filename=$_GET['file'].'.ini';
$filename='frp/'.$filename;
if(!file_exists($filename)){
file_put_contents($filename,"");
file_put_contents($filename.'.update',$_SERVER['REMOTE_ADDR']);
} else {
if (!file_exists($filename.'.update')){
$str = file_get_contents($filename);
echo $str;
file_put_contents($filename.'.update',$_SERVER['REMOTE_ADDR']);
}
}
?>
.ini例子
[common]
server_addr = 114.114.114.114
server_port = 5443
privilege_token =金鑰
[webserver]
type = tcp
local_ip = 127.0.0.1
local_port = 22
use_encryption = false
use_compression = false
remote_port = 7001
[a-web]
type = http
local_ip = 127.0.0.1
local_port = 80
use_encryption = false
use_compression = true
custom_domains = a.a.com
ansible
外網對映
docker
Portainer
deploy
總結
作者 | 邵磊 來源 | juejin.im/post/5ade8a37f265da0b8d418dff
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69908602/viewspace-2676673/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 某小公司專案環境部署演變之路
- App專案實戰之路(三):原型篇APP原型
- App專案實戰之路(四):UI篇APPUI
- App專案實戰之路(二):API篇APPAPI
- 運維演變之路運維
- WinForm企業級框架實戰專案演練ORM框架
- Fabric架構演變之路架構
- android學習視訊(實戰專案演練)Android
- Java Spring Cloud 實戰之路 - 1 建立專案JavaSpringCloud
- 商城前端構架演變之路前端
- 小公司的專案交付
- [.NET專案實戰] Elsa開源工作流元件應用(三):實戰演練元件
- “某寶”支付服務架構演進之路,解決實際問題!架構
- 廣州某小公司:ThreadLocal面試thread面試
- React Native 學習指南(二) - 天氣小專案實戰演練React Native
- dubbo專案實戰
- HarmonyOS 實戰專案
- 故事篇:資料庫架構演變之路資料庫架構
- WinForm EF+MySql企業管理軟體C/S專案實戰演練ORMMySql
- 專案轉變成產品快捷之路在哪裡?
- Gin實戰演練
- python實戰專案Python
- TypeScript + 大型專案實戰TypeScript
- AMP專案實戰分享
- 我國航空專案管理的演變與發展(轉)專案管理
- 分散式資料庫的架構演變之路分散式資料庫架構
- 上海某小公司面試題:synchronized鎖原理面試題synchronized
- 某小公司自動化智慧監控平臺的實踐
- Sonata簽署業務轉型CRM專案
- 爬蟲專案實戰(一)爬蟲
- flask 專案開發實戰Flask
- 淺談 Angular 專案實戰Angular
- 爬蟲實戰專案集合爬蟲
- Vue專案實戰(一)——ToDoListVue
- MySQL專案實戰總結MySql
- 爬蟲實戰專案合集爬蟲
- 專案實戰小問題:
- koajs 專案實戰(二)JS