Linux配置Git并钩子同步

服务器端:

一、安装Git

图片[1]-Linux配置Git并钩子同步-趣考网

#yum install -y git

安装完后,查看 Git 版本

[root@localhost ~]# git --version

二、服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码

[root@localhost home]# id gityun

id: gityun:无此用户

[root@localhost home]# useradd -s /sbin/nologin gityun /* 新建用户不允许登录

ssh*/

[root@localhost home]# passwd gityun

三、服务器端创建 Git 仓库

[root@localhost home]# mkdir -p /home/gityun/gittest.git

[root@localhost home]# git init --bare /home/gityun/gittest.git

Initialized empty Git repository in /home/gityun/gittest.git/ //初始化完成

[root@localhost home]# cd /home/gityun/

[root@localhost git]# chown -R gityun:gityun gittest.git/ //设置仓库权限

四、到网站根目录下初始化一下

例如: cd到
/www/wwwroot/yunsaas_yunmeitiweb_com

[root@] git init

[root@] git remote add origin /home/gityun/gittest.git/ //设置仓库地址

[root@] git branch –set-upstream-to=origin/master master //设置默认推拉分支

遇到问题:fatal: Not a valid object name: \'master\'.

//一个非法的master,原因:原因是没有提交一个对象,要先commit之后才会真

正建立master分支,此时才可以建立其它分支

解决方案:

如果本地没有文件,添加一个文件

[root@] git add .

[root@] git commit -m \"duyun\"

遇到问题:Run git config --global user.email \"you@example.com\" git

config --global user.name \"Your Name\"

遇到这种情况依次执行以下命令

[root@] git config --global user.email \"987772927@qq.com\"

[root@] git config --global user.name \"杜云\"

[root@] git branch –set-upstream-to=origin/master master //在设置一下推拉分支,针对以上存在问题,如果无问题则不用再执行

[root@] git pull //拉取一遍

五、配置权限

[root@] cd
/home/gityun/gittest.git/hooks/ //切换到git仓库hooks目录下

[root@] vim post-receive //新建钩子文件文件内容并写入

GIT_WORK_TREE=/www/wwwroot/yunsaas_yunmeitiweb_com git checkout -f

[root@] chmod 777 post-receive //设置钩子权限 777

[root@] cd
/www/wwwroot/yunsaas_yunmeitiweb_com //回到生产目录 或直接修改权限,但是要加目录地址

[root@] chown -R gityun:gityun /xxxxx //把生产目录权限设置给git

[root@] chowm -R www:www runtime/ //项目缓存目录给www,该目录和自身项目有关

六、服务器端通过RSA认证实现免密登录

1、新建存放公钥的文件

# 创建目录.ssh

mkdir /home/www/.ssh

# 给该目录授予权限700

chmod 700 /home/www/.ssh

# 创建文件authorized.keys

touch /home/www/.ssh/authorized.keys

# 给该文件授予权限600

chmod 600 /home/www/.ssh/authorized.key

# 由于权限设置问题(只有“文件所有人”才能操作),需要把把“文件所有人”更改为www用户

chown -R www:www /home/www/.ssh/

说明:git用户的默认根目录是/home/www,公钥默认是放在
/home/www/.ssh/authorized.key文件里面。这里需要注意的是每行放一个公钥。因此这里就是将客户端生成的公钥放在该文件authorized.key中。

2、开启RSA认证

vim /etc/ssh/sshd_config

# 修改sshd_config配置文件,把如下3个参数放开(如果没有相应参数自行添加)

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

# 使该配置文件即时生效

systemctl restart sshd

#查看状态

systemctl status sshd

3、修改用户权限

usermod -s /sbin/nologin www //禁止登录,但是Git用户检出的时候也是无法检出的

usermod -s /usr/bin/git-shell //这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

问题:

当我们想删除某个用户的时候,出现 user xxx is currently used by process

xxx,可能的原因是你创建用户user1之后,使用su命令切换到user1用户下,之后又想删

除user1用户,使用su root切换到root用户下,使用userdel user1。出现上述情况的根

本原因在于切换回root用户之后,user1还被某个进程占用。

解决方案:ctrl+d(退出当前用户)

第一次使用ctrl+d退出root用户,回到user1用户;第二次使用ctrl+d退出user1用户,此

时会返回到root用户(再按ctrl+d退出登陆连接),此时使用userdel user1正常删除。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容