Hugo部署历程

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 的磁盘性能不是很好,不过内存性能很好,这样算是进行了最大化的性能优化。

转载于:https://my.oschina.net/huanggefan/blog/1936214

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值