引子:部署应用的方式很多,基本上可以分别从裸机部署,docker容器,大型的jenkins,k8s部署,部署平台宝塔,1panel等的使用。此篇为裸机部署,最简单开始,适合个人。
基础版,裸机部署
首先裸机部署指的就是直接部署到宿主机的进程。这种最小白,通常搭配脚本实现。不需要太多的知识。需要在服务器安装git,拉取项目代码后
1.打包应用,如我这边有一个go服务,使用打包命令
go build -ldflags "-w -s" -trimpath .
得到autopub-server服务
2.编写脚本文件 server.sh
正因为直接部署在宿主机,可以写脚本kill.如果后面docker部署,那么这脚本就不对,进程在容器内部,然后端口被docker代理了。需要用别的方式。
#!/bin/bash
app='autopub-server'
cmd=$1
if [[ -z "$cmd" ]]; then
echo "Usage: $0 start|restart|stop"
exit 1
fi
startup(){
nohup ./$app > info.log 2>&1 &
echo "$app started with PID $!"
}
pids=$(ps -ef | grep -v grep | grep "$app" | awk '{print $2}')
case "$cmd" in
start)
if [[ -z "$pids" ]]; then
startup
else
echo "$app is already running! PIDs: $pids"
fi
;;
restart)
if [[ -n "$pids" ]]; then
for pid in $pids; do
kill -9 "$pid" && echo "Killed PID $pid"
done
sleep 1 # 给进程终止留出时间
fi
startup
;;
stop)
if [[ -n "$pids" ]]; then
for pid in $pids; do
kill -9 "$pid" && echo "Killed PID $pid"
done
echo "$app stopped"
else
echo "$app is not running"
fi
;;
*)
echo "Invalid command: $cmd"
exit 1
;;
esac
3.启动
./server.sh start
后面准备做一个vscode插件,实现自动拉代码,自动打包,自动启动。