hexo搭建在阿里云服务器上(Ubuntu 20.04)
Coding Pages部署速度极慢,网页更新太慢,很令我失望,最后我还是决定把博客搭建在阿里云服务器上。本篇博文详细指出如何将hexo静态博客搭建在阿里云服务器上(Ubuntu 20.04)。
大概两天前,我还在说“Coding好用,这次就选它了!”之类的话,没错,它用起来确实简单,也免费,但就是老抽风,部署慢、网页更新慢,我实在受不了了,最后还是想把博客搭建在阿里云服务器,那样应该是最稳的。
准备工作
如果你也想和我一样通过域名访问到博客,你需要准备好以下内容:
- 域名及域名解析服务
- 云服务器一台
- 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 | hexo init Hexo #在当前目录,新建Hexo文件夹,并在Hexo文件夹初始化hexo |
启动测试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 | cd /home |
其中,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 | server { |
这样,重新加载配置文件,启动Nginx
1 | service nginx reload |
现在访问云服务器的公网ip会提示404,因为还没有把本地的hexo部署到云服务器的git仓库,所以/home/git/MyBlog
文件夹为空,自然访问不到任何文件。
部署本地hexo到云服务器
修改hexo根目录的_config.yml文件最后的Deployment的内容:
1 | # Deployment |
然后部署:
1 | hexo clean |
提示输入密码,输入后回车即可。
如果没有问题,那么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官网。
本文参考: