git 服务搭建和hexo发布

git中文文档

https://git-scm.com/book/zh/v2

服务器安装配置

yum install -y git

添加git连接用户

## 添加用户,设置密钥连接
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

## 创建用户, 必须设置-s /bin/git-shell,防止用户远程登陆系统
useradd -s /bin/git-shell s_git

## 最好设置一个复杂的密码
passwd s_git

## 设置密钥登陆,ssh需要设置密钥登陆
mkdir /home/s_git/.ssh
chmod 700 /home/s_git/.ssh
touch 700 /home/s_git/.ssh/authorized_keys
chmod 600 /home/s_git/.ssh/authorized_keys

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

## 把公钥输入进去
cat > /home/s_git/.ssh/authorized_keys << EOF
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDeVoDwGgk0XZVEOxoIwCmwR2YD+Om/zsGWMLpwOkTTC2fPtDOk6rO3LA15FfNY6FKhGER2zoZaTUKltUgPYB3IDcC3L9bazc3TnI5SW6/AUWXeFjYTMweZkhCCx9+XHscvIZ21hnvEfP5cmU1sPRegOTxI6Lv7itCcg6kGS2P8wqjQeNEgLs7xcfo4+5Jk0Hq3Ke77gYIlBg37+XuiMg2g8UR8KkRuzK/ZCFK5kPXmSg/yGETieUyflPHiaCFEQcQJdNblO0pFoZSOLAgtjXoIdnwkzCt7A6w3KumSFzlOUc+2S6N7k+NfvPa/iW/1NG7m5fiwdt3X0ZnIXRnC05GH

EOF

添加 git repository

mkdir /data/git -p    

## 创建一个空的Git仓库,服务器上的Git仓库通常都以.git结尾
git init --bare /data/git/hexo.git

## 设置目录权限
chown -R s_git:s_git /data/git

客户端设置

客户端密钥登陆设置

1. windows:

在用户的home个人目录下添加.ssh目录,比如用户Lion (C:\Users\lion\.ssh),添加密钥文件id_rsa, id_rsa.pub

需要安装git客户端,见文尾

2. linux:

在用户home目录下添加.ssh目录,如/home/lion/.ssh,添加密钥文件id_rsa, id_rsa.pub

## 可以在linux下生成密匙,并把公钥复制到git服务器s_git账户authorized_keys文件里。
ssh-keygen -t rsa -b 4096 -p "" -f "id_rsa"

git客户端初次使用

## 需要全局设置一下用户信息
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com


## 查看git配置信息
git config --list

git配置文件地址

Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量。 这些变量存储在三个不同的位置:

/etc/gitconfig 文件: 包含系统上每一个用户及他们仓库的通用配置。 如果使用带有 --system 选项的 git config 时,它会从此文件读写配置变量。

~/.gitconfig 或 ~/.config/git/config 文件:只针对当前用户。 可以传递 --global 选项让 Git 读写此文件。

当前使用仓库的 Git 目录中的 config 文件(就是 .git/config):针对该仓库。

每一个级别覆盖上一级别的配置,所以 .git/config 的配置变量会覆盖 /etc/gitconfig 中的配置变量。

在 Windows 系统中,Git 会查找 $HOME 目录下(一般情况下是 C:\Users\$USER)的 .gitconfig 文件。 Git 同样也会寻找 /etc/gitconfig 文件,但只限于 MSys 的根目录下,即安装 Git 时所选的目标位置

测试客户端推送

cd test
git init
git remote add origin ssh://s_git@wall.suroot.com:55555/data/git/hexo.git

touch test.txt
git add test.txt
git commit -m "init commit"

## 上传
git push origin master

## 下载
git pull origin master

## 删除
git -rm

## 查看所有分支
git branch -v

测试客户端克隆

mkdir test
cd test
git clone ssh://s_git@wall.suroot.com:55555/data/git/hexo.git

hexo网站自动发布

"git_hexo"

hexo 修改配置文件

## Deployment
## Docs: https://hexo.io/docs/deployment.html
## repo: git@github.com:xxx/xxx.github.io.git
deploy:
type: git
repo: ssh://s_git@wall.suroot.com:55555/data/git/hexo.git
branch: master

hexo 发布推送

## 生成hexo静态页面内容,并推送到git repository
hexo clean && hexo generate --deploy

## 指定额外配置文件,如果想推送到不同的git
hexo --config github.yml clean
hexo --config nginx_server.yml generate --deploy

nginx 服务配置

## nginx 服务器和git repository在同一服务器上

server {
    listen 80;
    charset utf-8;
    root   /data/www/blog;
    index  index.htm index.html index.jsp;
}

## 从git repository中克隆出hexo静态网站

mkdir /data/www/blog
git clone /data/git/hexo.git /data/www/blog

## 注意这里需要修改网站的文件夹为git用户,否则没权限更新
chown -R s_git:s_git /data/www/blog

git自动同步nginx网站

## git hooks 参考:
https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-Git-%E9%92%A9%E5%AD%90

## 每当开发者将网站更新推送到git repository时,git就自动同步到网站目录
## 配置git服务器hooks
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

cat > /data/git/hexo.git/hooks/post-receive << EOF
#!/bin/sh
## 把部署目录更新到博客的最新生成状态
#git --work-tree=/data/www/blog --git-dir=/data/git/hexo.git checkout -f

## 还原环境变量,否则会拉不到代码
unset GIT_DIR

cd /data/www/blog

##
git add . -A && git stash

#拉取最新代码
git pull origin master

EOF

chown s_git:s_git /data/git/hexo.git/hooks/post-receive

chmod a+x /data/git/hexo.git/hooks/post-receive
#判断是不是远端仓库bash脚本

#!/bin/sh
IS_BARE=$(git rev-parse --is-bare-repository)
if [ -z "$IS_BARE" ]; then
echo >&2 "fatal: post-receive: IS_NOT_BARE"
exit 1
fi

windows下git客户端安装

下载安装 git

https://git-scm.com/download/win

https://github.com/git-for-windows/git/releases/download/v2.17.1.windows.2/Git-2.17.1.2-64-bit.exe

https://github.com/git-for-windows/git/releases/download/v2.17.1.windows.2/PortableGit-2.17.1.2-64-bit.7z.exe


portable 版本,只需解压,在window环境变量里添加 解压路径\Git\cmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
安装版,只需命令行的,安装步骤如下:


选择安装组件:可以全不选,或只选
桌面浏览(Windows Explorer integration)
使用Git Bash方式,shell方式

是否创建开始菜单快捷方式目录:否

设置环境,选择使用什么样儿的命令行工具,一般情况我们使用默认配置,使用Git Bash

Git自带:使用Git自带的Git Bash命令行工具

设置HTTPS 传输加密方式,点击【Next >】

使用OpenSSL库

选择换行格式,点击【Next >】:下面选第一个

让Git能够自动转换文件中的换行符:签出到本地时转换为Windows下的换行符,提交到服务器时转换为Unix下的换行符
让Git在签出到本地时不做转换,保留原始文件的换行符;提交到服务器时转换为Unix下的换行符
让Git在签出到本地时和提交到服务器时都不做转换

配置Git bash终端仿真器,点击【Next >】:最好选第二个

使用MinTTY终端
使用windows默认的命令行

性能配置,是否启用文件系统缓存,点击【Next >】

开始安装

git 环境变量配置

安装成功后需要配置Git环境变量

「注意该步骤为Git在windows cmd命令中配置,如果不配置,直接使用Git Bash即可」

在Path变量中增加:C:\Program Files\Git\cmd

验证是否配置成功,打开windows命令行,输入git version命令,出现下列信息表示配置成功。


git config --global user.name dolphincn
git config --global user.email share2030cn@126.com

下面三行可以不操作

git config --global push.default matching
git config --global core.quotepath false
git config --global core.editor "vim"

添加ssh 密钥

添加github ssh 登陆密钥,

打开cmd,运行mkdir .ssh,

在当前用户的home目录下创建.ssh目录,把密钥复制进去.

密钥可以用ssh-key 或 GitHub上生成,私钥和公钥名字分别为:id_rsa id_rsa.pub

检验是否能连上了github,windows 命令行下运行,前提配置了git环境变量

$ ssh git@github.com

参考

Hexo+Git服务器搭建blog
http://yelog.org/2016/10/23/hexo-git-server-blog/