服务器搭建个人博客过程记录
条件
如果想跟着本教程顺利完成 Hexo 博客的搭建,需要具备以下条件:
一台安装了 Ubuntu 一般个人博客的流量都比较低,初期选择 1核 1GB内存类型的服务器即可,而且有不少免费试用的时间。
在本地电脑上安装 Node.js 和 npm,建议谷歌相应关键词了解具体步骤。
此外,还要在云服务器上安装 Git 和 Nginx 两个必备的软件包。Git 用于版本管理和部署,Nginx 用于静态博客托管。
sudo apt-get updatesudo apt-get install git nginx -y
另外,本文均以 Windows 为例,演示在本地端的操作,
-
本地 Hexo 安装及初始化
我们使用 Node.js 的包管理器 npm 安装 hexo-cli 和 hexo-server。
npm install hexo-cli hexo-server -g
hexo-cli 是 Hexo 的命令行工具,可用于快速新建、发布、部署博客;hexo-server 是 Hexo 的内建服务器,可用于部署前的预览和测试。-g 选项,表示全局安装。
接下来,为 Hexo 博客做一些基础配置,包括创建基础文件。这步操作很简单,Hexo 提供了一个快捷命令,只需要提供一个存放文件的目录地址即可
hexo init 文件夹名
例如:
hexo init hexo_blog
在国内环境下执行该命令,速度会有些慢。因为需要从 Hexo 在 Github 上的仓库克隆;仓库克隆成功后,会自动执行一系列 npm 命令,自安装依赖模块。
这时,我们就已经有了一个写作、管理博客的环境。
-
云端服务器配置
完成本地端的操作之后,暂时回到服务器的配置。在下面的操作之前,请确保已经购买了一台云服务器,并且能够以 ubuntu 用户身份正常登陆。
在这部分,要完成以下件事情:
为本地的 hexo_blog
(上面创建的文件夹)配置一个部署静态文件的远程仓库。
配置 Nginx 托管博客文件目录。
配置远程仓库自动更新到博客文件目录的钩子。
2.1 创建私有 Git 仓库
在 /var/repo/ 下,创建一个名为 hexo_static 的裸仓库(bare repo)。
如果没有 /var/repo 目录,需要先创建;然后修改目录的所有权和用户权限,之后 ubuntu 用户都具备/var/repo 目录下所有新生成的目录和文件的权限。
sudo mkdir /var/repo/
sudo chown -R $USER:$USER /var/repo/
sudo chmod -R 755 /var/repo/
然后,执行如下命令:
cd /var/repo/
git init --bare hexo_static.git
2.2 配置 Nginx 托管文件目录
接下来,创建 /var/www/hexo
目录,用于 Nginx 托管。
sudo mkdir -p /var/www/hexo
和上一步类似,这里也需要修改目录的所有权和权限。
sudo chown -R $USER:$USER /var/www/hexo
sudo chmod -R 755 /var/www/hexo
然后,修改 Nginx 的 default 设置:
sudo vim /etc/nginx/sites-available/default
将其中的 root 指令指向 /var/www/hexo 目录。
...server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/hexo; # 需要修改的部分
index index.html index.htm;...
保存并退出文件。如果以后购买并备案域名之后,可以再将配置中的 default_server 修改为你的域名。
最后,重启 Nginx 服务,使得改动生效。
sudo service nginx restart
做完这一步之后,你去访问服务器的 IP 时,应该还是会报错的,因为 /var/www/hexo
目录是空的。
2.3 创建 Git 钩子
接下来,在服务器上的裸仓库 hexo_static
创建一个钩子,在满足特定条件时将静态 HTML 文件传送到 Web 服务器的目录下,即 /var/www/hexo
在自动生成的 hooks 目录下创建一个新的钩子文件:
sudo vim /var/repo/hexo_static.git/hooks/post-receive
在该文件中添加两行代码,指定 Git 的工作树(源代码)和 Git 目录(配置文件等)
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f
保存并退出文件,并让该文件变为可执行文件。
sudo chmod +x /var/repo/hexo_static.git/hooks/post-receive
至此,服务端的配置基本结束。
3. 完成本地 Hexo 配置
在第三部分的操作中,我们将完成以下任务:
修改 Hexo
配置中的 URL 和默认文章版式;
新建博客草稿并发布
配置自动部署到服务器端的 hexo_static
裸仓库;
3.1 修改 Hexo 部分默认配置
进入 hexo_blog 目录后,主要有以下文件。
-rw-r--r-- 1 benjisong 1049089 1619 Feb 24 14:45 _config.yml
-rw-r--r-- 1 benjisong 1049089 174 Feb 24 13:51 db.json
drwxr-xr-x 1 benjisong 1049089 0 Feb 24 12:16 node_modules
-rw-r--r-- 1 benjisong 1049089 484 Feb 24 12:16 package.json
drwxr-xr-x 1 benjisong 1049089 0 Feb 24 13:50 public
drwxr-xr-x 1 benjisong 1049089 0 Feb 24 12:08 scaffolds
drwxr-xr-x 1 benjisong 1049089 0 Feb 24 12:13 source
drwxr-xr-x 1 benjisong 1049089 0 Feb 24 12:08 themes
其中,_config.yml
为 Hexo
的主配置文件。我们首先修改博客的 URL 地址。
\# URL## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'url: http://server-ip # 没有绑定域名时填写服务器的实际 IP 地址。
root: /permalink: :year/:month/:day/:
title/permalink_defaults:
接下来,修改 default_layout,该字段位于在 Writing 部分。将其从 post 修改为 draft ,表示每篇博文默认都是草稿,必须经过发布之后才能在博客站点上访问。
\# Writingnew_post_name: :title.md # File name of new postsdefault_layout: draft # 原来的值是 posttitlecase: false # Transform title into titlecase
暂时保存并退出文件。在 3.3 部分继续进行配置。
3.2. 新建博客草稿并发布
这里简单演示通过 Hexo
新建博文草稿,并发布的过程。
执行如下命令,创建第一篇博文
hexo new first-post
你会看到类似如下输出:
INFO Created: ~\Workspace\Git\hexo_blog\source\_drafts\first-post.md
在本地通过自己熟悉的编辑器,编辑博文。这里,我们把本文的内容写入第一篇博客中。
title: 在 Ubuntu 14.04 服务器上部署 Hexo
博客tags: - Ubuntu - Hexocategories: - Hexocomments: truedate: 2017-02-24 15:31:00---## 以下为 Markdown 文章正文。
然后,通过如下命令发布博客:
hexo publish first-post
输出类似下面这样:
INFO Published: ~\Workspace\Git\hexo_blog\source\_posts\first-post.md
博客推送到服务器之后,就可以在网站上访问了。
3.3 通过 Git 部署
到了这一步,可以说万事俱备,只欠东风了。这个东风,就是通过 Git 将 Hexo
生成的静态内容推送到服务器。
继续编辑 _config.yml
文件,找到 Deployment 部分,按照如下情况修改:
deploy: type: git repo: ubuntu@服务器的IP地址:/var/repo/hexo_static branch: master
保存并退出文件
之后,需要安装一个 Hexo
包,负责将博客所需的静态内容发送到设置好的 Git 仓库。
npm install hexo-deployer-git --save
安装好后可以测试部署:
hexo generate && hexo deploy
期间可能会提示输入 ubuntu 用户的登录密码(如果没有设置 SSH 登录)。成功之后的输出大致如下:
... create mode 100644 tags/Node-js/index.html create mode 100644 tags/Ubuntu/index.htmlBranch master set up to track remote branch master from ubuntu@139.199.170.173:/var/repo/hexo_static.To 139.199.170.173:/var/repo/hexo_static * [new branch] HEAD -> masterINFO Deploy done: git
现在,我们就可以在浏览器中打开 服务器IP地址,即可看到自己的博客网站了。