Hexo部署在阿里云服务器上

博客的架构

先搞明白Hexo博客从搭建到自动发布的架构,才能更好的理解我们每一步进行的操作。不然只跟着步骤过了一遍,却不知道为什么这么做。


Hexo部署在阿里云服务器上_第1张图片
hexo的架构

整个流程就是本地将 *.md 渲染成静态文件,然后Git推送到服务器的repository,服务器再通过 git-hooks 同步网站根目录。

搭建流程

第一步: 安装node.js以及本地Hexo初始化
第二步: 服务器环境搭建,包括安装 GitNginx配置 、创建 git 用户
第三步: 使用Git自动化部署发布博客

本地环境

本地环境我就不介绍了查看下面两篇文章

  • 使用Github搭建Hexo技术博客--安装教程
  • 使用Github搭建Hexo技术博客--增强教程

服务器环境搭建

安装nginx

  • 因为我们是拿nginx做Web服务器,所以我们需要安装部署好nginx,如果没有安装,推荐使用LNMP一键安装包,不过我使用的是宝塔的主机面板管理主机。
  • 我们可以专门为hexo创建一个部署目录,比如我创建了/home/www/hexo文件夹,并把nginx的配置文件nginx.conf中的部署目录改为/home/www/hexo,
    配置文件一般在/usr/local/nginx/conf里;同样可以使用默认目录,nginx的默认目录为/var/www/html,如果使用宝塔的主机面板,则默认的部署目录为/www/wwwroot/hexo

安装Git

yum install git
  • 检查安装信息:git --version

创建git用户

adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers

找到以下内容

## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL

在下面添加一行

git     ALL=(ALL)       ALL

保存退出后改回权限:chmod 400 /etc/sudoers

  • 然后给新加的用户git设置权限,编辑/etc/passwd将:git:x:1003:1003:,,,:/home/git:/bin/bash 改成:git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell 这样git就只能使用git-shell而不能使用bash。
  • git服务器打开RSA认证
    vim /etc/ssh/sshd_config
    在sshd_config中开启以下几项:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys
  • 随后设置Git用户的密码
#需要root权限
sudo passwd git

配置ssh

切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限

su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
#然后将电脑中执行 cat ~/.ssh/id_rsa.pub | pbcopy ,将公钥复制粘贴到authorized_keys
chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh
  • 然后就可以执行ssh 命令测试是否可以免密登录ssh -v git@SERVER 至此,Git用户添加完成

创建仓库

执行命令:sudo git init --bare hexo.git

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

改变 hexo.git 目录的拥有者为git用户:sudo chown -R git:git hexo.git

配置钩子

hexo.git/hooks 目录下新建一个 post-receive 文件,进入cd /home/git/hexo.git/hooks/,编辑这个文件vim post-receive
post-receive 文件中写入如下内容:

#!/bin/bash
git --work-tree=/www/wwwroot/hexo --git-dir=/home/git/hexo.git checkout -f
  • 设置这个文件的可执行权限:chmod +x post-receive
  • 注意,/www/wwwroot/hexo 要换成你自己的部署目录,正如上文所说,我是的配置目录是/www/wwwroot/hexo。其中/home/git/hexo.git是git仓库的位置。上面那句 git 命令可以在我们每次 push 完之后,把部署目录更新到博客的最新生成状态。这样便可以完成达到自动部署的目的了。

下面这种方式我也试过总是提示删除文件夹没有权限

#!/bin/sh
rm -rf /www/wwwroot/hexo
git clone /home/git/hexo.git/ /www/wwwroot/hexo/

还尝试改变权限:chown -R git:git /www/wwwroot/hexo/ 但是就是没有成功也许是我的方法不对,再此记录下。

参考资料

安装Git

在Linux上安装Git:https://www.cnblogs.com/lhbryant/p/6928894.html

部署教程

阿里云VPS搭建自己的的Hexo博客:https://segmentfault.com/a/1190000005723321
Hexo个人博客部署到CentOS个人服务器:https://segmentfault.com/a/1190000010680022
部署Hexo到个人服务器:https://www.huangtengxq.com/2017/08/19/BuildHexoOnVps/
HEXO部署到unbuntu服务器详细指南:http://www.laoyuyu.me/2017/10/10/hexo_deploy_vps/
服务器部署Hexo博客:https://dogorgod.github.io/2017/03/24/%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%83%A8%E7%BD%B2Hexo%E5%8D%9A%E5%AE%A2/
Hexo博客部署到服务器:https://i.jakeyu.top/2016/12/06/Hexo%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B9%B6%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2/
通过Git将Hexo博客部署到服务器:https://www.jianshu.com/p/e03e363713f9
部署Hexo博客到linux云主机并实现自动发布:https://ghui.me/post/2016/07/host-hexo-vps/
将Hexo博客部署到云主机:https://blog.fundebug.com/2017/05/18/deploy-hexo-on-cloud/
配合Travis CI,将Hexo博客自动部署到你的服务器上:https://blog.keep.moe/2015/11/06/hexo-and-travis-ci/
使用Git Hook自动部署Hexo到个人VPS:http://www.swiftyper.com/2016/04/17/deploy-hexo-with-git-hook/
VPS Centos7安装Git服务器,部署Hexo静态博客:https://www.micronbot.com/blog/8.html
在Ubuntu 14.04服务器上部署Hexo博客:https://cloud.tencent.com/developer/article/1004587
阿里云ubuntu部署hexo,并与本地同步,实现自动部署:http://blog.csdn.net/nghuyong/article/details/54430093
阿里云搭建Git服务,实现Hexo自动部署:https://imys.net/20160303/hexo-nginx-auto-deploy.html
hexo博客部署到linux服务器上:https://lvshen9.github.io/2018/01/08/Hexo%E5%8D%9A%E5%AE%A2%E9%83%A8%E7%BD%B2%E5%88%B0Linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A/

你可能感兴趣的:(Hexo部署在阿里云服务器上)