在其他服务器初始化仓库
需要在每台服务器执行以下操作(以 192.168.1.101 为例):
1、创建网站目录和裸仓库
mkdir -p /www/wwwroot/xiaoshuo.com
mkdir -p /git/xiaoshuo.git
cd /git/xiaoshuo.git
git init --bare
2、配置工作目录钩子
cat > hooks/post-receive <<'EOF'
#!/bin/bash
TARGET="代码的目录"
GIT_DIR="/git/git仓库的目录.git"
BRANCH="master"
while read oldrev newrev ref
do
# 仅处理 master 分支更新
if [[ $ref =~ .*/$BRANCH ]];
then
echo "正在更新工作目录: $TARGET"
git --work-tree="$TARGET" --git-dir="$GIT_DIR" checkout -f "$BRANCH"
echo "更新完成!"
# 修复权限 (根据实际情况)
chown -R www-data:www-data "$TARGET"
find "$TARGET" -type d -exec chmod 755 {} \;
fi
done
EOF
3、设置权限
chmod +x hooks/post-receive
chown -R www-data:www-data /git/git仓库的目录.git
chown -R www-data:www-data 代码的目录
注意:这是示例,权限用户自行设置就可以。 如果需要输入密码,需要在主从服务器设置:
# 执行以下命令将仓库添加到安全目录
git config --global --add safe.directory /git/git仓库的目录.git