1、Linux安装Git环境

安装:

1
yum install git

输出一下信息表示安装成功:

1
2
3
4
5
已安装:
git.x86_64 0:1.8.3.1-25.el7_9
作为依赖被安装:
perl-Error.noarch 1:0.17020-2.el7 perl-Git.noarch 0:1.8.3.1-25.el7_9 perl-TermReadKey.x86_64 0:2.30-20.el7
完毕!

查看Git版本号

1
2
3
4
5
6
git --version

输出信息:
[root@linux-server /]# git version
git version 1.8.3.1

2、Linux添加用户

2.1、创建git用户信息并设置密码

创建git用户并设置密码

1
2
3
4
5
6
7
8
9
useradd git #添加Git用户
passwd git #设置Git登录密码


输出以下信息更新成功:
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

2.2、修改git用户的权限

首先先给文件授权:

1
chmod 740 /etc/sudoers

编辑sudoers命令文件

1
vim /etc/sudoers

找到 root ALL=(ALL) ALL,在下面添加一行git ALL=(ALL) ALL

1
2
3
root    ALL=(ALL)       ALL
git ALL=(ALL) ALL

保存退出后改回权限

1
chmod 400 /etc/sudoers

3、配置SSH免密登录

3.1、生产SSH密钥

在服务端,依次执行以下指令:
切换到 git 用户

1
2
su git

在根目录创建.ssh文件夹,存放公钥

1
2
3
4
cd ~

mkdir .ssh

创建成功后,接下来需要生产一个密钥对:使用ssh-keygen生成密钥对,创建密钥

1
2
3
4
5
6
7
8
9
10
11
12
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

参数说明:
-t rsa: 指定密钥类型为RSA。
-b 4096: 指定密钥长度为4096位,这是当前推荐的安全长度。
-C "your_email@example.com": 这是一个注释字段,用于识别这个密钥,邮箱地址。

生成的密钥对如下:
私钥:~/.ssh/id_rsa
公钥:~/.ssh/id_rsa.pub
将公钥 ~/.ssh/id_rsa.pub 的内容添加到Git服务器(如GitHub、GitLab等)的SSH密钥中,以便进行身份验证和授权。

命令会生成两个文件:id_rsa(私钥)和id_rsa.pub(公钥)。私钥应该保持私密,而公钥则用于认证。

3.2、公钥上传到服务器

首先把文件上传到git用户新建到的ssh目录下,然后新建authorized_keys文件,并拷贝公钥的内容到该文件中,依次执行以下指令:

1
2
3
4
5
6
7
8
9
cp id_rsa.pub authorized_keys
cat id_rsa.pub >> ~/.ssh/authorized_keys

# 设置权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

# 确保 SSH 相关的文件和目录具有正确的 SELinux 安全标签
restorecon -Rv ~/.ssh

3.3、测试本地免密登录服务器

1
ssh -v git@xxx.xxx.xxx.xxx(公网IP)

输入密码,之后就登录成功,输出以下信息:

1
2
3
Last login: Fri Jul 26 21:41:15 2024

Welcome to Alibaba Cloud Elastic Compute Service !

为了让SSH能够使用新生成的密钥,你需要将其添加到SSH代理中:

1
2
3
4
5
6
7
8
9
启动SSH代理:
eval "$(ssh-agent -s)"

添加SSH私钥:在终端中输入以下命令并回车

ssh-add -K ~/.ssh/id_rsa 或者 ssh-add ~/.ssh/id_rsa

如果生成密钥时指定了其他名称,将 id_rsa 替换为设置的其他私钥文件名。

这将把私钥添加到SSH代理,这样就不需要每次都输入私钥的密码。

4、配置Git钩子

4.1、配置钩子

创建一个名叫blog的仓库

1
2
3
4
5
6
7
8
9
10
11
cd /home/git

sudo git init --bare blog.git


vim blog.git/hooks/post-receive

git --work-tree=/home/git/hexo --git-dir=/home/git/blog.git checkout -f

即:让钩子文件删除/home/www/hexo 目录下原有的文件,然后从`blog.git`仓库`clone`新的博客静态文件到/home/www/hexo目录下。

4.2、钩子授权

1
2
3
4
5
cd /home/git

sudo chmod +x blog.git/hooks/post-receive

sudo chmod -R 777 hexo

5、hexo本地发布部署服务器

在本地计算机hexo的工程目录下,找到_config.yml配置文件,对deploy参数进行修改。

1
2
3
4
5
deploy:
type: 'git'
repo: git@149.129.94.103:/home/git/hexo.git,master
branch: master

安装插件 hexo-deployer-githexo-server

1
2
3
4
5
用于将 Hexo 生成的静态文件推送到指定的 Git 仓库
npm install hexo-deployer-git --save

用于在本地启动一个 Hexo 服务器,方便在本地预览博客
npm install hexo-server

清除之前生成的静态文件

1
hexo clean

生成静态文件

1
hexo generate

部署到Git仓库

1
hexo deploy