服务器 git 仓库搭建
服务器安装 git
shell
sudo apt-get install git创建仓库
shell
cd /www
git init --bare project_code.git由于服务器上的仓库是存放代码的,不需要修改及提交等操作
因此这里加了 --bare 参数,用于创建一个裸仓库
拉取
假设服务器已开放 ssh 访问,这里以 root 用户拉取 192.168.0.1 服务器上的 /www/project_code.git 仓库为例
在本地执行
shell
git clone root@192.168.0.1:/www/project_code.git按照提示输入密码,即可正常拉取及修改提交
拉取路径 root@IP:/www/project_code.git 中 @ 符号前面的用户可以为服务器上任意用户
自动拉取及部署
主要使用 git 提供的 hooks 实现
进入到刚刚创建的裸仓库目录
shell
cd /www/project_code.git/hooks可以看到有不少的文件,这些文件是一些示例,表示我们可以在 git 的各个声明周期做一些我们需要的事情
当 git 执行到不同的生命周期阶段时,会执行这些文件,因此可以在这些文件里面写上自己需要的脚本
例如我们可以在服务器上建另外一个工作仓库,然后通过脚本进入到这个仓库并拉取代码,最后打包
这样就可以自动拉取并部署了,以下面脚本为例,首先创建 post-receive
shell
vim post-receive写入以下内容:
shell
#!/bin/sh
# 注意上面第一行非注释,且必须要位于第一行
unset GIT_DIR
DeployPath="/www/project_code"
cd $DeployPath
git fetch --all
git reset --hard origin/master
echo "pull complete ========="
npm run build
echo "build complete ========="
exit 0然后给这个脚本权限
shell
chmod +x post-receive然后在服务器创建一个仓库,关联裸仓库
shell
git clone /www/project_code.git project_code现在在本地 push 后,就会触发服务器端 project_code.git 的 hooks
进而执行 post-receive 里面的脚本,然后自动拉取代码并部署
git 远程 ssh 相关
- 例如用户是
git,则/home/git/.ssh/authorized_keys文件内存放公钥 - 例如用户是
git,需注意创建裸仓库时用这个用户创建不要用root,如果用了root记得给权限 .ssh文件夹权限需要是 700,即authorized_keys文件权限至少是 600,即- 另外需要注意
.ssh和authorized_keys的所属用户都要设置为自己新增的用户例如
shell
chown -R git:git ./git/.ssh
# -R 表示同时为其子文件、目录设置
# : 前表示用户,后面表示组0
