写在开始

一开始将自己hexo部署到github,结果发现打开页面速度有点慢,然后又将其同时部署到coding,实现双线路访问,国内解析记录到coding,国外解析到github,这样确实网站的速度能提高不少,但是国内访问因为是经过coding,所以打开网站会有广告,这点不能容忍,于是想到自己的服务器也还空闲着,于是想到可以部署到自己的服务器上,折腾开始

演示站点

部署总览

  • 个人使用的环境

    • 本地环境: Windows10(64位)
    • 云主机:阿里云ECS(CentOS 7.2 64位)
  • 整个部署过程
    • 本地环境搭建(gitNodeJshexo..)
    • 云主机环境搭建(gitNginx
    • 设置解析(dnspod
    • 使用git自动化部署博客

本地环境搭建

  • 安装git
  • 安装hexo(这些步骤省略)
  • 生成ssh公钥(之前生成过的也就不用再执行了,比如部署在github上填写过rsa密钥就不需要再进行这一步了)
  • 在命令行终端执行如下命令

    ssh-keygen -t rsa -C "邮件地址"
  • 生成的文件默认在~/.ssh目录中,看到有id_rsaid_rsa.pub这些文件即可

云主机环境搭建

  • 安装git及nodejs
yum install git
#安装NodeJS
curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -
  • 创建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账户密码
    sudo passwd git
  • 切换至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
  • 在本地终端中测试是否能免密登录git

    ssh -v git@SERVER
  • 其中SERVER为填写自己的云主机IP
  • 创建目录
# repo 作为为git仓库目录
mkdir -R /var/repo
# hexo 作为网站根目录
mkdir -R /var/www/hexo
  • 配置nginx(当然Apache也是可以的,nginx的安装步骤省略)
  • 首先输入ngixn -t找到配置文件,我的是在/etc/nginx/nginx.conf,配置SERVER
   server {
listen 80;
# server_name 填写自己的域名
server_name www.fayne.cn;
# 这里root填写自己的网站根目录
root /var/www/hexo;
index index.html index.php index.htm;
#/usr/local/tomcat/webapps/Forum # Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
location ~ .php$ {
} error_page 404 /404.html;
location = /40x.html {
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

设置解析

  • dnspod设置解析记录,设置解析A记录www解析到服务器IP地址, 解析线路默认
  • 设置CNAME解析使www解析到xxx.github.io,解析线路国外,这里的xxxhexo部署在github的仓库名称,这样保证了在国外访问速度也是极佳的

使用git自动化部署博客

自动化部署主要用到了git-hooks同步

  • 服务器建立裸库,这里要用git用户登录,确保git用户拥有仓库所有权
su git
cd /var/repo/
git init --bare blog.git
  • 使用 git-hooks 同步网站根目录

    在这里我们使用的是 post-update这个钩子(也有可能是post-receive,具体进入文件就知道了),当git有收发的时候就会调用这个钩子。 在 /var/repo/blog.git 裸库的 hooks文件夹中
vim /var/repo/blog.git/hooks/post-update
# 编辑文件,写入以下内容
#!/bin/sh
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f
保存后,要赋予这个文件可执行权限
chmod +x post-update
  • 配置_config.yml,完成自动化部署

    打开_config.yml, 找到deploy
deploy:
type: git
repo:
github: git@github.com:Finhoo/Finhoo.github.io.git
www: git@www.fayne.cn:/var/repo/blog.git
branch: master

保存后,即可测试部署

hexo clean && hexo g -d
  • 至此,我们已经成功部完成,并且访问自己的服务器端比访问github快多了,国外速度也是很好

常见问题

我在部署过程中,执行 hexo d发现部署老是出错,什么权限不允许之类的,这里我们需要检查我们在上述的git操作部署是否使用了git用户操作,若是没有,需要给相应的目录更改用户组

使用chown -R git:git /var/repo/这条命令递归的将repo目录及其子目录用户组设置为git,同时chown -R git:git /var/www/hexo,这样即可解决此类问题

参考资料

阿里云VPS搭建自己的的Hexo博客

优化hexo访问速度-将hexo部署到云主机VPS的更多相关文章

  1. 将Hexo博客部署到云主机

    摘要: 在云主机上搭建一个git裸仓库,然后使用nginx作为网页服务器,就可以轻松将Hexo博客通过git部署到云主机上. 这是一个忧伤的故事 我的博客KiwenLau之前部署在Coding Pag ...

  2. mysql部署到云主机的笔记

    写了个程序,需要把数据库部署到云主机上 MySQL基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限 为了安全,新添加一个用户来进行远程登录 登录MYSQL: ...

  3. js优化提升访问速度

    一.给JS文件减肥. 有的人为了给网站增加炫目效果,往往会使用一些JS效果代码,这在上个世纪似乎还很流行,对于现在来说,最好在用户体验确实需要的情况下,使用这些东西.至于希望给自己的JS文件减肥的童鞋 ...

  4. ip速度检测与云主机|VPS的抉择:bandwagonhost digitalocean hostWind Vultr Linode

    最近的梯子断了,网站又被注销了.又到了挑vps的时间了.其实, 这些东西,烦死人了.挺浪费生命的. 首先速度测试, MTR测试 网站速度测试 17CE. http://tool.chinaz.com/ ...

  5. rocketMq指定broker ip地址,适合解决云主机部署问题

      在工作中遇到了一个这个问题,就是我们rocketmq是部署在云主机上的 但是我们的开发同事在自己的电脑连接rocketmq链接不上 报错显示Caused by: org.apache.rocket ...

  6. hexo访问优化之--------gulp压缩

    hexo访问优化之--------gulp压缩 hexo生成的博客是静态html页面,当有很多静态资源时,加载速度会非常慢,且github服务器在国外,导致网页加载速度非常差 gulp压缩 gulp是 ...

  7. Hexo快速搭建静态博客并实现远程VPS自动部署

    这篇文章将如何搭建hexo,以及如何通过git webhooks实现远程vps的自动部署 这篇文件适合的条件: 简单的用于个人博客.公司博客展示,hexo的定位是静态博客,要实现动态服务器的功能并不适 ...

  8. hexo搭建个人博客部署到个人服务器(git+nginx+hexo+next)

    本次以阿里云服务器为例,详细讲解步骤: 一.本地环境[客户端] 这里以本地的win10电脑为例 1.下载node, 默认安装,安装完成之后,node -v看看版本号 node下载 2.安装node(傻 ...

  9. 基于Hexo搭建博客并部署到Github Pages

    基于Hexo搭建博客并部署到Github Pages 之前在简书上写东西,觉得自己还是太浮躁.本来打算用Flask自己写一个,以为是微框架就比较简单,naive.HTML.CSS.JS等都要学啊,我几 ...

随机推荐

  1. Tomcat中部署web应用 ---- Dubbo服务消费者Web应用war包的部署

    样例视频:http://www.roncoo.com/course/view/f614343765bc4aac8597c6d8b38f06fd IP: 192.168.2.61 部署容器:apache ...

  2. Mathematica 10 Mac 设置默认工作目录

    用SetDirectory命令设置  

  3. ajax来判断用户是否登录与添加

    首先在用ajax之前,先说一下JSON: JSON:javascript object notation   js对象标记 对于json,我们只需要知道如何定义json?如何输出?怎么遍历? 1.定义 ...

  4. openCV使用

    三方框架----> oprnCV使用的步骤 第一步:从官网下载framework添加到工程 1.打开 http://opencv.org/ 2. 3. 4. 3执行完之后 新打开的网页会倒计时为 ...

  5. Unity应用架构设计(13)——日志组件的实施

    对于应用程序而言,日志是非常重要的功能,通过日志,我们可以跟踪应用程序的数据状态,记录Crash的日志可以帮助我们分析应用程序崩溃的原因,我们甚至可以通过日志来进行性能的监控.总之,日志的好处很多,特 ...

  6. KBEngine简单RPG-Demo源码解析(1)

    一:环境搭建1. 确保已经下载过KBEngine服务端引擎,如果没有下载请先下载          下载服务端源码(KBEngine):              https://github.com ...

  7. OJ2236“孤单数”题目报告

    题目描述:有2n+1个数,其中有n对数字是成双出现的,有且仅有1个数字只有它自己一个.请你找出这个孤单数. 输入描述: 第一行有且只有一个正整数n(n<=500000) 第二行有2n+1个数ai ...

  8. Unity 游戏框架搭建 (五) 简易消息机制

    什么是消息机制? 23333333,让我先笑一会. 为什么用消息机制?   三个字,解!!!!耦!!!!合!!!!. 我的框架中的消息机制用例: 1.接收者 ``` using UnityEngine ...

  9. 20170717_python爬虫之requests+cookie模拟登陆

    在成功登陆之前,失败了十几次.完全找不到是什么原因导致被网站判断cookie是无效的. 直到用了firefox的httpfox之后才发现cookie里还有一个ASP.NET_SessionId 这个字 ...

  10. 号称精通Java的你,是否真的名副其实

    慎用精通 随着猎头行业的兴盛,一些应聘者往往可以从猎头那得到一些注意事项和过往经验.比如,在简历中切不可随意用上"精通"二字,尤其对于刚入职场的小伙伴. 因为,对于应聘者写上精通和 ...