用 Git 的 post-receive 钩子可实现轻量可靠自动化部署,核心是推送即自动检出到 目录;需配置专用 git 用户、裸仓库、钩子脚本及权限,全程走 SSH 加密,适合中小团队或内网环境。
直接用 Git 自带的 post-receive 钩子就能实现轻量、可靠、无需额外服务的自动化部署,适合中小团队或内网环境。核心是让代码一推送上来,服务器就自动检出到 目录,不依赖 Jenkins 或 Webhook 服务。
确保服务器已安装 Git 并创建专用用户(如 git),禁止其交互式登录,只允许 Git Shell 访问:
yum install -y git;Ubuntu/Debian:apt install -y git
useradd -m -s /usr/bin/git-shell git
/etc/passwd,将 git 用户末尾改为 /usr/bin/git-shell
/var/www/myapp)设置属主:chown -R git:www-data /var/www/myapp(若用 Nginx,组通常为 www-data 或 nginx)在服务器上创建裸仓库(.git 结尾),然后编写 post-receive 脚本:
mkdir -p /home/git/myapp.git && cd /home/git/myapp.git && git init --bare
vim hooks/post-receive,内容如下:#!/bin/bashGIT_WORK_TREE=/var/www/myapp git checkout -f
chmod +x hooks/post-receive
git 用户对 /var/www/myapp 有写权限(可加 setgid 保证新文件继承组权限)本地项目初始化后,添加远程地址并推送,触发自动部署:
git remote add origin git@your-server-ip:/home/git/myapp.git
git push origin main(或 master)/var/www/myapp 下会立即出现最新代码文件post-receive 中追加命令,例如:
GIT_WORK_TREE=/var/www/myapp git checkout -f
cd /var/www/myapp && npm ci && npm run build
避免权限混乱和意外覆盖,几个关键动作不能跳过:
sudo -u git GIT_WORK_TREE=/var/www/myapp git --git-dir=/home/git/myapp.git checkout -f
echo "$(date): Deployed $(git rev-parse HEAD)" >> /var/log/git-deploy.log
上海:支持微型发光二极管、硅基有机发光二极管、柔性显示等技术发展 突破光波导、驱动芯片、核心装备、关键材料等环节
奥特曼宣布 AI 迈入阶段:普及、安全与易用的智能
chatgptwriter-chatgptwriter,免费chatgpt Chrome浏览器扩展
人民日报钟才文:推动高质量发展行稳致远讲了什么-主要信息和内容重点
小米路由器hd固件怎么升级(小米路由器hd固件升级方法)
刚刚,Codex恢复5小时限额,用户哀嚎讲了什么-主要信息和内容