迁移hexo至腾讯云


最近发现访问GitHub的博客一直显示连接被重置,就算能访问但是速度很慢,体验不好。当时选择GitHub也是因为没钱买服务器。正好最近有台腾讯的云服务器闲置,想了想,直接迁过来算了

迁移前确保本地hexo运行正常,可以进行本地访问,且git已设置邮箱与用户名


云服务器端配置git

安装依赖库和编译工具

1
2
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install -y gcc perl-ExtUtils-MakeMaker

删除系统自带git

1
yum -y remove git

下载git

选择一个目录存放git

1
2
cd /usr/local/src
wget https://www.kernel.org/pub/software/scm/git/git-2.24.0.tar.gz

编译安装git

解压

1
tar zvxf git-2.24.0.tar.gz

编译安装

1
2
3
cd git-2.24.0
make prefix=/usr/local/git all
make prefix=/usr/local/git install

配置git环境变量

1
2
echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/profile
source /etc/profile

验证git安装

1
git --version

如果此时能查看到git的版本号,说明我们已经安装成功了

新建git用户

1
adduser git

设置密码

1
passwd git

修改权限

1
2
3
4
5
6
7
8
9
10
11
chmod 740 /etc/sudoers
vim /etc/sudoers


## Allow root to run any commands anywhere
root ALL=(ALL) ALL
下添加如下一行
git ALL=(ALL) ALL

保存退出
chmod 400 /etc/sudoers

设置SSH密钥

  1. 本地,使用Git Bash 创建密钥

    1
    ssh-keygen -t rsa
  2. 云端,切换git用户,创建.ssh文件夹以及authorized_keys文件

    1
    2
    3
    su git
    mkdir ~/.ssh
    vim ~/.ssh/authorized_keys

    将本地的id_rsa.pub文件全部内容粘贴到云端authorized_keys文件中

  3. 云端,修改权限

    1
    2
    3
    cd ~
    chmod 600 .ssh/authorzied_keys
    chmod 700 .ssh
  4. 测试

    在本地,使用Git Bash测试是否能连接上服务器

    1
    ssh -v git@服务器IP地址

    若出现错误提示,尝试删除本地密钥位置known_hosts文件,成功结果为不需要密码直接SSH登录

创建网站根目录

1
2
3
su root
mkdir /home/hexo
chown git:git -R /home/hexo

创建git仓库

创建一个裸仓库,裸仓库就是只保存git信息的Repository

1
2
cd /home/git   # 在 git 用户目录下创建
git init --bare blog.git

修改blog.git的权限

1
chown git:git -R blog.git

创建git钩子,用于自动部署

1
2
3
4
5
6
vim /home/git/blog.git/hooks/post-receive

#!/bin/sh
git --work-tree=/home/hexo --git-dir=/home/git/blog.git checkout -f

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

云服务器配置nginx

安装启动

安装(root权限)

1
yum install -y nginx

启动

1
systemctl start nginx.service

验证

1
wget http://127.0.0.1

配置nginx托管文件目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vim /etc/nginx/nginx.conf

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.bujige.net; #需要修改为自己的域名
root /home/hexo; #需要修改为网站根目录

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}

重启nginx

1
systemctl restart nginx.service

修改本地hexo站点配置

打开本地hexo的站点配置文件,修改

1
2
3
4
deploy:
type: git
repo: git@你的云服务器的IP地址:/home/git/blog.git
branch: master

部署

1
2
3
hexo clean
hexo g
hexo d

常见错误

hexo d时出现

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

解决方案:

服务器端执行

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

域名解析

设置域名解析为一个A记录,直接指向腾讯云服务器地址即可


参考连接

https://blog.csdn.net/StaunchKai/article/details/82878928

---------------The End---------------
0%