# 前言

hexo 的搭建

# 修改初始密码

进入腾讯云,点击右上角 控制台 ,选择 轻量应用服务器 (如果没有的话,就直接使用上面的搜索功能)
找到自己的服务器,点击 更多→管理,然后选择重置密码,重置初始密码
图片
图片

图一

(图一)

图片

# 开放端口

点击 更多→管理→防火墙→添加规则,开放 8888 端口
为之后添加宝塔面板做准备

图片

# 配置 SSH

配置 SSH 密钥,实现免密登录(首次提交时仍需要验证密码),如之前配过可跳过此步。

CODE
$ ssh-keygen -t rsa -C "邮箱地址"

连续敲回车确定,然后看到提示秘钥以保存在 xxx 路径下(如果没有出现提示就多敲几次回车)。
在提示的路径下找到 id_rsa 文件,复制文件内容,下面配置 Git 时会用到

图片

# 配置 Git

如果没有特别说明,安装过程中如有出现选择,一律选择 yes(y),(即输入 yes(y)然后点击回车)

# 准备工作

点击登录(见图一)

在弹出的面板中输入以下代码,切换到 root 用户

SHELL
# sudo su root

图片

# 安装 Git

SHELL
# yum install git

图片

# 配置 Git

创建 git 账户,并修改权限

SHELL
# adduser git
# chmod 740 /etc/sudoers

修改配置

SHELL
# vim /etc/sudoers

点击键盘 “i” 建进入编辑模式,然后通过方向键编辑
找到 root ALL=(ALL) ALL 在其下方以相同格式添加 git ALL=(ALL) ALL

CODE
root    ALL=(ALL)       ALL
git     ALL=(ALL)       ALL

图片

点击 Esc 后输入 :wq , 保存退出

改回权限

SHELL
# chmod 400 /etc/sudoers

设置 git 密码

SHELL
# sudo passwd git

密码输入过程中不会显示,输完后直接回车即可,输入两次(密码需要包含大写加小写字母加数字)

# 配置 SSH

切换为 git 用户,配置 SSH

SHELL
# su git
$ mkdir ~/.ssh
$ vim ~/.ssh/authorized_keys

点击键盘 “i” 建进入编辑模式,然后通过方向键编辑

将本地生成的 id_rsa.pub 文件公钥复制进去(需要注意的是,如果之前配置过 SSH,建议将同路径下的 known_hosts 文件删除,否则可能会报错,报错解决方法看后记),
点击 Esc 后输入 :wq 保存退出
赋予权限:

SHELL
$ chmod 600 /home/git/.ssh/authorized_keys
$ chmod 700 /home/git/.ssh

本地使用 Git 测试是否配置成功,桌面右键 “Git Bash Here”

CODE
$ ssh -v git@服务器ip

服务器 ip 为你的服务器公网 ip,详见图一中的(公)后面的一串 ip 地址,即为服务器的公网 ip

执行过程中出现选择,一律选择 yes

如果执行过程中不需要输入密码且无报错,即为配置成功

图片

# Git 仓库配置

使用 root 用户

SHELL
$ sudo su root

为 hexo 博客创建一个目录,赋予所有权限并设置所有者为 git

SHELL
# mkdir /home/hexo
# chown -R git:git /home/hexo
# chmod -R 755 /home/hexo

创建 git 仓库

SHELL
# mkdir /home/repo
# cd /home/repo
# git init --bare hexo.git

创建 Git 钩子

SHELL
# vim /home/repo/hexo.git/hooks/post-receive

点击键盘 “i” 建进入编辑模式,然后通过方向键编辑,将以下代码复制进去

CODE
#!/bin/bash
git --work-tree=/home/hexo --git-dir=/home/repo/hexo.git checkout -f

点击 Esc 后输入 :wq 保存退出
修改权限

SHELL
# chown -R git:git /home/repo/hexo.git/hooks/post-receive
# chmod +x /home/repo/hexo.git/hooks/post-receive

修改 git 仓库的所有者为 git:

SHELL
# chown -R git:git /home/repo

# 安装宝塔面板

SHELL
# yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安装过程中出现选择一律输入 y(yes)
图片

安装完成后根据给出的地址(外网 ip)及账号密码,登录宝塔
图片

如果忘记宝塔账号密码可以输入以下指令查看账号密码(需要在 root 用户下)

SHELL
# cd /www/server/panel && python tools.py panel testnamewd
# cd /www/server/panel && python tools.py panel testpasswd

或者直接进入宝塔目录,选择操作指令

SHELL
# cd /www/server/panel
# bt

图片

进入宝塔面板后,按照提示安装 Nginx

图片

# 添加站点

宝塔面板点击网站,选择添加站点,输入域名,根目录设为 /home/hexo ,php 版本选择纯静态,
图片

最后,别忘了将服务器解析到域名

# 本地配置

修改 Hexo 配置文件中的推送地址:

YML
repo: git@域名或IP:/home/repo/hexo.git

图片

如果 Git 配置失败,可以尝试使用 root 推送:

YML
repo: root@域名或IP:/home/repo/hexo.git

然后,将本地仓库与远程仓库关联:

CODE
$ git remote add origin git@服务器IP:/home/repo/hexo.git

最后三连(hexo clean && hexo g && hexo d)上传,输入域名访问即可

图片

# 附加步骤

完成以上步骤后就可以通过域名访问网站了,接下来的步骤都是附加步骤

# 添加 SSl 证书

为网站设置 SSL 证书并强制 HTTPS,开启 HTTPS 时需要放行 443 端口。
宝塔面板点击网站,找到刚才添加的站点,点击设置,选择 SSL,可以在这里免费申请宝塔 SSL 证书,如果你已有证书的话,点击其它证书,将你的证书复制进去,点击保存,将右上角的强制 HTTPS 开启,至此完成所有步骤。
图片

# 添加 404 界面

修改 nginx.conf 的 server 项(或者直接在宝塔面板的目标站点操作)
添加如下代码:

CODE
#开启 error_page
error_page 500 502 503 504 404 /404.html;
# 承接上面的 location
location = /404.html {
    # 放错误页面的目录路径。
    root /home/hexo;
}

图片

# 后记

  • hexo d 时 known_hosts 报错,提示冲突

图片
解决方法:根据报错给出的地址,找到 known_hosts 文件,因为我这里是第三行报错,所以就直接把 known_hosts 文件第三行删除即可

  • hexo -d 时报错:
CODE
 ! [remote rejected] HEAD -> master (unpacker error)
error: failed to push some refs to 'xxx.xxx.xxx:/home/repo/hexo.git'
FATAL {

图片

这种情况多半是目录所有者不是 git;

设置 hexo 仓库目录所有者为 git:

SHELL
# chown -R git:git /home/hexo

设置 git 仓库目录所有者为 git:

SHELL
# chown -R git:git /home/repo

然后再上传;

如果还是不行,建议使用 root 推送;

在 hexo 配置文件中修改:

YML
repo: root@域名或IP:/home/repo/hexo.git

如果 root 无法推送,同样大概率也是因为文件所有者问题,将 hexo 仓库和 git 仓库的所有者修改为 root 即可

  • 如何判断文件夹所有者是否正确呢?

回到 /home 目录,

查看 git 仓库和 hexo 仓库的文件夹所有者:

SHELL
# cd /home
# ll

正常情况可以看到 git 仓库和 hexo 仓库的文件夹所有者全为 git

CODE
drwxr-xr-x 2 git        git        4096 Jan 28 22:14 hexo
drwxr-xr-x 3 git        git        4096 Jan 28 22:15 repo

图片

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

flechazo 微信支付

微信支付

flechazo 支付宝

支付宝

flechazo 贝宝

贝宝