使用 Debian 搭建 hexo 博客

hexo是一个静态博客程序,在技术人员中相当的受欢迎,建议使用VPS进行搭建,一般虚拟主机无法使用hexo

Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
Hexo 产生的静态文件只要放到任何支持 html 的空间或者服务器均可访问。主要的选择方案有以下两种
1. GitHub Pages
2. VPS
> GitHub Pages 本用于介绍托管在GitHub的项目,不过,由于他的空间免费稳定,用来做搭建一个博客再好不过了。
每个帐号只能有一个仓库来存放个人主页,而且仓库的名字必须是username/username.github.io,这是特殊的命名约定。你可以通过http://username.github.io 来访问你的个人主页。)

Github Pages 好处是完全免费,搭建并部署到教程可以参考(随便Google吧,我就不放我博客了)我个人的方案是第二种,部署到自己的服务器。

安装 Hexo
更新软件包

apt-get update
apt-get upgrade

安装依赖
Hexo 依赖于 Node.js 和 Git,需要先安装。

安装 Git

apt install git-core -y

查看 git 版本

git –version

安装 Node.js
使用以下命令安装 Node.js
Node.js v11.x 版本

curl -sL https://deb.nodesource.com/setup_11.x | bash –
apt-get install -y nodejs

查看node.js版本

node –version

查看npm版本

npm –version

安装 Hexo

npm install hexo-cli -g

在  hexo  目录下初始化 hexo 博客,也可以是任意你想要的名字

hexo init hexo

进入博客根目录,并且安装相关插件依赖等

cd hexo
npm install

安装完成后需要用一下命令

hexo g # 渲染 Source 目录下文件问静态页面
hexo s # 本地跑一个 server 来看博客效果。

然后可以在 `http://localhost:4000/` 查看运行效果。

配置服务器环境

服务器环境我选择使用 Debian + Nginx 环境。

必须先执行 cd 把目录切换到root后才能执行下面操作

安装 Nginx
Nginx 是一个高性能的 HTTP 和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。
执行命令安装Nginx

 

 

  1. apt-get install nginx

复制代码

启动 Nginx

Nginx 安装完成后需要手动启动

  1. service nginx start

复制代码

配置完成后,访问使用浏览器服务器 ip ,如果能看到以下界面,表示运行成功。

配置虚拟主机

虚拟主机(Virtual Host)可以在一台服务器上绑定多个域名,架设多个不同的网站,一般在开发机或者要部署多个小网站的服务器上需要配置虚拟主机。

创建新的网站目录

Nginx 默认把网页文件存在 /var/www/html 目录。

为了方便期间,我们在 /var/www/ 目录下为每个站点创建一个文件夹。

PS:我的VPS上就这一个博客,所以不需要区分文件夹

——
mkdir -p /var/www/blog/html
chown -R $USERUSER /var/www/blog/html
chmod -R 755 /var/www
——(手动Delete掉)(如果你要部署多个网站,记得修改下文目录)

在 `/var/www/html/` 目录下创建 index.html 文件。写上以下内容,用于测试虚拟主机运行情况。

  1. <html>
  2.     <head>
  3.         <title>Success! The Blog server block is working!</title>
  4.     </head>
  5.     <body>
  6.         <h1>Hello World!</h1>
  7.     </body>
  8. </html>

复制代码

创建虚拟主机配置文件

在 /etc/nginx/conf.d/ 创建虚拟主机配置文件 hexo.conf,并且填写以下代码

  1. server {
  2.     listen 80;
  3.     listen [::]:80;
  4.     root /var/www/html;
  5.     index index.html index.htm index.nginx-debian.html;
  6.     server_name www.abc.com abc.com;
  7.     location / {
  8.     try_files $uri $uri/ =404;
  9.     }
  10. }

复制代码

如果需要部署SSL,先把SSL证书和Key上传到VPS你喜欢的文件夹,并且填写以下代码

  1. server {
  2.         listen 80 default backlog=2048;
  3.         listen 443 ssl;
  4.         server_name abc.com;
  5.         if ($scheme = http ) {
  6.         return 301 https://www.$host$request_uri;
  7.         }
  8.         #ssl on;        #注释掉
  9.         ssl_certificate /etc/nginx/ssl/ssl.crt;
  10.         ssl_certificate_key /etc/nginx/ssl/ssl.key;
  11.         ssl_session_timeout 5m;
  12.         ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  13.         ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
  14.         ssl_prefer_server_ciphers on;
  15.         location / {
  16.         root /var/www/html;         #根目录的相对位置
  17.         index index.html index.htm;
  18.     }
  19. }

复制代码

重启 Nginx 服务器,使服务器设定生效

  1. service nginx restart

复制代码

如果执行 service nginx restart 时提示如下错误

  1. Job for nginx.service failed because the control process exited with error code.
  2. See “systemctl status nginx.service” and “journalctl -xe” for details.,

复制代码

执行 nginx -t

提示下面这句错误命令

  1. nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/default:22
  2. nginx: configuration file /etc/nginx/nginx.conf test failed

复制代码

那么执行 cd /etc/nginx/sites-enabled 进入 sites-enabled 文件夹

执行 rm default 删除default

再执行 nginx -t 出现下面命令

  1. nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
  2. nginx: configuration file /etc/nginx/nginx.conf test is successful

复制代码

执行下面的命令重启nginx

  1. service nginx restart

复制代码

查看 nginx 的状态

  1. service nginx status

复制代码

OK,Nginx 重新加载成功,可以继续了

修改本地host,验证结果

在绑定域名到服务器之前,需要修改本地 host 文件来测试。本地电脑上修改 /etc/hosts 文件。

  1. 1.1.1.1 abc.com

复制代码

> 不过我发现不修改host文件也可以直接打开。

能看到以下结果就表示虚拟主机配置成功。

部署 Hexo 到服务器

Hexo 可以使用 git 方式部署。由于第一步已经安装完成Git,所以直接继续

配置服务器环境

创建空白 git 仓库,并且设置 git hook

  1. cd ~
  2. mkdir hexo.git && cd hexo.git
  3. git init –bare

复制代码

在 `/root/hexo.git/hooks` 创建配置文件 post-receive,并且填写以下代码

  1. #!/bin/bash
  2. GIT_REPO=/root/hexo.git  #git仓库
  3. TMP_GIT_CLONE=/tmp/hexo
  4. PUBLIC_WWW=/var/www/html #网站目录
  5. rm -rf ${TMP_GIT_CLONE}
  6. git clone $GIT_REPO $TMP_GIT_CLONE
  7. rm -rf ${PUBLIC_WWW}/*
  8. cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

复制代码

赋予脚本的执行权限

  1. cd /root/hexo.git/hooks
  2. chmod +x post-receive

复制代码

配置本机环境

在博客目录下运行下面命令,安装 git 部署工具。

  1. cd
  2. cd hexo
  3. npm install hexo-deployer-git –save

复制代码

修改博客的配置文件 _config.yml,修改deploy选项:

  1. deploy:
  2.   type: git
  3.   message: update
  4.   repo: root@1.1.1.1:/root/hexo.git
  5.   branch: master

复制代码

然后运行 hexo g -d 部署本地渲染网页到服务器上。

完成

错误

如果提示下面这句错误命令

  1. INFO  Deploying: git
  2. INFO  Setting up Git deployment…
  3. Initialized empty Git repository in /root/hexo/.deploy_git/.git/
  4. *** Please tell me who you are.
  5. Run
  6.   git config –global user.email “you@example.com”
  7.   git config –global user.name “Your Name”
  8. to set your account’s default identity.
  9. Omit –global to set the identity only in this repository.
  10. fatal: unable to auto-detect email address (got ‘root@debian.(none)’)
  11. FATAL Something’s wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
  12. Error: Spawn failed
  13.     at ChildProcess.<anonymous> (/root/hexo/node_modules/hexo-util/lib/spawn.js:52:19)
  14.     at ChildProcess.emit (events.js:197:13)
  15.     at Process.ChildProcess._handle.onexit (internal/child_process.js:254:12)

复制代码

解决方案: 见提示就知道, 要您填上你得注册的邮箱和昵称,例如:

  1. git config –global user.email “you@example.com” #自行更换自己的邮箱
  2. git config –global user.name “Your Name” #自行更换自己的昵称

复制代码

原文链接:,转发请注明来源落伍老站长!

发表评论