构建自己的博客

使用 Hugo 构建博客框架

安装 Hugo

Mac 端通过 Homebrew 安装。

brew install hugo

初始化博客

hugo new site my-blog

添加主题

此处以 Noteworthy 主题为例,更多主题可至 Hugo 官网

cd my-blog
git init
git submodule add https://github.com/kimcc/hugo-theme-noteworthy.git themes/noteworthy

修改配置文件

themes/noteworthy/exampleSite/config.toml 为模板修改即可。

创建新的文章

hugo new posts/my-first-post.md

运行预览

此处 -D 表示会包含标记为 draft: ture 的文章。

hugo server -D

生成静态文件

确保 content/posts/ 下至少有一篇文章的 draft 属性为false,或者使用 hugo -D,否则将导致 /posts404

创建 shell 脚本方便部署

#!/bin/sh

cd ~/Projects/WebstormProjects/my-blog
tar -czvf public.tar.gz public/
scp public.tar.gz root@$SERVER_IP:/usr/share/nginx/public.tar.gz
ssh root@$SERVER_IP "cd /usr/share/nginx && tar -xzvf public.tar.gz && rm -rf my-blog.backup && mv my-blog my-blog.backup && mv public my-blog"

生成静态文件

此时不希望草稿也被部署上去,因此没有加上-D

hugo

使用 Nginx 部署到服务器

上传静态文件

此处文件名以updat_blog.sh为例。

./update_blog.sh

配置 Nginx

创建新的 nginx 模块化配置。

cd /etc/nginx/conf.d
vim blog.conf

在 blog.conf 中添加如下配置。若不用 HTTPS,将 443 端口的配置信息除 ssl 相关配置外全部放 80 端口的配置下即可。

server {
	listen 443 ssl;
	server_name c-leon.top www.c-leon.top;
	access_log /var/log/nginx/blog.log;
	root /usr/share/nginx/my-blog/;

	ssl_certificate cert/3237001_c-leon.top.pem;
        ssl_certificate_key cert/3237001_c-leon.top.key;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}
server {
	listen 80;
	server_name c-leon.top www.c-leon.top;
	return 301 https://c-leon.top$request_uri;
}