Linux服务器git的部署与自动化同步
环境
服务端
git version 1.8.3.1
CentOS Linux release 7.5.1804
客户端
git version 2.20.1
Window 10
mac
安装流程
服务端安装
yum install -y git
查看版本
git --version
git version 1.8.3.1
创建用户(服务端)
useradd git
passwd git
注:
可查看用户是否创建成功
cat /etc/passwd
在客户端创建RSA密钥 (公钥,密钥)
mac
ssh-keygen
注:输入该命令后会显示如下, 回车即可
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
window
ssh-keygen -t rsa -C "git的用户名"
回车即可
Enter file in which to save the key (/c/Users/xxx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
第一次执行git命令时可能会出现以下提示, 输入yes急可
注:
The authenticity of host '101.34.xx.xxx (101.34.xx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:vKbTX6sTbhTzNMJTg47uU0FhX7Wm9Jn+pLeyCBgvmiM.
Are you sure you want to continue connecting (yes/no)?
服务端配置公钥(服务端)
cd /home/git
mkdir .ssh
chmod 700 .ssh
cd .ssh
mkdir authorized_keys
chmod 600 authorized_keys
chown -R git:git .ssh
添加公钥, 将在本地生成的公钥进行复制
vim .ssh/authorized_keys
创建git仓库(服务端)
mkdir -p /home/git/gittest (创建文件)
git init --bare /home/git/gittest (初始化git仓库)
Initialized empty Git repository in /home/git/gittest (表示初始化成功)
cd /home/git
chown -R git:git gittest (给用户增加操作文件权限)
或
sudo chown -R git:git gittest
客户端安装
安装地址
https://git-for-windows.github.io/
查看版本
git version 2.20.1
新建本地代码库
mkdir gittest
cd gittest
克隆linux上的代码库
git clone git@101.34.xxx.xx:/home/git/gittest gittest
ssh 非22端口
git clone ssh://git@101.34.xxx.xx:port/home/git/gittest gittest
在本地添加文件并向代码库推送
git pull
git add .
git commit -m "first submit"
git push origin master
注:
第一次提交可能会提示不同信息, 因为代码库为裸库, 故第一次提交需要写全(git push origin master)
目前git仓库的更新与推送已实现 但这显然是不够的,在日常开发过程中,常见的开发流程是本地开发-完成后通过版本管理器进行发布然后在测试校验。我们接下来就实现自动化同步
自动化部署
实现原理:
自动化部署使用的是git的钩子, 在钩子中配置所要同步的文件路径, 从而实现在本地代码提交时同步文件
切换目录
cd /home/git/gittest/hooks (git仓库目录)
vim post-receive (新建文件)
编写如下命令
#!/bin/bash
配置所要同步的文件路径, /home/www(指向路径, 根据情况而定)
git --work-tree=/home/www checkout -f
保存并退出
chown git:git post-receive (给用户增加文件权限)
注:
若将本地文件提交后, 未进行文件同步请查看同步目录是否有权限,若没有增加即可 chmod 755 /home/www
至此自动化配置完成
可能遇见的问题
,在git服务端配置公钥后克隆、拉取、提交代码仍需要输入密码
首先查看服务端ssh配置以下配置项是否开启
在/etc/ssh/sshd_config中进行配置变更
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
如果还不行,在客户端进行配置制定公、私钥算法
Host *
ServerAliveInterval 60
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa