服务器端:
一、安装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正常删除。