0%

阿里云轻量应用服务器搭配宝塔面板部署Hexo

从网络上发现阿里云有一个云翼计划,也就是学生机,和腾讯云的学生机不同的是,阿里云的学生机24岁以下自动获得学生身份!也就是说,只要你没超过24岁,就不需要验证学信网信息也能购买学生机,这一点相比腾讯云来说无疑又是一个吸引力。另外,腾讯云的学生机需要每月领取优惠券续费学生机,而阿里云的学生机可以按时长购买,就不需要每个月续费,过程简单了不少。

阿里云学生机

有了主机,接下来就是安装blog了,之前有使用过WordPress,但是感觉WordPress对于学生机来说过于臃肿。而轻量的Typycho安装简单,内存占用少,使用起来感觉还不错。后来在上网冲浪过程中发现了Hexo,了解到这是一个纯静态的博客框架,经过进一步了解后发现,Hexo使用Node.js在生成静态页面,并且有各种丰富的插件可以使用,还有漂亮的NexT主题可以使用,并且NexT主题也集成了各种使用的功能。

但Hexo的缺点就是对于小白不太友好,相比与Typecho的仅需三步,建立你的网站来说,Hexo前期有点过于繁琐了,当然,当你前期配置好后,基本只需一条命令就可以将你博文发布到你的站点上。总的来说,Hexo只需本地安装一个Markdown编辑器,就可以了。


准备

服务器和域名

我购买的阿里云云翼计划的轻量应用服务器,安装了CentOS 7.3,配置是1核2G40GSSD,每月1000G流量,1000G流量一般来说是用不完的,并且学生资格只需¥9.5/月。域名添加A记录解析到主机IP,当然,国内的域名和服务器需要备案,否则无法解析。

SSH

SSH工具我用的是Putty,免费,小巧。当然你也可以使用功能强大的Xshell。Putty你可以点击这里下载最新版,选择对应的操作系统下载即可。

本地端

Hexo是基于Node.js的,所以需要先安装Node.js,然后需要用到Git。我这里使用的是Windows10系统,只介绍windows系统的安装方法,MacOS和Linux可以自行搜索。

安装Git

Git安装包: 下载地址

Git安装和普通软件的安装方法一样,打开后一路next即可,当然你也可以按喜好设置,这里就不多说了,安装好后,就可以使用 Git BashGit GUI 了,不过一般都是使用 Git Bash

安装Node.js

Node.js 安装包: 下载地址

使用安装包一路next安装就行了,这里建议安装时勾选 Add to Path,其他的没什么好说的。

安装Hexo

Git 和 Node.js 安装好后,根据官方文档,我们需要在 Git Bash 执行下面这条命令可可以安装Hexo了。

1
npm install -g hexo-cli

创建本地网站目录

接下来,我们需要选一个磁盘来存放我们的Hexo源文件,比如我这里是E:盘,在E:盘根目录下右键选择Git Bash Here,执行以下命令,即可在当前目录新建一个Hexo文件夹。

1
2
3
hexo init <folder>
cd <folder>
npm install

<folder> 为你需要创建的文件夹名称,如:hexo

安装部署插件

我们还要安装一个 Hexo 的插件来使用 Git 将我们的博客部署到服务器上,同样在 Git Bash 中执行下面的命令。

1
npm install hexo-deployer-git --save

服务端

我们需要先在阿里云的控制面板设置密码或创建密钥,以便使用SSH工具连接服务器。

设置密码

并且在防火墙开放面板需要的端口,当然你嫌麻烦也可以全部开放

开放端口

安装宝塔面板

服务端需要安装宝塔面板达到可视化操作的目的,使用 Putty 连接我们的服务器后,使用下面的命令便可以一键安装宝塔面板了。

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

安装完成后,记下后台地址和用户名密码,首次登录面板,会让你先安装LAMPLNMP套件,选一个安装就行了。然后对面板进行必要的安全设置后在执行下一步操作,根据上面的提示修改就行了。

面板设置

添加网站

选择网站选项,点击添加站点,添加一个网站来存放我们的博客文件,按需修改,域名填写购买的域名就行,需要注意的是PHP版本选择纯静态

添加网站

配置 Git

系统中自带有 Git,但是版本较低,有需要的可以自行升级,在 Putty 中执行以下命令可查看 Git 版本。

1
git --version

Git 版本

生成Key

本地打开Git Bash,输入以下命令生成一个 SSH Key ,因为远程仓库和本地仓库的传输是通过SSH加密的,所以我们需要设置一个Key。

1
ssh-keygen -t rsa -C "youremail@example.com"

youremail@example.com 填写你的邮箱

然后一路按回车,使用默认值即可。

生成后,可以在用户目录找到一个.ssh文件夹,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,id_rsa.pub是公钥,我们只要的是公钥,而私钥需要保存在我们本地,不要泄漏。

一般用户主目录为:C:\Users\用户名\.ssh

我们后面需要使用id_rsa.pub里的内容,你可以使用文本编辑打开这个文件,复制里面全部内容,或者在本地使用 Git Bash 执行下面这个命令可以直接显示文件内容。

1
cat ~/.ssh/id_rsa.pub

创建 Git 用户

使用 Putty 连接服务器后输入以下命令创建一个 Git 用户,你也可以设置用其他名字。

1
2
adduser git #创建用户
passwd git #设置密码

设置免密登录

同样是在 Putty 中输入以下命令,该操作是赋予 git 用户 sudo 权限,并编辑。

1
2
chmod 740 /etc/sudoers
vim /etc/sudoers

找到以下内容:

1
2
## Allow root to run any commands anywhere
root ALL=(ALL) ALL

找到后,在下面添加git用户的权限,添加后,内容为:

1
2
3
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
git ALL=(ALL) ALL

保存并退出。

然后修改回原来的权限:

1
chmod 440 /etc/sudoers

之后切换到git用户,配置ssh登录,执行以下命令。

1
2
3
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

authorized_keys 里的内容是上文 生成Key 章节中复制的 id_rsa.pub 里的内容,使用上文的方法复制粘贴到该文件,保存退出即可。

然后给刚刚创建的文件和目录设置权限,执行以下命令。

1
2
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

接下来在本地的 Git Bash 中测试是否能免密登录。

1
ssh -v git@you_server_ip_or_you_domain_address

注意,@ 后需要替换成你的服务器 IP 地址, 或你绑定的域名。

如果可以成功免密登录,那么就可以继续观看,否则请再次检查,或你不需要免密登录也可以跳过该章节。

更改博客发布目录用户组

然后我们需要更改 /www/wwwroot/hexo 的用户组,也就是博客发布目录的用户组为 git 用户,执行以下命令。

1
chown git:git -R /www/wwwroot/hexo

更改完成后,可使用 ll /www/wwwroot/hexo 命令查看是否更改成功。

初始化 Git 仓库

切换到 git 用户,执行以下命令。

1
2
3
su git
cd ~
git init --bare hexo.git

执行完命令后,git 会创建一个名为 hexo.git 的空仓库。

配置 Git hooks

切换到 git 用户,执行以下命令编辑文件。

1
vim ~/hexo.git/hooks/post-receive

post-receive 中写入以下内容。

1
2
3
4
5
6
7
8
#!/bin/bash
GIT_REPO=/home/git/hexo.git
TMP_GIT_CLONE=/tmp/blog
PUBLIC_WWW=/www/wwwroot/hexo
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

注意,只需要修改 GIT_REPOPUBLIC_WWW 的内容,前者为你创建的 git 仓库地址,后者为你在宝塔面板中创建的纯静态网站的地址。

保存退出后,执行以下命令赋予可执行权限。

1
chmod +x ~/hexo.git/hooks/post-rceive

配置博客目录的配置文件

打开在创建本地网站目录章节中创建的文件夹,编辑 _config.yml 文件,修改 deploy 节的内容。

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: git@you_server_ip_or_you_domain_address:hexo.git
branch: master

同样的,you_server_ip_or_you_domain_address 需要修改为你自己的服务器IP或绑定的域名。

部署博客到服务器中

现在,我们就可以将我们的博客部署到我们的服务器中了!

在本地博客目录打开 Git Bash 执行以下目录

1
2
hexo clean
hexo g -d

注意,如果需要执行 -d 命令,需要在node.js 中安装对应的插件,详见:安装部署插件

至此,我们就可以将博客部署到我们的服务器中了。