文档章节

Hugo部署历程

哔u哔u
 哔u哔u
发布于 2018/08/29 20:39
字数 1392
阅读 157
收藏 0

Hugo部署历程

网站:链接

文章已迁移:链接

情景描述

使用 WordPress 写博客有一个学期了,博客没写几篇,Nginx 和 WordPress 倒是折腾了不少。也是嘛,如果不是折腾了一个学期的 Nginx,这次学校网络更新架构,要给城市热点的服务分配域名,然后那个端口问题还真搞不定了。

不过,WordPress 的写作体验是真的不太好。不仅没有 MarkDown 写着舒服,每天还要担心有没有人进行网络渗透。WordPress 的速度的确不算快,我上了缓存插件,直接生成静态页面,然后还配置了 tmpfs。

现在,我决定迁移到 Hugo,纯静态网站,你来入侵啊。Hugo 生成的网站文件,我还给放到了 tmpfs里,起飞吧,哔u哔u。

安装相关软件

首先是安装 Hugo,这个建议不要使用包管理器直接安装,建议到 GitHub 下载编译好的二进制安装包,实在不行,自己编译也好。

可以到 https://github.com/gohugoio/hugo/releases 下载。

以 DEB 系的 32位 Linux 为例,首先下载 deb 包:

wget https://github.com/gohugoio/hugo/releases/download/v0.47.1/hugo_0.47.1_Linux-32bit.deb

然后进行安装

sudo dpkg -i hugo_0.47.1_Linux-32bit.deb

然后安装 Git、Nginx,这个直接安装就好

sudo apt install -y git nginx

配置 MathJax

我所使用的 Hugo 主题已经支持了 MathJax,不过是从 CDN 那里加载的 MathJax 文件。而我想让所有的文件都在我自己的服务器上,于是我就魔改了一下下主题。这里对其他 Hugo 用户应该也有些参考价值。

首先是下载 MathJax,不要直接复制 CDN 里的链接,这是无效的。

wget https://github.com/mathjax/MathJax/archive/master.zip

解压这个压缩包,然后将这个压缩包里的内容移动到你的 Hugo 网站的目录下,最好为这些文件创建一个叫做 MathJax 的目录。我的放在了 static/lib/MathJax 下面,最终生成网站后,应该在 /lib/MathJax 下面。

编辑 local.js 文件,这个文件应该在 MathJax/config/local 里。

MathJax.Ajax.loadComplete("/lib/MathJax/config/local/local.js");

这里配置为 MathJax 在你的网站的位置。

然后你要想办法在你的生成的静态 Html里加上如下几行:

<script type="text/javascript">
    window.MathJax = {
      tex2jax: {
            inlineMath: [['$','$'], ['\\(','\\)']],
            displayMath: [['$$','$$'], ["\\[","\\]"]],
            processEscapes: true
        },
      TeX: {equationNumbers: {autoNumber: "AMS"}},
      showProcessingMessages: true,
      messageStyle: 'none'
    };
  </script>
  <script type="text/javascript" async src="/lib/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML,/lib/MathJax/config/local/local.js"></script>

注意最后那个引用 MathJax 的链接,建议你查查 MathJax 的文档。

以下是一个测试例子:开源中国不支持 MathJax?

$$ \sum_1^2 $$

\sum_1^2

使用 Git 发布文章

首先配置一下服务器端的 Git。我的做法是直接上传本地的 Git 配置文件。毕竟这个配置用了两年了。但是,仅仅这样还是不够的。

在服务器上找个目录放你的网站,然后:

git init
git add -A
git commit -m "迁移博客到 Hugo"

这些都是常规操作了。不过这个时候,本地的 push 操作是失败的。没错,之所以说使用本地的配置不够是因为,本地的配置少了一些。

[core]
  autocrlf = input
[receive]
  denyCurrentBranch = ignore

第一个配置是转换 Linux 的换行符与 Windows 的换行符,否则就会一直提示,很烦的。第二个配置是关键。进行 push 时,如果远程库是非 bare 库,本地 push 会被禁止。所以,加上这个配置,本地的 push 会同步过去,但是远程的文件内容不会更改。

其实,到了这里就结束了。

之后,本地的更改直接 push 就好了,然后 ssh 到服务器,直接检出、合并、构建就完事了。

这里提一下具体操作

git log
git status
git checkout dca8b26 .
hugo

首先查看我们提交的历史,以及版本号。然后我们看看此时仓库的状态。可以看到我们提交成功了,并且已经到了暂存区里,但是工作区还未同步。所以只要从暂存区同步出来就好。所以使用 checkout 将 dca8b26 的改动应用到工作区,也就是那个 . 了。

使用 Nginx 部署网站

一个静态网站,有啥好配置的。直接贴出来。

server {
    listen 0.0.0.0:443 ssl http2;
    listen [::]:443 ssl http2;
    ssl_certificate /website/nginx/sslcert/www.pem;
    ssl_certificate_key /website/nginx/sslcert/www.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

    server_name www.huanggefan.cn;
    root /website/www.git/public;
    index index.html;

    access_log /website/log/www-access.log main;
    error_log /website/log/www-error.log;

    location ~* \.(jpg|jpeg|png|icon|bmp|gif|tty|js|css)$ {
        access_log off;
        log_not_found off;
    }

    error_page  404 403 500 502 503 504  /404.html;
}

使用内存进行加速

Hugo 默认会把构建的静态网站文件放到 public 目录下,我觉得这样挺好的,也没有更改路径。Ubuntu有一个特性,就是 /dev/shm 其实是个目录,而且,是在内存里的一个目录,这个目录有内存的一半大。所以,我就直接在这里创建一个目录,通过软链接,链接到 public。这样,public 其实就在内存里了。Hugo 也就是把静态网站文件放到了内存里了。

阿里云 ECS 的磁盘性能不是很好,不过内存性能很好,这样算是进行了最大化的性能优化。

© 著作权归作者所有

哔u哔u
粉丝 2
博文 9
码字总数 5916
作品 0
阜阳
程序员
私信 提问
Hugo -最好用的静态网站生成器

Hugo是由Go语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。 快速开始 安装Hugo 1. 二进制安装(推荐:简单、快速) 到 Hugo Releases 下载对应的操作系统版本的Hugo二进制文...

callmelanmao
09/29
0
0
用 Hugo 30 分钟搭建静态博客

了解 Hugo 如何使构建网站变得有趣。 你是不是强烈地想搭建博客来将自己对软件框架等的探索学习成果分享呢?你是不是面对缺乏指导文档而一团糟的项目就有一种想去改变它的冲动呢?或者换个角...

16%
2018/09/25
0
0
Go 编写的静态网站生成器 - Hugo

Hugo 是 Go 编写的静态网站生成器,速度快,易用,可配置。Hugo 有一个内容和模板目录,把他们渲染到完全的 HTML 网站。 Hugo 依赖于 Markdown 文件,元数据字体 。用户可以从任意的目录中运...

匿名
2015/09/02
15.4K
3
Hugo 0.53 发布,Go 编写的静态网站生成器

Hugo 0.53 已发布,开发团队称其为迄今为止最快的版本,站点构建基准测试显示速度提高了约10%。 开发团队补充道,“具体提升多少要取决于站点的详细情况,但想要说明的是我们不会变慢。持续...

王练
2018/12/27
1K
0
平滑迁移 Octopress 到 Hugo

博客同步更新: https://keelii.github.io/2016/10/25/migrating-from-octopress-to-hugo-smoothly/ 原由 自从新博客建立以来一直用 Octopress 这个博客框架来搭建静态文章页面。漂亮的默认主...

keelii
2016/10/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

elasticsearch查询20公里以内的数据并按距离升序排序data es写法

NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();BoolQueryBuilder boolQueryBuilder=new BoolQueryBuilder();//这暂wei加入业务查询条件 queryBuilder.withQue......

为何不可1995
27分钟前
5
0
superset在线pip部署

1、安装依赖sudo yum install gcc libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel报错:没有可用软件包 python-pip。没有可用软件包 ......

阿伦哥-
32分钟前
4
0
photoshop简单使用

PS基本操作与图片格式 photoshop工具 组成 菜单项 工具栏 辅助面板 图片格式 jpg png gif 注: psd photoshop CC链接: https://pan.baidu.com/s/1LVa5R_btSjczLBwskCZidQ 提取码:sc3v 快捷...

studywin
34分钟前
4
0
springboot 整合pageHelper

今天跟大家聊聊springboot整合pageHelp,首先pageHelper是一个缓存式分页,分页步骤如下: 1 pom文件添加依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelp......

gaofei123
34分钟前
7
0
《DNS攻击防范科普系列1》—你的DNS服务器真的安全么?

DNS服务器,即域名服务器,它作为域名和IP地址之间的桥梁,在互联网访问中,起到至关重要的作用。每一个互联网上的域名,背后都至少有一个对应的DNS。对于一个企业来说,如果你的DNS服务器因...

大涛学弟
35分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部