vps实现私人代码托管并用nginx部署hexo
个人博客
原本我的博客是通过github pages搭建的,但由于一些众所周知的原因,即使套上了CDN依旧是访问状态令人堪忧,经常会造成各种各样的问题,并且由于不存在服务器也不好进行进一步的管理,更不好完成公安备案。因此现在尝试在不影响博客更新部署体验的前提下,利用git搭建一个私人的代码托管平台,并自动化更新新提交的博客更新内容。
整体思路:
1 在云服务器上建立私人git服务器并配置本地仓库
2 在配置文件中设置push到云服务器上的私人仓库。
3 仓库中设置git钩子将已上传的静态资源拷贝到自定义目录下
4 通过nginx部署web服务,配置静态资源访问目录到自定义目录。
5 打包上传hexo静态文件并上传到服务器上的私人仓库
演示vps:CentOS 7
步骤一:建立私人git服务器
连接上vps,我这里就在/home下做演示。
$ yum install git # 如果没有安装过git的话需要进行这一步
$ mkdir /home/blog.git
$ cd blog.git
$ git init --bare # 完成初始化
到此已经完成git的初始化。我们打开本机的终端,测试一下是否能连接上。
$ git clone root@server_ip:/home/blog.git
root为vps的用户名
server_ip为vps的ip
/home/blog.git为初始化的git远程仓库

如果能连接上则继续,不行的话将本机的ssh公钥粘贴到服务器的.ssh目录中的authorized_keys文件里。
步骤二:设置hexo的配置文件
打开hexo根目录下的_config.xml_,修改下列字段
deploy:
type: git
repo: root@server_ip:/home/blog.git
branch: master
步骤三:设置git钩子
首先还是要安装Nginx,具体看我这篇博客:点我。
假设我们就把博客文件放到nginx的默认网站目录(/usr/share/nginx/html)
$ cd /home/blog.git
$ cd hooks
$ vi post-receive
键入以下代码
#!/bin/bash -l
GIT_REPO=/home/blog.git # git仓库地址
TMP_GIT_CLONE=/home/tmp/blog # 存放网页临时文件
PUBLIC_WWW=/usr/share/nginx/html # web服务的网页文件
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}
cp -rf ${TMP_GIT_CLONE} ${PUBLIC_WWW}
其中2~4行是需要修改的。并且临时目录/home/tmp需要自行创建。
然后需要给post-receive增加可执行权限
$ chmod +x /home/blog.git/hooks/post-receive
第四步:修改nginx配置文件
$ nginx -t # 查看配置文件所在目录
$ vi /etc/nginx/nginx.conf

最后重启nginx服务即可完成自动化部署
$ nginx -s reload
第五步:打包上传hexo静态文件
进入hexo目录打开终端
hexo cl
hexo g
hexo d
会提示让你输入ssh的密码,输入即可上传成功。

vps实现私人代码托管并用nginx部署hexo的更多相关文章
- 免费的私人代码托管(bitbucket) 和 常用git指令
转自 http://blog.csdn.net/nzing/article/details/24452475 今天想找个免费的私人代码托管平台,github,googlecode, SourceFor ...
- 【Copy攻城狮日志】docker搭建jenkins拉取svn代码打包vue项目部署到nginx
↑开局一张图,故事全靠编↑ 前言 打开搜索引擎输入『Copy攻城狮』,发现最新的一条记录已经是去年的4月,意味着我又有一年时间没有再总结成长了.习惯了“温水煮青蛙”的日子,无论是经验水平还是薪资收入, ...
- 探讨 Git 代码托管平台的若干问题
关于 Git 版本控制软件种类繁多,维基百科收录的最早的版本控制系统是 1972 年贝尔实验室开发的 Source Code Control System.1986 年 Concurrent Vers ...
- 探讨 Git 代码托管平台的若干问题 - 2019 版
关于 Git 版本控制软件种类繁多,维基百科收录的最早的版本控制系统是 1972 年贝尔实验室开发的 Source Code Control System.1986 年 Concurrent Vers ...
- 有手就行——Jenkins介绍 及 Gitlab代码托管服务器安装
Jenkins 介绍 及 Gitlab代码托管服务器安装 Gitlab安装 源码上传到Gitlab仓库 Jenkins介绍 Jenkins 是一款流行的开源持续集成(Continuous Integr ...
- 程序员必须知道的几个Git代码托管平台
上一篇博客中2015继续任性——不会Git命令,照样玩转Git我们简单的介绍了在VS2013中使用Git,和GitHub客户端的使用.那么使用Git到底有什么好处呢?最为明显的是支持Git代码托管的平 ...
- 10.10_魔兽账号,OSC代码托管演示,研究SQL别忘记了,git
(1)juedui8456juedui456chixin0769魔兽世界账号112288 (2)EasyXls.开源中国推出 PaaS@OSC 代码演示和运行平台.git.oschina.coding ...
- Coding.net代码托管平台建立WordPress
Coding.net这是一个国内新兴的代码托管平台,功能主要包括:代码托管.在线运行环境.监控代码质量,兼有一定的社交功能,在线运行环境支持Java.Ruby.Node.js.PHP.Python.G ...
- Coding.net代码托管空间申请与使用-安装并运行WordPress博客
参考: http://www.freehao123.com/coding-net/ Coding.net这是一个国内新兴的代码托管平台,功能主要包括:代码托管.在线运行环境.监控代码质量,兼有一定的社 ...
随机推荐
- Python实现Thrift Server
近期在项目中存在跨编程语言协作的需求,使用到了Thrift.本文将记录用python实现Thrift服务端的方法. 环境准备 根据自身实际情况下载对应的Thrift编译器,比如我在Windows系统上 ...
- Python - //和/的区别
/ 表示浮点数除法,返回浮点结果; // 表示整数除法,返回不大于结果的一个最大的整数 print("6 // 4 = " + str(6 // 4)) print("6 ...
- python3 爬虫五大模块之三:网页下载器
Python的爬虫框架主要可以分为以下五个部分: 爬虫调度器:用于各个模块之间的通信,可以理解为爬虫的入口与核心(main函数),爬虫的执行策略在此模块进行定义: URL管理器:负责URL的管理,包括 ...
- python生成时间序列(date_range)
介绍 自己写了一个用python内置模块实现的生成时间序列的函数 支持自动推断字符串到datetime的转换, 但对格式有一定要求, 其它格式可手动指定格式化方式, 格式化方式与python内置格式化 ...
- python3.x内置函数
函数 返回值类型 函数详情 abs(x) int|float 求绝对值,若是复数则返回复数的模 all(iterable) bool 若所有元素为真则返回True(非0,非空,非None) any(i ...
- call、apply、bind三者比较
var obj={a:1}; var foo={ getA:function(item1,item2){ return this.a+item1+item2 } } // apply绑定参数为数组,一 ...
- 如何在线安全清理mysql慢日志
部门mysql数据库的服务器磁盘空间快满了,查看了下磁盘的慢日志,发现占了50多个g,百度了资料后删除成功,现在和大家分享下我清理的过程,或许有更好的办法. 1.首先连接进入mysql,查看慢日志的状 ...
- Java环境搭建与HelloWprld—改变世界的第一步
1. JDK下载 访问oracle官网:http://www.oracle.com 在首页点击Downloads,进入oracle软件下载页. 在下载页面,点击Java. 选择Java (JDK) f ...
- 【优化技术专题】「温故而知新」基于Quartz系列的任务调度框架的动态化任务实现分析
不提XXLJOB或者其他的调度框架,就看我接触的第一个任务调度框架Quartz(温故而知新) Quartz的动态暂停 恢复 修改和删除任务 实现动态添加定时任务,先来看一下我们初步要实现的目标效果图, ...
- java线程day-02
1.什么是线程 * 线程是程序执行的一条路径, 一个进程中可以包含多条线程 * 多线程并发执行可以提高程序的效率, 可以同时完成多项工作 2.多线程的应用场景 * 红蜘蛛同时共享屏幕给多个电脑 * 迅 ...