前言
我们在本地开发好了hexo博客后,当需要在互联网上访问的时候,我们就需要把它发布到外网上去,本文以阿里云服务器为例来讲解hexo博客时如何自动部署到阿里云服务器。
准备环境
- 本地安装好node.js以及hexo博客初始化
- 服务器安装Git,Nginx以及Git用户创建(阿里云默认自带Git,Nginx)
操作流程
-
node.js安装(略)
-
hexo博客初始化
#全局安装hexo npm install -g hexo #初始化项目(先建一个存放项目的目录,并进入到该目录下面) hexo init #运行服务(默认端口:4000) hexo s
-
安装Git
##安装git(阿里云默认安装了Git) yum install git ## 查看git安装版本 git --version
-
创建Git用户
##创建git用户 adduser git ##修改git用户的权限 chmod 740 /etc/sudoers ##打开文件/etc/sudoers 找到 root ALL=(ALL) ALL,在下面添加一行 git ALL=(ALL) ALL vim /etc/sudoers ##保存退出后改回权限 chmod 400 /etc/sudoers ##设置git用户的密码 sudo passwd git
-
配置SHH无密码访问
##在服务器端将登陆用户切换到git用户,然后在~目录(根目录)下创建.ssh文件夹,用来存放公钥 su git cd ~ ##服务端:.ssh目录不存在则新建 mkdir .ssh ##服务端:authorized_keys不存在则新建 touch authorized_keys chmod 600 ~/.ssh/authorzied_keys chmod 700 ~/.ssh ##客户端:本地计算机桌面右键或开始菜单中打开Git Bash Here ssh-key -t rsa ##客户端:连续三次Enter键即可生成本地公钥文件(id_rsa.pub)和私钥文件(id_rsa),文件路径 C:\Users\用户名\.ssh ##客户端:拷贝本地文件公钥文件拷贝到服务器的.ssh目录下 ##将公钥文件追加到authorized_keys cat id_rsa.pub >> authorized_keys ##服务端:重启ssh服务 service sshd restart ##客户端:测试ssh连接,如果不需要输入git用户密码则代表配置成功 ssh git@ip
-
创建Git裸仓库
##切换到git用户 su git ##新建裸仓库所在的目录 mkdir repos ##使用–bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在 git init --bare blog.git
-
配置Git钩子
##在 hexo.git/hooks 目录下新建一个 post-receive 文件 cd /home/git/blog.git/hooks ##编辑post-receive vim post-receive ##加入下面的配置文件,这样hexo发布到blog.git的文件就会自动同步到/web/blog目录下面 #!/bin/bash git --work-tree=/web/blog --git-dir=/home/git/blog.git checkout -f
-
配置hexo中的发布路径
##根目录下找到 _congif.yml,找到deploy字段 deploy: type: 'git' repo: codeing: git@域名:/home/git/repos/blog.git,master
-
客户端发布
##生成静态文件并发布 hexo g -d
-
nginx配置
##修改nginx配置文件指向博客所在的路径/web/blog ##新建bolg.conf vim /etc/nginx/conf.d/bolg.conf ## 加入如下配置 location /blog { root /web/blog; index index.html index.htm index.php; } ##重启nginx systemctl restart nginx ##测试,地址如下 http://域名/blog