hexo+nginx+阿里云服务器,搭建个人博客

本文最后更新于:2022年4月9日 下午

之前写过一期使用 hexo+gitee 搭建个人博客 ,好处是不用自己买云服务器,也不用去买域名,方便简单。如果小伙伴们还没有服务器可以用之前的方法先把自己的博客搭起来,后面等云服务厂商搞活动再买个云服务器就行啦。

那我为什么还要写这一篇教程呢,一是因为最近 gitee 封禁图床仓库,我只好转战七牛云,七牛云每月有10G的免费云存储空间和10G流量,足够用了。但是七牛云需要自己准备一个域名才能访问云存储,不得已在阿里云买了个域名。加上之前618活动的时候在阿里云买了个云服务器,想着不能闲着浪费呀,于是乎把自己的博客搭建到云服务器上。

闲话少说,开整!

1. 环境准备

在着手搭建之前,需要准备以下条件:

本地计算机环境配置,可以看这里

  • 安装 Node.js
  • 安装 Git
  • 安装 Hexo

服务器准备工作:

  • ECS服务器,开放 80 端口来访问 nginx 服务
  • 域名,并解析到服务器的 ip

本文环境:

本地计算机:windows10,nodejs v12.13.1,git version 2.25.0.windows.1,hexo: 5.3.0

服务器:Ubuntu 18.04, nodejs v16.14.2, git version 2.32.0, nginx 1.20.2

2. 服务器安装 nginx

注意在服务器操作时,需要区分自己是使用什么用户在进行操作。

这里我们演示编译安装Nginx 服务。

2.1 安装依赖库

安装依赖环境,需要用户特权,因此可以切换到 root 用户,或者命令前加上 sudo

  • 安装gcc g++的依赖库

Nginx是C语言开发,安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境。如果没有gcc环境:

1
2
sudo apt-get install build-essential
sudo apt-get install libtool

是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。

1
2
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev

zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

1
sudo apt-get install zlib1g-dev
  • 安装SSL依赖库

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

1
sudo apt-get install openssl
  • 安装GeoIP库(可选)

MaxMind GeoIP 的 IP 地址数据库对客户端的 IP 地址得到实际的地理位置信息。

1
sudo apt-get install libgeo.dev
  • 安装图片压缩库(可选)

用来支持 http_image_filter_module 模块,该模块将符合配置的图片实时压缩为指定大小的缩略图再发送给用户。

1
sudo apt-get install libgd-dev

2.2 安装 nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#下载最新版本:
wget http://nginx.org/download/nginx-1.20.2.tar.gz
#解压:
tar -zxvf nginx-1.20.2.tar.gz
#进入解压目录:
cd nginx-1.20.2
#配置:(可自定义需要安装的模块)
./configure --prefix=/usr/local/nginx
#编译:
make
#安装:
sudo make install
#启动:
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过-h查看帮助命令。
#查看进程:
ps -ef | grep nginx

配置软链接

1
sudo ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

现在就可以不用路径直接输入 nginx 启动/重启/停止。

1
2
3
4
5
6
# 启动
sudo nginx
# 重启
sudo nginx -s reload
# 停止
snginx -s stop

2.3 配置 nginx

创建hexo部署目录

1
2
sudo mkdir -p /home/www/hexo
sudo chmod -R 777 /home/www/hexo

修改 nginx.conf 配置文件,为 /usr/local/nginx/conf/nginx.conf 文件,主要是修改 server 下的内容。

1
2
3
4
5
6
7
8
9
server {
listen 80;
server_name ***; # 这里填你的服务器地址

location / {
root /home/www/hexo; #hexo所在目录
index index.html index.htm;
}
}

3. 安装 node.js

去 nodejs 官网 https://nodejs.org/en/download/ 看最新的版本号,复制下载链接。

image-20220408191027862

1
2
3
4
5
6
7
8
9
10
11
12
#下载二进制包
wget https://nodejs.org/dist/v16.14.2/node-v16.14.2-linux-x64.tar.xz
#解压
tar -xvf node-v16.14.2-linux-x64.tar.xz
#改名
mv node-v16.14.2-linux-x64 nodejs
#建立软链接
sudo ln -s ./nodejs/bin/node /usr/local/bin/node
sudo ln -s ./nodejs/bin/npm /usr/local/bin/npm
#检查安装是否成功
node -v
npm -v

4. 安装 Git

检查git是否已经安装,输入git version命令即可,如果没有显示版本号表示没有安装git。

1
2
3
4
5
6
7
#安装
sudo apt-get install git
#查看安装版本号
git --version
#配置全局环境
git config --global user.name "用户名"
git config --global user.email "邮箱地址"

4.1 创建 git 用户

为实现博客自动部署,创建专用的 git 用户,使用公钥免密登陆服务器。

1
2
3
4
5
6
7
#创建git用户
sudo adduser git
#设置git用户密码
sudo passwd git
...
#修改文件用户权限
sudo chmod 740 /etc/sudoers

修改 /etc/sudoers 文件,添加 git 用户。

在该文件中找到 root ALL=(ALL) ALL,在下面添加一行 git ALL=(ALL) ALL。修改完成后,保存并退出编辑器。

再将该文件修改权限删除:

1
sudo chmod 400 /etc/sudoers

4.2 配置 git 用户免密登陆

切换到 git 用户下进行操作。

1
su git

复制本地公钥内容,添加到服务器中

1
2
3
4
5
6
7
8
9
#创建.ssh目录
mkdir .ssh && cd .ssh
#创建 authorized_keys
touch authorized_keys
#修改,将本地公钥内容粘贴到该文件
vim authorized_keys
#修改文件权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

现在,本地计算机通过 ssh 使用 git 用户登陆,将不会提示输入密码。

1
ssh -v git@xxx.xxx.xxx.xxx(服务器公网IP)

4.3 配置 Git 仓库

在服务器 git 用户下进行操作。

1
2
3
#创建git仓库
cd ~
git init --bare hexo.git

在该仓库中创建一个 post-receive 钩子文件

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

写入以下内容:

1
2
#!/bin/bash 
git --work-tree=/home/www/hexo --git-dir=/home/git/hexo.git checkout -f

作用是当该仓库有新的 receive 时,自动将内容同步到 /home/www/hexo 文件夹中。

授予钩子文件可执行权限:

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

重启 nginx 服务。

1
su nginx -s reload

至此,服务器的配置完成。

5. 修改本地 hexo 配置

修改 hexo 文件夹下的_config.yml文件:

1
2
3
4
5
6
7
8
#修改URL链接地址
url: http://***(服务器域名或IP)

#修改deploy目标
deploy:
type: git
repository: git@服务器IP地址:/home/git/hexo.git
branch: master

在个人博客站点目录下,打开 Git bash ,安装 Git 插件并进行部署:

1
2
3
4
5
6
#安装插件
npm install hexo-deployer-git --save
#生成网页
hexo g
#同步到服务器
hexo d

现在,可以通过在浏览器输入域名或服务器IP进行博客主页访问了。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!