Coding Pages部署速度极慢,网页更新太慢,很令我失望,最后我还是决定把博客搭建在阿里云服务器上。本篇博文详细指出如何将hexo静态博客搭建在阿里云服务器上(Ubuntu 20.04)。

大概两天前,我还在说“Coding好用,这次就选它了!”之类的话,没错,它用起来确实简单,也免费,但就是老抽风,部署慢、网页更新慢,我实在受不了了,最后还是想把博客搭建在阿里云服务器,那样应该是最稳的。

准备工作

如果你也想和我一样通过域名访问到博客,你需要准备好以下内容:

  1. 域名及域名解析服务
  2. 云服务器一台
  3. Shell终端软件(Windows需要)

域名

可以在阿里云、腾讯云等服务中购买域名,购买后对应就会有域名解析服务。

云服务器

推荐阿里云或者腾讯云,针对学生有优惠。

Shell终端软件

Windows系统下,推荐MobaXterm,功能比XShell强大,还免费。点击访问MobaXterm官网

Linux和MacOS自带终端软件。

本地搭建hexo

搭建hexo,需要Node.js环境。注意,是本地,不是在服务器操作。

安装Node.js

访问https://nodejs.org/zh-cn/download/下载对应系统的安装包进行安装。版本推荐LTS版本。

安装cnpm

由于npm的源默认不是国内源,换源很麻烦,不如安装一个“中国加速版”npm——cnpm。

1
npm install -g cnpm --registry=https://registry.npm.taobao.org

安装hexo及依赖项

1
cnpm install hexo-cli hexo-server hexo-browsersync hexo-renderer-pug hexo-renderer-sass hexo-renderer-ts --save

初始化hexo

1
2
3
hexo init Hexo #在当前目录,新建Hexo文件夹,并在Hexo文件夹初始化hexo
cd Hexo
cnpm install #安装可能还需要的依赖项

启动测试hexo

1
hexo s

成功启动以后,浏览器访问http://localhost:4000就能看到hexo的默认helloworld页面。

云服务器中的操作

以下操作以Ubuntu 20.04为例,其他的系统类似。

SSH连接到云服务器

这一步,和终端软件相关,以Linux的自带终端为例:

1
ssh 用户名@云服务器公网ip

输入云服务器实例密码,即可连接。

一般用户名是root,密码为自己设置或者自动生成的。

安装git

1
apt-get install git

初始化git仓库,作为hexo部署(deploy)的远端git仓库

要在一个不需要很高权限的地方放仓库,例如/home

1
2
3
4
5
cd /home
mkdir git
cd git
git init --bare MyBlog.git
mkdir MyBlog

其中,MyBlog.git是git仓库,MyBlog用于存放内容。

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

1
vim /home/git/MyBlog.git/hooks/post-receive

写入以下文本:

1
git --work-tree=/home/git/MyBlog --git-dir=/home/git/MyBlog.git checkout -f

赋予执行权限:

1
chmod +x /home/git/MyBlog.git/hooks/post-receive

配置Nginx

先安装Nginx

1
apt-get install nginx

再启动测试

1
service nginx start

访问云服务器的公网ip,查看是否有Nginx搭建成功的字样。

然后修改Nginx的配置文件:

1
vim /etc/nginx/sites-available/default

root的路径值由/var/www/html改为/home/git/MyBlog

即:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;

# root /var/www/html;
root /home/git/MyBlog;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name _;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

这样,重新加载配置文件,启动Nginx

1
2
service nginx reload
service nginx restart

现在访问云服务器的公网ip会提示404,因为还没有把本地的hexo部署到云服务器的git仓库,所以/home/git/MyBlog文件夹为空,自然访问不到任何文件。

部署本地hexo到云服务器

修改hexo根目录的_config.yml文件最后的Deployment的内容:

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repository:
myblog: 用户名@你的云服务器ip:/home/git/MyBlog,master

然后部署:

1
2
hexo clean
hexo g -d

提示输入密码,输入后回车即可。

如果没有问题,那么hexo已经部署到了云服务器。

访问云服务器的公网ip,应该能显示之前本地hexo的helloworld页面。

关于域名解析

参考以下方案:

主机记录:blog

记录类型:A

线路类型: 默认

记录值 :公网ip

MX优先级:-

TTL(秒):600

这样解析的是二级域名,比如我的域名是zhangkexuan.cn,那么解析成功后,我的博客主页就是blog.zhangkexuan.cn。

如果想要用顶级域名访问博客,例如zhangkexuan.cn,那么主机记录改成@即可。

注意:这里用云服务器的80端口,使用http访问,如果需要https访问,还需要SSL证书,请自行搜索Nginx开放443端口,生成SSL证书相关的教程。用非80、443端口,还需要域名备案,记录类型改为显式URL,记录值改为ip:端口号的形式。

更多

hexo的基本用法、换主题、修改配置,参考hexo官网


本文参考:

hexo博客如何部署到服务器的最全教程

⬆︎TOP