优化hexo访问速度-将hexo部署到云主机VPS
写在开始
一开始将自己hexo
部署到github
,结果发现打开页面速度有点慢,然后又将其同时部署到coding
,实现双线路访问,国内解析记录到coding
,国外解析到github
,这样确实网站的速度能提高不少,但是国内访问因为是经过coding
,所以打开网站会有广告,这点不能容忍,于是想到自己的服务器也还空闲着,于是想到可以部署到自己的服务器上,折腾开始
部署总览
- 个人使用的环境
- 本地环境:
Windows10
(64位) - 云主机:阿里云ECS(
CentOS
7.2 64位)
- 本地环境:
- 整个部署过程
- 本地环境搭建(
git
,NodeJs
,hexo
..) - 云主机环境搭建(
git
,Nginx
) - 设置解析(
dnspod
) - 使用git自动化部署博客
- 本地环境搭建(
本地环境搭建
- 安装git
- 安装hexo(这些步骤省略)
- 生成ssh公钥(之前生成过的也就不用再执行了,比如部署在github上填写过rsa密钥就不需要再进行这一步了)
- 在命令行终端执行如下命令
ssh-keygen -t rsa -C "邮件地址"
- 生成的文件默认在
~/.ssh
目录中,看到有id_rsa
,id_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
,解析线路国外,这里的xxx
为hexo
部署在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
,这样即可解决此类问题
参考资料
优化hexo访问速度-将hexo部署到云主机VPS的更多相关文章
- 将Hexo博客部署到云主机
摘要: 在云主机上搭建一个git裸仓库,然后使用nginx作为网页服务器,就可以轻松将Hexo博客通过git部署到云主机上. 这是一个忧伤的故事 我的博客KiwenLau之前部署在Coding Pag ...
- mysql部署到云主机的笔记
写了个程序,需要把数据库部署到云主机上 MySQL基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限 为了安全,新添加一个用户来进行远程登录 登录MYSQL: ...
- js优化提升访问速度
一.给JS文件减肥. 有的人为了给网站增加炫目效果,往往会使用一些JS效果代码,这在上个世纪似乎还很流行,对于现在来说,最好在用户体验确实需要的情况下,使用这些东西.至于希望给自己的JS文件减肥的童鞋 ...
- ip速度检测与云主机|VPS的抉择:bandwagonhost digitalocean hostWind Vultr Linode
最近的梯子断了,网站又被注销了.又到了挑vps的时间了.其实, 这些东西,烦死人了.挺浪费生命的. 首先速度测试, MTR测试 网站速度测试 17CE. http://tool.chinaz.com/ ...
- rocketMq指定broker ip地址,适合解决云主机部署问题
在工作中遇到了一个这个问题,就是我们rocketmq是部署在云主机上的 但是我们的开发同事在自己的电脑连接rocketmq链接不上 报错显示Caused by: org.apache.rocket ...
- hexo访问优化之--------gulp压缩
hexo访问优化之--------gulp压缩 hexo生成的博客是静态html页面,当有很多静态资源时,加载速度会非常慢,且github服务器在国外,导致网页加载速度非常差 gulp压缩 gulp是 ...
- Hexo快速搭建静态博客并实现远程VPS自动部署
这篇文章将如何搭建hexo,以及如何通过git webhooks实现远程vps的自动部署 这篇文件适合的条件: 简单的用于个人博客.公司博客展示,hexo的定位是静态博客,要实现动态服务器的功能并不适 ...
- hexo搭建个人博客部署到个人服务器(git+nginx+hexo+next)
本次以阿里云服务器为例,详细讲解步骤: 一.本地环境[客户端] 这里以本地的win10电脑为例 1.下载node, 默认安装,安装完成之后,node -v看看版本号 node下载 2.安装node(傻 ...
- 基于Hexo搭建博客并部署到Github Pages
基于Hexo搭建博客并部署到Github Pages 之前在简书上写东西,觉得自己还是太浮躁.本来打算用Flask自己写一个,以为是微框架就比较简单,naive.HTML.CSS.JS等都要学啊,我几 ...
随机推荐
- Mac QQ 怎么清除聊天记录
在 Mac 电脑上登录 QQ 以后,点击顶部菜单中“应用”下的“消息管理器”选项,如图所示
- 进程cookie与硬盘cookie
内存cookie,是指没有设在cookie的Expires(过期时间)的属性硬盘cookie,是指在你设置了cookie的Expires(过期时间)属性 关于session的几点理解与测试 同一个浏览 ...
- .Net程序调试与追踪的一些方法
前言 作为一个.net开发工程师,不管是在写桌面程序.服务程序或web程序,在开发阶段,我们必须非常熟悉vs的动态调试技能,当然web程序可能还需要调试前端的脚本或样式,这不在本文的讨论范围.本文主要 ...
- 再谈AbstractQueuedSynchronizer:基于AbstractQueuedSynchronizer的并发类实现
公平模式ReentrantLock实现原理 前面的文章研究了AbstractQueuedSynchronizer的独占锁和共享锁,有了前两篇文章的基础,就可以乘胜追击,看一下基于AbstractQue ...
- 【TCP/IP详解 卷1:协议】 第18章TCP连接的建立与终止
img { border: 1px solid black } T C P是一个面向连接的协议.无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接. RST:复位连接,将连接重置,一般用在 ...
- ASP.NET Core Web API 最小化项目
ASP.NET Core中默认的ASP.NET Core 模板中有Web API 模板可以创建Web API项目. 有时,只需要创建一个API,不需要关心Razor,本地化或XML序列化.通过删除无用 ...
- Spring AOP的注解实现
适用场景: 记录接口方法的执行情况,记录相关状态到日志中. 注解类:LogMark.java package com.lichmama.spring.demo.annotation; import j ...
- if else 与switch case判断
基础数据类型(四类八种 ) 不能为null. 整数型 byte 取值范围2的8次方 short 取值范围2的16次方 int 取值范围2的32次方 一般用int long 取值范围2的64次方 浮点型 ...
- python基础(2):python的变量和常量
今天看看python的变量和常量:python3 C:\test.py 首先先说一下解释器执行Python的过程: 1. 启动python解释器(内存中) 2. 将C:\test.py内容从硬盘读入内 ...
- 关于shell脚本函数、数组、字符串截取、svn更新发布实例
#/bin/bash #功能:QA服根据模板创建区配置文件并提交到svn上. SOURCE_PATH=/data/source_code SVN_PATH=/code/psm #svn发布目录,要 ...