It has been 672 days since the last update, the content of the article may be outdated.

部署环境与准备

1.环境

本地Windows10操作系统

腾讯云 Centos 7.9 服务器宝塔面板

2.准备

hexo 本地博客

Xshell 链接到服务器

云服务器配置 Git

配置步骤

1.查看git 版本

bash
1
git --version

2.安装依赖

bash
1
2
3
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc

yum install gcc perl-ExtUtils-MakeMaker

3.卸载旧版本git

bash
1
yum remove git

4.打开文件夹
用于存放下载的git包

bash
1
cd /usr/local/src/

5.下载最新版git压缩包

bash
1
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.32.0.tar.xz

6.解压

bash
1
tar -xvf git-2.32.0.tar.xz

7.切换到解压后的文件目录

bash
1
cd git-2.32.0

8.编译

bash
1
make prefix=/usr/local/git all

会显示一堆.o类型的文件,表示正在从源码编译。

9.安装

bash
1
make prefix=/usr/local/git install

10.配置环境变量

bash
1
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile && source /etc/profile

也可以将该语句直接写入相应的文件中,再执行source命令使生效。

bash
1
vim /etc/profile

将下面两行命令添加到profile文件末尾

bash
1
2
PATH=$PATH:/usr/local/git/bin   # git 的目录
export PATH

按i进入编辑模式,按esc退出,再按:wq保存编辑。
使写入语句生效:

bash
1
source /etc/profile

11.查看安装的git版本

bash
1
git --version

成功出现git version 2.32.0即表示安装成功。

12.配置Git
创建git用户

bash
1
adduser git

13.设置用户密码(可选)

bash
1
passwd git

16.分配权限

bash
1
2
3
chmod 740 /etc/sudoers

vim /etc/sudoers

17.按 i 键进入文件的编辑模式,找到如下字段
root ALL=(ALL) ALL
在其后面增加一句:

Code
1
git     ALL=(ALL)       ALL

18.按 Esc 键退出编辑模式,输入:wq 保存退出。
退回权限:

shell
1
chmod 400 /etc/sudoers

19.生成Windows本地密钥

bash
1
ssh-keygen -t rsa

20.复制里面的内容,返回Linux服务器端,创建.ssh文件夹

bash
1
2
3
su git

mkdir ~/.ssh

21.创建.ssh/authorized_keys文件,打开authorized_keys文件并将刚才在本地机器复制的内容拷贝其中并保存

bash
1
vim ~/.ssh/authorized_keys

22.按i进入编辑模式粘贴完按 Esc 键退出编辑模式,输入:wq 保存退出。

修改权限

bash
1
chmod 755 ~ && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

23.测试连接
yourIp为远程服务器的ip地址,腾讯云轻量云服务器一般是公网IP:12X.XXX.XXX.XX

bash
1
ssh -v git@yourIp     //yourIp为你的服务器ip

如果设置有密码,输入密码即可连接到远程终端。

云服务器网站配置

1.宝塔配置
这里采用宝塔的一键LAMP配置,然后就可以很方便的使用一些功能。

添加站点

  • 在域名中添加自己购买的域名,并确保已经解析IP到自己腾讯云服务器上了,这个步骤网上有很多教程,自行完成域名相关问题,证书SSL申请等,如果域名有解析可以直接勾上。
  • 证书的添加自行百度搜索,强制https开关打开,保证安全性。
  • 这里的blog.xiaoztx.top要改成自己购买的域名,下同

2.创建远程博客目录
切换到远程Linux服务器端
切换到root用户,创建一个目录用于存储网站的根目录/www/wwwroot/blog.xiaoztx.top/hexo并赋给相应权限

bash
1
2
3
4
5
su root

mkdir /home/hexo

chown git:git -R /www/wwwroot/blog.xiaoztx.top/hexo

5.建立git仓库并初始化

bash
1
2
cd /home/git
git init --bare blog.git

3.修改blog.git的权限(-R 是递归,即文件夹下的所有文件夹或文件都会递归修改权限)

bash
1
chown git:git -R blog.git

4.在 /home/git/blog.git 下,有一个自动生成的 hooks 文件夹,我们创建一个新的 git 钩子 post-receive,用于自动部署。

bash
1
vim blog.git/hooks/post-receive

5.按 i 键进入文件的编辑模式,在该文件中添加两行代码(将下边的代码粘贴进去),指定 Git 的工作树(源代码)和 Git 目录。

bash
1
2
#!/bin/bash 
git --work-tree=/www/wwwroot/blog.xiaoztx.top/hexo --git-dir=/home/git/blog.git checkout -f

按 Esc 键退出编辑模式,输入:wq 保存退出。

6.修改文件的执行权限

bash
1
chmod +x /home/git/blog.git/hooks/post-receive
bash
1
chown git:git -R /www/wwwroot/blog.xiaoztx.top/hexo

8.将网站目录 改成/www/wwwroot/blog.xiaoztx.top/hexo

9.在 windows10 本地 hexo 目录修改_config.yml 文件

yaml
1
2
3
4
deploy:
type: git
repository: git@ip:/home/git/blog.git #用户名@服务器Ip:git仓库位置
branch: master

10.在本机 gitbash 部署

bash
1
2
hexo clean
hexo g -d

或者一键三连

bash
1
hexo cl && hexo g && hexo d

常见错误

1.git-upload-pack: 未找到命令

Code
1
2
bash: git-upload-pack: command not found
fatal: Could not read from remote repository.

解决方法

bash
1
sudo ln -s  /usr/local/git/bin/git-upload-pack  /usr/bin/git-upload-pack

2.git-receive-pack: 未找到命令

Code
1
2
bash: git-receive-pack: command not found
fatal: Could not read from remote repository.

解决方法

bash
1
sudo ln -s /usr/local/git/bin/git-receive-pack  /usr/bin/git-receive-pack

3.无法远程连接获取

Code
1
fatal: Could not read from remote repository.

解决方法

bash
1
重试或者 删掉本地ssh公钥重新上传至服务器

4.key 出错

Code
1
Host key verification failed.

解决方法

bash
1
ssh-keygen -R 你要访问的IP地址