自主搭建服务器hexo静态博客

396 阅读4分钟

hexo pc机上的配置 (一切操作都是在git bash)

  • 安装git
  • 安装nodejs
  • 安装hexo
    • 备注:用 npm 安装话经常出现卡住而导致无法正常安装,解决办法就是修改 npm 的安装源, 这里选择淘宝 NPM 镜像,这是一个完整 npmjs.org 镜像,你可以用此代替官方版本,同步频 率目前为 10分钟 一次以保证尽量与官方服务同步。

      npm config set registry https://registry.npm.taobao.org

    • 创建 你的Hexo 目录
      • 创建一个自定义的hexo目录,比如我就在用户根目录创建了一个myhexo文件夹

        mkdir "your hexo dir name"

      • 进入到刚刚创建的目录

        cd "your hexo dir name"

    • 安装 hexo-cli

      npm install -g hexo-cli

    • 初始化该文件夹

      hexo init

    • 安装hexo的扩展插件

      npm install

    • 等执行成功以后安装两个插件, hexo-deployer-git 和 hexo-server ,这俩插件的作用分别是使用Git自动部署,和本地简单的服务器。

      npm install hexo-deployer-git --save
      npm install hexo-server --save

    • 打开hexo

      hexo g
      hexo server

  • git用户
    • 创建以用于提交

      git config --global user.name "yourname" git config --global user.email "youremail

  • 生成ssh公钥密钥

    cd ~/.ssh
    ssh-keygen -t rsa -C "你的email"


linux (ubuntu + 阿里云) 服务器上的配置

  • 安装nginx
    • 切换至root用户

      sudo su root
      apt-get install nginx

    • 查看nginx版本

      nginx -v

    • 启动nginx

      service nginx start

    • 可以查看nginx的端口号

      ps -aux | grep nginx

    • 启动后,在网页重输入ip地址,即可看到nginx的欢迎页面。至此nginx安装成功

      cd /etc/nginx
      vim sites-available/default

      因为我们是拿nginx做 Web 服务器,所以我们需要安装部署好nginx,我们可以专门为hexo创建一个部署目录,比如我创建了/home/xufushen/hexo文件夹,并把nginx的配置文件nginx.conf中的部署目录改为/home/xufushen/hexo,配置文件在/etc/nginx/conf里;同样可以使用默认目录,nginx的默认目录为/var/www/html

    • 安装node.js

      curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash - apt-get install -y nodejs

    • 安装git

      apt-get install -y git

    • 创建一个git用户

      sudo adduser git 虽说现在的仓库只有我们自己在使用,新建一个 git 用户显得不是很有必要,但是为了安全起见,还是建议使用单独的 git 用户来专门运行git 服务

    • 添加证书登入

      mkdir .ssh
      mkdir authorized_keys

      刚在在本地创建或者已经拥有的公钥,也就是 ~/.ssh/id_rsa.pub 文件里的内容添加到服务器的 /home/git/.ssh/authorized_keys 文件中,如上所说,添加公钥之后可以防止每次 push 都输入密码。 (使用Xftp软件直接将文件拖入)

    • 初始化 Git 仓库

      可以将git仓库放到自定义位置,我是将其放在 /xufushen/blog/ 目录下的
      sudo mkdir /xufushen/blog/
      cd /xufushen/blog/
      git init --bare blog.git

      使用 --bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。

    • 配置 git hooks 我们这里要使用的是 post-receive 的 hook,这个 hook 会在整个 git 操作过程完结以后被运行.关于hooks的内容详情点击这里

    • 在 blog.git/hooks 目录下新建一个 post-receive 文件

      cd blog.git/hooks

    • 编辑这个文件

      vim post-receive

    • 在 post-receive 文件中写入如下内容

      git --work-tree=/home/xufushen/hexo --git-dir=/home/xufushen/blog.git checkout -f 其中hexo是博客在服务器的位置,blog是git更新仓库

    • 设置这个文件的可执行权限

      chmod +x post-receive

    • 改变 blog.git 目录的拥有者为 xufushen 用户

      chown -R xufushen:gxufushenit blog.git

    • 禁用 xufushen 用户的 shell 登录权限 出于安全考虑,我们要让 xufushen 用户不能通过 shell 登录。可以编辑 /etc/passwd 来实现

      vim /etc/passwdgit:x:1001:1001:,,,:/home/git:/bin/bash 改成 git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

      这样 xufushen 用户可以通过 ssh 正常使用 git,但是无法登录 shell。至此,服务器环境的搭建已经基本结束。


配置本地_config.yml文件,完成自动化部署

  • 配置 hexo 的 deploy
    • 修改 hexo 目录下的 _config.yml 找到 deploy, 修改为:

      deploy:
      type: git
      repo: xufushen@47.100.184.175:/home/xufushen/blog/blog.git
      branch: master

      repo的地址为你自己的地址以及 git 仓库目录

  • 使用hexo blog
    • 新建文章:

      hexo new "post name"

    • 生成 & 部署:

      hexo clean && hexo g && hexo d


在搭建的过程遇到的问题

  • 连到服务器后无法连接到repository
    • 这是因为你在创建blog.git与hexo文件时要把的归属用户与用户组更改为创建的用户

      解:这是因为你在创建blog.git与hexo文件时要把的归属用户与用户组更改为创建的用户