image-20210325235623599

快速完成Hexo在ECS上的环境部署

准备工作

  • 一台ECS/云服务器
  • 本地的Hexo仓库
  • VScode(可选)

Step1.本地连接ECS

生成SSH公钥/私钥

在本地的终端(Poweshell/Cmd)键入以下命令:

ssh-keygen
生成SSH公钥私钥

这里可以按照默认一路按回车,如果想要把公钥私钥存储在其他目录可以像我一样自己输入目录。

进入你选择的目录,找到id_rsa.pub,用记事本打开,复制其中的内容,这就是你的主机的公钥。

使用终端连接到ECS

在终端中输入:

ssh username@ip

例如你要登陆的服务器用户名为root,ip为xxx:

ssh root@xxx
连接过程的流程大概如图

*首次连接可能会有更多的信息打印出来。

现在,你已经远程连接到了你的ECS。

接下来,让我们在ECS上做好准备。

Step2.ECS的配置

安装Node.js

在Ubuntu上通过apt来安装Node.js:

#首先更新apt源
sudo apt update
#安装nvm
sudo apt install nodejs
image-20210325231009526

如果是在Centos上,则使用yum命令来完成:

sudo yum update
sudo yum install nodejs

这里就不上图了

安装Git

换汤不换药,同样用相同方法安装Git

sudo apt install git
image-20210325231248727

安装Nginx

同上:

sudo apt install nginx
image-20210325233221775

创建git用户

为了安全起见,我们不应该随意暴露root用户,所以我们创建一个新的git用户:

sudo adduser git
image-20210325231523519

设置好密码,用户信息可以一路回车下去。

临时赋予git用户sudo权限

设置sudoers文件修改权限:

chmod 740 /etc/sudoers

使用vim编辑文件:

vim /etc/sudoers

找到字段root ALL=(ALL:ALL) ALL

i进入编辑模式,在这一行下面添加git ALL=(ALL:ALL) ALL

添加完毕后按下Esc,输入:wq回车保存文件。

ACA

保存完毕后,将权限改回:

chmod 440 /etc/sudoers
image-20210325231657931

初始化Git仓库

为了能正确部署hexo文件到服务器,我们需要初始化一个裸仓库,依次执行以下命令:

cd /home/git                //切换到git用户目录
sudo mkdir blog.git //创建git仓库文件夹,以blog.git为例
cd blog.git //进入仓库目录
sudo git init --bare //使用--bare参数初始化为裸仓库,这样创建的仓库不包含工作区
image-20210325232945597

创建网站目录

我们需要创建一个网站目录用于nginx的配置:

cd /var/www/                //切换目录
sudo mkdir blog //创建网站目录,以blog为例
image-20210325233400762

配置 SSH

配置SSH是为了方便访问服务器。

cd /home/git                //切换到git用户目录
sudo mkdir .ssh //创建.ssh目录,如果提示.ssh已存在,则继续键入下一段命令
cd .ssh
sudo vim authorized_keys

然后将本地的公钥复制到 authorized_keys 文件里 。

在本地终端执行以下命令可以获取你的公钥。

cat ~/.ssh/id_rsa.pub

确保用户组权限

键入以下命令以保证git用户有足够的权限

chown -R git.git /home/git/blog.git/
chown -R git.git /home/git/.ssh/
chown -R git.git /var/www/blog/

配置Nginx

cd /etc/nginx/sites-available               //切换目录
sudo cp default default.bak //备份默认配置
vim default //修改配置

改动红框部分:

root /var/www/blog;		//网站根目录
server_name guchcx.fun, www.guchcx.fun; //这里改成你的网址
屏幕截图 2021-03-25 234026

保存退出后,启动Nginx:

systemctl start nginx

设置开机自启动

systemctl enable nginx

配置Git Hooks

创建 post-receive 文件,先切换到git

su git
cd /home/git/blog.git/hooks //切换到hooks目录下
sudo vim post-receive //创建文件

复制下面的内容到 post-receive 文件中:

#!/bin/bash
echo "post-receive hook is running..."

GIT_REPO=/home/git/blog.git
TMP_GIT_CLONE=/tmp/blog
PUBLIC_WWW=/var/www/blog

rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

赋予可执行权限:

chmod +x post-receive

Step3.本地终端配置

配置Hexo

打开本地博客根目录下的_config.yml 文件,找到最后的 deploy 配置,修改为:

# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
# repo: git@IP:/~/blog.git # 默认端口生效使用
branch: master

使用hexo cl&&hexo d把仓库部署上去,大功告成!