服务器 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