其他
实战 | 某小公司项目环境部署演变之路
点击上方蓝色“程序猿DD”,选择“设为星标”
回复“资源”获取独家整理的学习资料!
作者 | 邵磊
来源 | juejin.im/post/5ade8a37f265da0b8d418dff
前言
背景
演变
第一阶段:传统安装
需甲方提供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服务端
chmod 700 ./install-frps.sh
./install-frps.sh install
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脚本
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
*/5 * * * * ~/reg.sh
frp开机自启
vi /etc/rc.d/rc.local
#文件底部追加
bash ~/frp/frp.sh
chmod +x /etc/rc.d/rc.local
#重启即可
frp.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例子
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
总结
关注我,回复“加群”加入各种主题讨论群