Ubuntu(DigitOcean)+Nginx+Hexo搭建博客

前几日,由于想自己搭建一个可以翻墙的服务器,便在DigitOcean上买了一个每个月5美元的最低配置版的装有Ubuntu系统的Droplets。如果是学生的话可以在github领学生包,里面有50美元的代金券,直接在github上搜索github student pack就能找到,代金券可以在DigitOcean上面使用。还有一种方法就是通过我的邀请链接在DigitOcean上面注册成功后就可以获得10美元,相当于可以免费用两个月。不过,在注册成功前,你必须先充值5美元以激活帐户,这5美元貌似可以申请退还,不过我没试过,毕竟自己会经常用服务器。

迅速搭建完成后,测试了一下,果然可以科学上网了。于是,又想搞点新鲜的玩意儿,毕竟服务器只用来翻墙貌似有点太浪费。于是就想着搭建一个自己的博客系统,闲来无事可以自己写写随笔,作作技术笔记,也算积累一下经验。

听室友说,Hexo用来搭建博客系统不错,于是便决定用它了。Hexo生成的是静态文件,所以可以在本地利用Hexo先生成静态文件,然后将这些静态文件通过git部署到服务器上,用Nginx做Web服务。由于hexo支持git的部署方式,所以可以实现从本地更新博客,非常方便。

搭建过程

本机操作

由于本机是windows,所以这里以windows为例。

  1. 安装Node.js和Git
  2. 生成SSH密钥(有就不用生成):

    1
    ssh-keygen -t rsa -C "email@example.com" # 一路回车
  3. 创建一个文件夹作为博客网站的目录(例如:E:\BLOG

  4. 进入BLOG目录,执行如下命令初始化Hexo博客:

    1
    2
    3
    npm install -g hexo-cli
    hexo init
    npm install
  5. 安装插件

    1
    2
    npm install hexo-deployer-git --save
    npm install hero-server
  6. 生成静态文件并启动hexo服务

    1
    2
    hexo g
    hexo s
  7. 打开浏览器输入http://localhost:4000 ,可看到第一篇博客,这只是本地博客。

服务器操作

  1. 连接服务器:这里我用git bash连接
    1
    ssh root@<ip地址>
  1. 在服务器上安装Git和Node.js以及Nginx
    1
    2
    3
    4
    sudo apt install git
    sudo apt install nodejs
    sudo apt install npm
    sudo apt install nginx
  1. 配置Nginx托管目录

    3.1. 创建/var/www/hexo目录,用于Nginx托管

    1
    2
    3
    mkdir -p /var/www/hexo
    chown -R $USER:$USER /var/www/hexo
    chmod -R 755 /var/www/hexo

    3.2. 修改Nginx配置

    1
    2
    3
    sudo vi /etc/nginx/sites-enabled/default
    # 将 root /var/www/html 改为 root /var/www/hexo
    # 保存退出

    3.3. 重启nginx

    1
    nginx -s reload
  2. 创建私有git仓库

    4.1. 创建用户:git,用于运行git服务

    1
    sudo adduser git

    4.2. 将本机的SSH公钥:.ssh目录下的id_rsa.pub内容添加到/home/git/.ssh/authorized_keys文件中。

    4.3. 在/home/git下创建一个名为hexo.git的裸仓库

    1
    git init --bare hexo.git

    4.4. 创建Git钩子,在满足条件情况下将静态文件传送到Web服务器目录,即/var/www/hexo

    1
    sudo vi /home/git/hexo.git/hooks/post-receive

    4.5. 添加如下代码

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

    4.6. 保存并退出,将该文件变为可执行文件

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

    4.7. 将hexo.git目录和网站目录的所有者改为git用户

    1
    2
    sudo chown -R git:git /home/git/hexo.git
    sudo chown -R git:git /var/www/hexo

至此,结束服务器端配置。

部署到服务端

  1. 在本机中修改hexo站点配置文件_config.yml

    1
    2
    3
    4
    deploy:
    type: git
    repo: git@<服务器IP地址或域名>:/home/git/hexo.git
    branch: master
  2. 之后就能通过以下命令,完成博客的更新了。

    1
    hexo d -g

引用: