阿里Ubuntu 20.04宝搭建Hexo博客

部署环境与准备

1.环境

本地Windows10操作系统

阿里云 Ubuntu 20.04服务器面板

2.准备

hexo 本地博客

Xshell 链接到服务器

云服务器配置 Git

配置步骤

1.查看git 版本

1
git --version

2.安装依赖

1
2
3
4
5
6
7
8
9
sudo apt update

sudo apt install curl libcurl4-openssl-dev expat libexpat1-dev gettext libgettextpo-dev openssl libssl-dev zlib1g zlib1g-dev asciidoc

sudo apt install perl-modules
sudo apt-get install cpanminus
sudo cpanm ExtUtils::MakeMaker
sudo apt-get install gcc

3.卸载旧版本git

1
sudo apt-get remove git

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

1
cd /usr/local/src/

5.下载最新版git压缩包

1
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.33.0.tar.gz

6.解压

1
tar -xzvf git-2.33.0.tar.gz

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

1
cd git-2.33.0

8.编译

1
make prefix=/usr/local all

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

9.安装

1
sudo make prefix=/usr/local install

10.查看安装的git版本

1
git --version

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

11.配置Git
创建git用户

1
adduser xiaozhi

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

1
passwd xiaozhi

13.分配权限

1
2
3
chmod 740 /etc/sudoers

vim /etc/sudoers

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

1
xiaozhi     ALL=(ALL)       ALL

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

1
chmod 400 /etc/sudoers

16.生成Windows本地密钥

1
ssh-keygen -t rsa

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

1
2
3
su xiaozhi

mkdir ~/.ssh

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

1
vim ~/.ssh/authorized_keys

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

修改权限

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

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

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

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

云服务器网站配置

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

添加站点

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

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

1
2
3
4
5
su root

mkdir /www/wwwroot/blog.xiaoztx.top/hexo

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

5.建立git仓库并初始化

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

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

1
chown xiaozhi:xiaozhi -R blog.git

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

1
vim blog.git/hooks/post-receive

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

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

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

6.修改文件的执行权限

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

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

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

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

10.在本机 gitbash 部署

1
2
hexo clean
hexo g -d

或者一键三连

1
hexo cl && hexo g && hexo d

常见错误

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

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

解决方法

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

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

1
2
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

3.无法远程连接获取

1
fatal: Could not read from remote repository.

解决方法

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

4.key 出错

1
Host key verification failed.

解决方法

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