5.7 KiB
+++ title = "乱七八糟:个人博客搭建" date = 2023-10-12
[taxonomies] tags = ["乱七八糟"] +++
前言 个人博客的搭建具有许多的方案可以选择,本文介绍如何快速部署一个博客,并将其发布到公网。
前情回顾
在互联网冲浪的过程中,我们常常看到许多独立站点,他们往往是个人博客,有各种各样的主题样式;这些站点见证了互联网的发展历史。从最初的手工编写HTML页面,到后来的内容管理系统(CMS)如WordPress的兴起,再到如今流行的静态网站生成器(SSG),如Hugo,Hexo,Zola等等。
个人博客的定义是什么?私以为是域名+站点+原创内容
三要素组成。当然,最重要的原创内容往往被忽视...
- 域名可以在Dynadot等平台购买,也可以申请如
eu.org
或us.kg
等免费域名,目的是为了好记; - 站点可以在自己的服务器上使用动态的
WordPress
或者Halo
来一键创建,也可以使用静态框架
部署在PAAS平台上;
因此,整体成本应该是非常低的。
使用Halo快速搭建博客
- 首先你需要有一台自己的云服务器,建议在1核1G以上配置,并安装Debian系统;
- 随后我们安装1panel,执行以下命令一键安装:
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
1panel依赖于docker,如果实现没有安装docker,脚本会帮你安装。
-
安装过程中选择好端口,随后即可使用
http:<ip>:<port>:<安全入口>
进入登录界面,并使用默认随机生成的密码进入面板。 -
进入之后我们可以看到里面有应用商店,在其中安装
OpenResty
与Halo
与mysql
,安装完毕后打开外部访问地址http://ip:8090
,即可进入halo的后台,在其中写入文章并发布。
但我们不能使用不安全的HTTP以及IP来访问博客;因此,我们需要一个域名指向我们的博客,例如本文的blog.dich.bid
;可以在在Dynadot等平台购买域名,并托管到Cloudflare。
-
随后可以在1panel的
网站
中创建一个反向代理,代理地址即为http://ip:8090,主域名为刚刚注册的域名前加blog或其他,如blog.xxx.com
-
创建完成后我们还需要配置TLS证书,在网站-HTTPS中添加证书,可以选择自签名证书正式或者通过Acme申请免费的
Let's Encrypt
证书。 -
配置完成后在Cloudflare的DNS解析界面创建一个A记录,将你的
blog.xxx.com解析到你的服务器的IP
; -
大功告成!现在你应该可以通过HTTPS域名访问自己的博客!
使用Hugo框架构建博客
首先明确你需要的架构,一般有两种选择:
- 使用现有的架构,包括Hugo,zola,astro等等;
- 或者从头写一个框架,需要HTML/CSS/JS等知识;
可以在这个网站上面查看常见的框架与主题的显示效果
- 选择好你的框架与主题后(这里以hugo为例子),随后安装hugo以及对应的依赖:
- windows:
# 打开以管理员模式运行的PowerShell,输入命令安装 Hugo Extended:
winget install Hugo.Hugo.Extended
- Arch linux
paru -S hugo
- 检查版本:
hugo version
- 创建新的 Hugo 站点:选择一个文件夹打开命令行,执行:
hugo new site my-terminal-blog
该命令会在my-terminal-blog
文件夹下生成hugo的基础目录。
- 安装主题,这里以terminal主题为例:
cd my-terminal-blog
git clone https://github.com/panr/hugo-theme-terminal.git themes/terminal
将主题代码拉入 themes/terminal 目录,后续可使用 git pull 获取更新。
- 写入文章:使用 Hugo 提供的命令创建新文章:
hugo new posts/hello-world.md
打开生成的 content/posts/hello-world.md,在 front matter 中填入 title、date、tags 等元数据,然后撰写 Markdown 正文, Markdown 编辑器参考前文。
- 本地测试:在项目根目录运行:
hugo server
然后在浏览器访问 http://localhost:1313 即可实时预览并查看更新效果。
定制
你想要的显示效果?
- 风格,包括命令行风格,极简风格,MD3风格等等;
- 布局,是响应式还是传统布局?
你需要那些功能?
- 黑暗/白天模式切换;
- 高斯模糊?动态取色?
- PPT般的动效?
- 访问人数和运行天数统计?
- Tag分类和时间排序?
- 搜索功能和RSS?
需要处理哪些外部依赖?
- 域名和paas平台?
- 图床还是直接嵌入图片?
- 是否需要自动编译?
- 是否需要多平台发布?
- 是否需要加密特定文章?
以上的功能和需求是否对SEO和界面相应时间造成影响?
🔗
Done.