服务器自建git仓库,本地上传服务器,构建自动发布

注,如果遇上权限不够,在命令前加上 sudo !!!

步骤一,创建服务器 git 用户

  • 如果服务器未安装git,可使用以下命令安装 apt-get install gitgit --version输出git版本号用来验证是否安装成功
  • 创建git用户 adduser git

步骤二,配置服务器git环境

  • su git使用git用户,执行以下命令cd ~/.ssh,如果提示不存在该文件夹,说明没有生成密钥,执行 ssh-keygen -t rsa ,一直enter,最后就能生成密钥。
  • 此时再次执行 cd ~/.ssh,编辑当前目录下面的 authorized_keys 文件。将本地的公钥(本地,非git服务器,cat .ssh/id_rsa.pub 可查看公钥)写进authorized_keys 文件,多个本地需分行,即一行一条公钥

步骤二.一,root权限下,更改环境配置

  • 打开文件/etc/ssh/sshd_config cd /etc/ssh/sshd_config
  • 1⃣️RSAAuthentication yes #开启RSA认证功能
  • 2⃣️PubkeyAuthentication yes #开启公匙认证
  • 3⃣️StricModes no #据说不改会强制要求登录用户和文件拥有者用户相同
  • 将上面1,2,3这三个点前面的注释去掉即可
  • 注意:关于第一点,centos7.4以上是没有的,不用在意,修改2,3两点就好

步骤三,初始化服务器git仓库

  • 将git仓库放置于 /srv 文件夹下面。cd /srv进入srv目录,git init --bare 库名.git这是创建一个裸仓库,没有工作区,因为服务器上的git仓库纯粹是为了共享,不让用户直接登录到服务器上去改工作区,并且服务器上德维尔Git仓库通常以**.git**结尾。将仓库所有者改为 git chown -R git:git 库名.git

步骤四,禁用服务器git用户shell登录

  • 出于安全考虑,我们不允许git用户登录shell。通过编辑**/etc/passwd**文件完成。将 git:x:1001:1001:,,,:/home/git:/bin/bash 改为 git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

步骤五,本地git项目操作

  • git项目下执行 git remote add origin(短名,可用其他) git@服务器ID:/srv/库名.git,设定推送的git服务器地址,远程分支
  • git push -u origin(短名,需与上面对应) master(本地master分支) 推送分支到服务器
  • git remote show可查看远程分支
  • git remote show 分支名 可查看详细信息

步骤六,网站目录自动部署

  • 进入网站目录之下,网站目录依据自身服务器配置,没有固定路径,一般为www目录
  • 如果git服务器与项目处于同一服务器,在网站目录下执行git clone /srv/库名.git。此时已克隆过来。
  • 注意,git用户应该要有能操作该文件夹所有内容的权限
  • 自动部署 hook 脚本。进入服务器git库目录 cd /srv/库名.git,进入 hooks 目录cd hooks,创建上传后触发的钩子,touch post-receive,赋予权限 chmod -R 777 post-receive 编辑内容vim post-receive
  • 内容为:
#!/bin/sh 
export LANG=zh_CN.UTF-8
cd /项目路径      //这个是你每次要同步的文件夹
unset GIT_DIR     //这个很重要! 很多同学没有写这个就同步不了,因为git执行自动脚本的时候有执行一些自定义变量,所以我们在这里unset一下
git pull origin master

结束

  • 完成上面步骤后,每次本地push,将自动更新推送到指定目录之下,完成自动更新发布
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章