完全部署Hexo到云服务器

[已弃坑]本文目的是将Hexo完全部署到阿里云服务器端,包括源码和生成的网页文件。旨在不安装FTP的前提下,完成Hexo的部署,并将Hexo根目录以Git方式关联到任意一个授权的本地电脑,以完成多终端同步。最后,绑定域名,并添加HTTPS证书。所用系统为Centos7.6(x64)

基本设置

密钥对

创建密钥对用以Xshell远程连接到服务器

安全组

入方向放行80(HTTP)和443(HTTPS)端口,以及用于调试的4000端口

安装Hexo

更新系统

1
yum update -y

安装Node.js

1
2
yum install gcc-c++ make -y
yum install nodejs -y

安装Git和Nginx

1
yum install git nginx -y

安装Hexo

1
npm install hexo-cli hexo-server -g

初始化Hexo

1
hexo init hexo

切换到Hexo目录

1
2
3
4
cd hexo
hexo clean
hexo g
hexo s

这样就可以在http://ip:4000看到默认的Hexo网站了

安装Next主题

在Hexo目录下执行

1
git clone https://github.com/theme-next/hexo-theme-next themes/next

编辑站点配置文件

1
vim _config.yml

按i键进入编辑模式,修改主题为Next

按Esc,输入:wq,保存并退出

配置Nginx

开启Nginx服务

1
systemctl start nginx.service

此时输入服务器ip可看到Nginx欢迎页面

修改Nginx配置

1
vim /etc/nginx/nginx.conf

把user改为root,把root目录设为/root/hexo/public

1
2
3
4
5
6
7
8
9
10
11
12
13
user root;

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /root/hexo/public;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
}

重启Nginx服务

1
nginx -s reload

此时浏览器输入服务器IP,即可打开网站了

绑定域名

将域名A记录解析到服务器IP

修改站点配置文件_config.yml,将url设为该域名

在Nginx配置文件中(见上文),修改server_name为你的域名即可(实测不需要修改)

配置Git

……这部分我暂时搞不定,请自行查资料,以下是一些探索过程

-1(未完成)

这个方案是要把Hexo文件夹整个作为Git仓库,以便随时pull和push。

依次执行以下命令:

1
2
3
4
5
6
adduser git
passwd git
su git
cd
mkdir .ssh && chmod 700 .ssh
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

电脑命令提示符执行

1
ssh-keygen -t rsa -C "914204612@qq.com"

C:\Users\LiYang\.ssh目录下得到id_rsa.pub公钥,Notepad++打开,复制全部内容

在云服务器根目录下创建public_keys文件夹,创建并编辑id_rsa.pub文件:

1
2
3
cd
mkdir public_keys
vim id_rsa.pub

把公钥粘贴进去,保存

编辑authorized_keys

1
vim /root/.ssh/authorized_keys

将公钥文件加入进来,添加一行如下

1
/root/public_keys/id_rsa.pub

把hexo的source文件夹设为Git仓库:

1
2
cd hexo/source
git init

这里遇到了问题,没有正确地创建仓库,待解决

搜索:自建Git服务器

-2(未完成)

这是在昨天的基础上重新走一遍流程,依然没有成功

查看系统用户:

1
cat /etc/passwd

删除系统已有的Git用户及其目录:

1
userdel -r git

安装和配置Git

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 安装Git
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
yum install git
# 添加用户git
useradd git
# 为用户git配置SSH
cd /home/git/
mkdir .ssh
chmod 755 .ssh
touch .ssh/authorized_keys
chmod 644 .ssh/authorized_keys
vim .ssh/authorized_keys
# 然后把公钥内容粘贴进去,一行一个
# 尝试将Hexo目录(非空)变成一个仓库
cd /root
chown git:git hexo/
cd /root/hexo
git init
chown -R git:git .git
git add .

已尝试hooks里的work-tree设为/root/hexo,但还是clone不下来,只差最后一块敲门砖了

配置Git Hooks示例如下:

1
vim /var/repo/blog.git/hooks/post-receive

添加:

1
2
#!/bin/sh
git --work-tree=/root/hexo --git-dir=/var/repo/blog.git checkout -f

然而始终无法正确地把仓库clone下来:

1
git clone git@47.100.160.191:/root/hexo/

fatal: ‘/root/hexo/‘ does not appear to be a git repository
fatal: Could not read from remote repository.

-3(无实际价值)

https://blog.csdn.net/weixin_34405925/article/details/86783406

https://blog.csdn.net/weixin_36401046/article/details/52940313

这个方案很奇怪,已按他的步骤实现了deploy到某个文件夹,并设置了Nginx指向该文件夹。但可以说是绕圈回原点,服务器自己给自己推送public文件夹是没有必要的,这是简单修改一下Nginx配置文件就可以做的事情

配置HTTPS证书(未完成)

这部分的目标是实现Let’s Encrypt证书的部署和自动续期

部署在阿里云服务器的Hexo站点:

http://hexo.dovins.com/

暂时脱坑,我先拿服务器玩点别的……来个WordPress吧

0%