Dropbox自动发布Hugo搭建的博客
Hugo的安装很简易,我们只是需要一个二进制文件,提供预构建好的二进制包括 Mac OS X, Linux, Windows等.,所以我们可以放很方便的安装,当然我们也可以使用 Go 编译器工具链源码编译 Hugo,比如在其他的操作系统如 DragonFly BSD, OpenBSD, Plan 9 和 Solaris 。 在 http://golang.org/doc/install/source 查看完整的操作系统和编译架构的支持列表。
Hugo安装
我个人的习惯是喜欢在本地搭建一个,然后后续再把文件上传,因为本地调试比较方便,因为我用的是 Windows,就像刚才提到的,我们只需要一个hugo.exe.
- 打开Windows的资源管理器
- 创建一个文件夹,例如 D:\Hugo
- 创建一个子文件夹 D:\Hugo\bin(放置hugo编译好的hugo.exe)
- 在bin的同级目录下创建 D:\Hugo\Sites(此目录用于放置网站文件)
- 下载文件文件并放置于D:\Hugo\bin
- 打开CMD命令行,输入
set PATH=%PATH%;D:\Hugo\bin
- 如果输入正确的话,我们查询下,hugo version就可以看到你当前安装的hugo的版本,进入D:\Hugo\Sites,然后输入
hugo new site name
(这里是你想创建的网站的名字,当然也可以是域名),此时你会在D:\Hugo\Sites目录下看到你刚才创建的名字的文件夹,因为hugo需要整个渲染才可以看到网站的效果,我们可以下载一个主题,我这边用的主题是casper,命令如下:cd themes git clone https://github.com/vjeantet/hugo-theme-casper casper
主题的具体设置我这边就不说了,hugo的主题网站里面有很多主题和他们具体使用的说明. - 创建一个页面:
hugo new about.md
如果是博客的文章的话,最好自己做一个归类,比如Post文件,那样的话我们创建页面可以用hugo new post/hello-world.md
执行完后,会在content/post目录自动生成一个MarkDown格式的hello-world.md文件,随便编辑一些文字,我们就可以执行hugo server -t casper
现在的版本已经可以自动监控文件,所以不需要添加watch参数. 说到这里,windows下简单创建的hugo博客已经完成,我们可以访问http://localhost:1313/ 来查看. centos我们可以安装.rpmwget https://github.com/spf13/hugo/releases/download/v0.16/hugo-0.16-2.el6.x86_64.rpm rpm -ivh hugo-0.16-2.el6.x86_64.rpm hugo version #查看hugo版本
Debian&Ubuntu我们可以安装.debwget https://github.com/spf13/hugo/releases/download/v0.16/hugo_0.16-1_amd64.deb dpkg -i hugo_0.16-1_amd64.deb hugo version #查看hugo版本
以上全是64位的版本..后续过程等同于windows.但是我们总不能在vps运行调试,所以我们需要把它生成html,用到的命令:hugo –theme=casper –baseUrl=“http://域名/”
过程中会生成一个pubilc的文件夹,我们只需要把网站的主目录指向该文件夹就可以.目录下的文件说明:archetypes\default.md #生成文章的模板 conten* #文章MD存放位置 data\authors\name.yml #作者介绍 static\images #网站图片存放 themes #主题目录
Dropbox同步
上面的过程涉及到每次更新我们需要连接SSH到VPS,然后上传.md文件,并重新生成一次public文件夹.其实倒不是很麻烦,但是毕竟每次这么做也挺恶心的,hugo国内用的人貌似不是很多,所以百度来,谷歌去的基本没看到什么教程来使用Dropbox同步,不过倒是看到一篇我以前用的hexo的同步,安装过程自己摸索了下,感谢用Hexo+Vps搭建博客并用Dropbox同步自动发布. 环境.Cenots6.4 x64
- Dropbox可能存在中文文件,所以我们先安装语言包
yum -y update yum groupinstall “Chinese Support” nano /etc/sysconfig/i18n 修改成 LANG=“zh_CN.utf8” SUPPORTED=“zh_CN.UTF-8:zh_CN:” SYSFONT=“latarcyrheb-sun16” #重新登陆一下就可以看到中文了
- 安装epel
yum repolist #查看是否有epel字样,如果没有我们如下安装 #导入epel的KEY sudo rpm –import http://download-i2.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6 #32位 sudo rpm -Uvh http://download-i2.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm #64位 sudo rpm -Uvh http://download-i2.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum install yum-priorities yum repolist #正确安装了就可以看到epel
- 安装Dropbox
#32位 cd ~ && wget -O - “https://www.dropbox.com/download?plat=lnx.x86" | tar xzf - 如果下载没反应则使用 cd ~ && wget -O - https://www.dropbox.com/download/?plat=lnx.x86 –no-check-certificate | tar xzf - #64位 cd ~ && wget -O - “https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf - 如果下载没反应则使用 cd ~ && wget -O - https://www.dropbox.com/download?plat=lnx.x86_64 –no-check-certificate | tar xzf - ~/.dropbox-dist/dropboxd #首次启动需要验证,我们只需要把链接复制到浏览器,然后登陆你准备同步hugo的dropbox账户 需要说明的是,如果后续想改账户的话,我们需要执行: remove dropbox rm -rvf ~/.dropbox ~/.dropbox-dist #把之前关联账户的信息全部删除 然后重新运行 ~/.dropbox-dist/dropboxd #关闭 我们可以选择同步过滤 killall dropbox #下载官方提供的 cli 来控制和管理Dropbox wget https://linux.dropbox.com/packages/dropbox.py #更改权限: chmod +x ./dropbox.py #查看帮助: ./dropbox.py help #启动Dropbox: ./dropbox.py start #加入到自启动: ./dropbox.py autostart #关闭局域网广播: ./dropbox.py lansync n #Cenots下我们需要自己加入开机启动 nano /etc/rc.d/rc.local #加入 /root/dropbox.py start #如果这里设置了没有开机启动,那么我们使用 nano /etc/profile #加入 /root/dropbox.py start #应用 source /etc/profile #添加过滤文件夹 根据自己的文件夹设置 ./dropbox.py exclude add ~/Dropbox/nyko/
- 安装nginx或者面板来解析域名和创建网站,这一步网上很多,我就不多说了。
- 安装rsync
yum install rsync #用来同步VPS里面的文件夹
- 安装incron
#安装 incrond yum install incron #加入开机自启动 service incrond start chkconfig incrond on #监控配置 #修改incrond的默认编辑器为nano echo ‘editor = nano’ >> /etc/incron.conf #编辑配置 incrontab -e #配置简介 /root/Dropbox/content/post IN_MOVE bash /root/runhugo.bash #这里的意思是 如果post文件夹里面的文件有添加或者删除就会出发后续指令.因为我们搭建好hugo后基本就是文章的添加或者删除,当然我们还可以用别的动作来监控,如下: IN_ACCESS,即文件被访问 IN_MODIFY,文件被 write IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等 IN_CLOSE_WRITE,可写文件被 close IN_CLOSE_NOWRITE,不可写文件被 close IN_OPEN,文件被 open IN_MOVED_FROM,文件被移走,如 mv IN_MOVED_TO,文件被移来,如 mv、cp IN_CREATE,创建新文件 IN_DELETE,文件被删除,如 rm IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己 IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己 IN_UNMOUNT,宿主文件系统被 umount IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO) #注:上面所说的文件也包括目录。 #当然这些监控的动作是可以同时的,例如: /root/Dropbox/content/post IN_MOVE,IN_MODIFY,IN_CREATE,IN_DELETE bash /root/runhugo.bash #runhugo.bash脚本 #!/usr/bin/env bash exec 200<$0 flock -n 200 || exit 1 sleep 10 cd /root/Dropbox && hugo –theme=casper –baseUrl=“http://域名/” && rsync -a –delete /root/Dropbox/public/ /home/wwwroot/web/ #说明 #/root/Dropbox 这个是hugo的根目录 #rsync 把public文件夹同步到网站的根目录 #/root/Dropbox/public/ hugo生成的网站目录 #/home/wwwroot/web/ 网站根目录
我自己已经测试成功啦,所以我们以后写完文章只要把.md文件放到Dropbox里面的content/post文件夹下,hugo就会自动生成新的网站了,包含了你的修改..
- 原文作者:NyKO
- 原文链接:https://nyko.me/2016/07/11/hugo-dropbox.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。