實戰 | 某小公司專案環境部署演變之路
前言
背景
演變
第一階段:傳統安裝
需甲方提供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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 某小公司專案環境部署演變之路
- Windows環境部署專案Windows
- windows環境Jenkins部署前端專案WindowsJenkins前端
- Jenkins部署Python專案實戰JenkinsPython
- 已完成的python專案-環境離線部署Python
- App專案實戰之路(三):原型篇APP原型
- CentOS 7部署Javaweb專案(一)——環境搭建CentOSJavaWeb
- 運維演變之路運維
- WinForm企業級框架實戰專案演練ORM框架
- jenkins自動化專案部署實戰Jenkins
- Java Spring Cloud 實戰之路 - 1 建立專案JavaSpringCloud
- JS逆向實戰24—— 補環境過某房地產瑞數4.0JS
- LNMP 環境部署 Laravel 專案的一些總結LNMPLaravel
- Dockers 部署Nodejs環境的ts 專案遇到的問題DockerNodeJS
- Linux詳解(基礎、環境配置、專案部署入門)Linux
- 介面測試實戰--postman全域性變數和環境變數Postman變數
- Vue搭建專案環境Vue
- Docker環境部署Prometheus實踐DockerPrometheus
- Fabric架構演變之路架構
- Gungho專案管理及Mobox企業雲盤IIS環境部署專案管理
- VisualStudio —— Batch檔案設定環境變數並啟動VS專案BAT變數
- 前後端分離專案:下載、執行、配置、構建、打包、部署:全部實戰演習後端
- 用 Go 語言讀取專案內 .env 環境變數Go變數
- lnmp1.5 環境下部署 Laravel 專案的問題總結LNMPLaravel
- 小公司的專案交付
- 記某專案的二顧茅廬5K實戰
- Flink 1.10 Container 環境實戰AI
- Hive環境部署Hive
- SharePlex 環境部署
- 部署Java環境Java
- DockerCompose部署環境Docker
- Kibana環境部署
- [.NET專案實戰] Elsa開源工作流元件應用(三):實戰演練元件
- 打造全網最全電商實戰專案系列教程[功能演示與環境搭建]
- nuxt3專案自定義環境變數,typescript全域性提示UX變數TypeScript
- 【轉載】MAVEN環境變數配置及安裝及專案配置Maven變數
- 藉助Github Page把你的React專案部署到線上環境GithubReact
- Centos8.3、docker部署springboot專案實戰記錄CentOSDockerSpring Boot