首页 > 其他分享 >自有服务器搭建git并同步到网站根目录,实现git更新网站

自有服务器搭建git并同步到网站根目录,实现git更新网站

时间:2022-11-11 23:12:34浏览次数:41  
标签:www git 网站 ssh home 根目录 root localhost

一.GIT安装

 yum install -y git

服务器端创建 git 用户

[root@localhost home]# id git

id: git:无此用户

[root@localhost home]# useradd git

[root@localhost home]# passwd git

创建用户后,centos系统会在home文件夹下自动新建用户的文件夹git,

/home/git

设置git用户为www用户组,前面是用户组,后面是用户,

usermod -a -G www git

 

二、在服务器上创建裸版本库:

远程仓库通常只是一个裸仓库(bare repository),

即一个没有当前工作目录的仓库。因为该仓库只是一个合作媒介,所以不需要从硬盘上取出最新版本的快照;

仓库里存放的仅仅是 Git 的数据。

简单地说,裸仓库就是你工作目录中 .git 子目录内的内容

裸仓库,在服务器端,是看不到新增加的文件夹和文件的。

1 mkdir /home/git/testgit
2 cd /home/git/testgit
3 git init --bare te.git
4 //这里 git init 是初始化空仓库的意思,而参数 --bare 是代表创建裸仓库,这个参数一定记得带上

当运行完上面的最后一句命令时,会有提示:

Initialized empty Git repository in /home/testgit/te.git/

cd /home/git/
chown -R git:www te.git/

 

三、在nginx服务器网站根目录/www/wwwroot/下,新建网站根目录,比如test文件夹。

我是在root用户下操作的。

mkdir /www/wwwroot/test
chmod -R 775 /www/wwwroot/test

四、配置公钥

1、查看自己计算机PC(客户端)的公钥:

window系统,命令行模式下

$ ssh-keygen -t rsa -C "[email protected]"
/// 双引号内未用户邮箱,或者其他

此时 C:\Users\ Administrator \.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub

id_rsa 是私钥

id_rsa.pub 是公钥

2、服务器端 Git 打开 RSA 认证

进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释:

RSAAuthentication yes(可能没有需要加上)

PubkeyAuthentication yes

AuthorizedKeysFile /home/git/.ssh/authorized_keys
保存并重启 sshd 服务:

查看状态:

systemctl status sshd.service

启动服务:

systemctl start sshd.service

重启服务:

systemctl restart sshd.service

开机自启:

systemctl enable sshd.service

在 /home/git/ 下创建目录 .ssh

[root@localhost git]# pwd /home/git

[root@localhost git]# mkdir .ssh

[root@localhost git]# ls -a 

然后把 .ssh 文件夹的 owner 修改为 git

[root@localhost git]# chown -R git:www .ssh

[root@localhost git]# ll -a 

客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 文件

打开客户端的id_rsa.pub可以手动复制到服务器上述路径的authorized_keys文件中。

重要:

修改 .ssh 目录的权限为 700

修改 .ssh/authorized_keys 文件的权限为 600

[root@localhost git]# chmod 700 .ssh

[root@localhost git]# cd .ssh

[root@localhost .ssh]# chmod 600 authorized_keys  

git用户登录的安全选项

nano /etc/passwd

找到git用户,一般都在最后,按键盘方向键移动光标到最后,将

git:x:1001:1001:,,,:/home/git:/bin/bash

修改为

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

保存。


 客户端使用TortoiseGit

TortoiseGit是一个图形界面的Git,不用打“繁琐”的命令了。

1、创建PPK私钥

找到开始菜单TortoiseGit文件夹下的PuTTYgen打开:

在打开的窗口中,Load 之前PC客户端生成的私钥id_rsa,然后save private key 生成.ppk文件,文件名自取,比如为qq.ppk

2、Clone

客户端,新建一个文件夹C,鼠标右键菜单中,使用TortoiseGit的Git Clone,在URL中填入:

[email protected]:/home/git/gittest/te.git
//(1.1.1.1替换为自己服务器ip)

load putty key选择刚才新建的qq.ppk。

最后,点击ok确认。

3、服务器端,利用钩子同步服务器代码

 如果在客服端提交代码,希望在服务器同时更新,这里我们可以使用git仓库的hooks目录下新建一个post-receive文件来进行更新。

cd /home/git/gittest/te.git/hooks
nano post-receive

在post-receive里写入以下代码:

#!/bin/bash
git --work-tree=/www/wwwroot/test checkout -f

/www/wwwroot/test  替换为你想更新的文件夹。需要确定该文件夹有git用户的权限。之前已经设置git用户归属于www用户组了。

usermod -a -G www git //这个之前已经设置过了。
chmod -R 775 /www/wwwroot/test  //这个之前已经设置过了。

4、push

在文件夹c下,新建文件夹K,然后使用TortoiseGit提交更新,必须写备注信息,才可以点击提交按钮,之后点击推送按钮。

 

 

参考:https://blog.51cto.com/lxw1844912514/2982246

https://www.cnblogs.com/chinaifae/articles/10173325.html

https://www.cnblogs.com/chinaifae/articles/10174382.html

https://blog.csdn.net/qq_40692629/article/details/124420970

标签:www,git,网站,ssh,home,根目录,root,localhost
From: https://www.cnblogs.com/POTUS/p/16882286.html

相关文章

  • 给网站添加一个夜间模式
    最近发现了一个可以很简单给网站添加夜间模式的js库项目地址:https://darkmodejs.learn.uno/将下面的代码放到网站的头部或尾部,就会在网页的右下角出现一个按钮,点击即可......
  • Git基本命令
    提交到暂存区:gitadd.提交到本地:gitcommit-m"此处写消息"1,创建全新的仓库gitinit2,克隆远程仓库gitclone[url]3,查看指定文件状态gitstatus[filename]4,查看所有......
  • Git 分支管理策略汇总
    原文链接:Git分支管理策略最近,团队新入职了一些小伙伴,在开发过程中,他们问我Git分支是如何管理的,以及应该怎么提交代码?我大概说了一些规则,但仔细想来,好像也并没有形成......
  • 网站架构 (转载)
    网站架构一:硬架构1:机房的选择:在选择机房的时候,根据网站用户的地域分布,可以选择网通或电信机房,但更多时候,可能双线机房才是合适的。越大的城市,机房价格越贵,从成本的角......
  • 安装oh-my-zsh(zsh)出错,raw.githubusercontent.com 无法连接
    最近换了个电脑,又开始倒腾了。安装oh-my-zsh官网地址是:https://ohmyz.sh/正常来说输入下面的指令就可以了sh-c"$(curl-fsSLhttps://raw.github.com/ohmyzsh/ohm......
  • linux所有命令都无法使用,rm -f * 删除根目录
    【1】故障情况(1.1)误删文件在根目录下,有2个文件,node_exporter和node_exporter_start.sh我想把这2个文件都删掉,小心,生产环境 rm-fnode*要命了,多打了......
  • git使用git reset --hard 版本号 回退版本后并强制提交,找不到所回退版本之前的所有提
    参考:https://blog.csdn.net/weixin_44709394/article/details/120725395使用gitreset--hard版本号回退版本,再使用gitpush-foriginmaster强制推送后,就怎么都找不......
  • springboot获取项目的绝对路径和根目录
    参考:https://blog.csdn.net/f45056231p/article/details/88692444springboot获取项目的绝对路径和根目录Harvey5月前⋅11142阅读springboot获取当前项目路径的地址......
  • git上传代码Github教程-保存代码
    GitHub是一个在线软件源代码托管服务平台,使用Git作为版本控制软件,由开发者ChrisWanstrath、P.J.Hyett和汤姆·普雷斯顿·沃纳使用RubyonRails编写而成。在20......
  • Nginx网站服务配置
    概述一款高性能、轻量级Web服务软件稳定性高系统资源消耗低对HTTP并发连接的处理能力高单台物理服务器可支持30000~50000个并发请求Nginx和Apache的差异轻量级,ngi......