不再依赖平台:如何打造自己专属的博客网站?

23

这两天我在读居伊·德波的《景观社会》,在网络社会崛起与“媒体过剩”的时代,借助于日益发达的大众传媒工具,景观的作用与功能也日益强化。从轻松的娱乐废料到严肃文学,从日常生活到人的感情和欲望,我们的生活几乎每一个角落都被景观所笼罩和取代,景观的无孔不入让每个个体仿佛置身于一场永不停歇的表演之中。

在现代资本主义框架下的这场永无止境的拜物嘉年华中,“自我表达”便显得尤为宝贵。通过搭建一个属于自己的博客,我们可以选择脱离主流的内容展示平台,跳出景观对内容的定义,去建立一片属于自己的空间,不为流量和点赞左右,纯粹记录自己独立的思考与见解。一个独立的博客可以帮助我们避免信息的过度压缩与表面化处理,构建一个较为纯净的精神空间,让自己的思考和表达不至于被瞬时的注意力洪流所淹没,多输出一点严肃内容总归是对个人,乃至对这个社会是大有裨益的

在搭建个人博客的过程中,有多种方式可以选择。不同方法的难易程度和所需技术背景各不相同,还请各位读者根据自己的需求和技术水平来决定。以下我将按照从易到难的顺序,介绍几种搭建个人博客的方式。

一、使用现成的博客管理框架

  • 在本节,你需要一台可以访问外部网络的VPS(如果你没有/没有足够的资金去购买一台2C2G以上的VPS,可以直接看第二节Vercel)
  • 本节适合有一定技术基础得用户,可以选择搭建在自己的VPS上,使用WordPress或Halo等开源博客程序。这类程序提供丰富的主题和插件,便于高度定制,也让博客具备较强的拓展性。你可以通过选择不同的主题来调整外观,安装插件来添加更多功能,比如SEO优化、数据分析、订阅等。虽然安装和配置过程稍显复杂,但有丰富的文档和社区支持,适合希望有更高自主权的用户。

(一)、WordPress

1.1Panel部署

你可以先安装1Panel(宝塔也可),然后直接通过GUI部署WordPress

# 1Panel安装(CentOS)

curl -sSL <https://resource.fit2cloud.com/1panel/package/quick_start.sh> -o quick_start.sh && sh quick_start.sh

# Ubuntu

curl -sSL <https://resource.fit2cloud.com/1panel/package/quick_start.sh> -o quick_start.sh && sudo bash quick_start.sh

# Debian

curl -sSL <https://resource.fit2cloud.com/1panel/package/quick_start.sh> -o quick_start.sh && bash quick_start.sh

安装成功后,控制台会打印面板访问信息,可通过浏览器访问 1Panel:

http://目标服务器 IP 地址:目标端口/安全入口

  • 如果使用的是云服务器,请至安全组开放目标端口。
  • ssh 登录 1Panel 服务器后,执行 1pctl user-info 命令可获取安全入口(entrance)

从浏览器里访问1Panel之后就可以在应用商店里一键部署WordPress了,容器跑起来之后记得在网站里添加自己的域名,绑定证书并开启反向代理以便通过域名直接访问你的博客。

2.Docker部署(以CentOS为例)(不推荐,因为麻烦)

实际上用1Panel部署WordPress也是在用Docker部署,只是1Panel可以很方便的帮你管理各种镜像和网站。

更新系统软件包:sudo yum update -y

安装依赖:sudo yum install -y yum-utils

添加官方仓库:

sudo yum-config-manager --add-repo <https://download.docker.com/linux/centos/docker-ce.repo>

安装Docker:

sudo yum install -y docker-ce docker-ce-cli [containerd.io](<http://containerd.io/>)

启动并启用 Docker 服务:

sudo systemctl start docker
sudo systemctl enable docker

验证Docker安装:docker --version

Docker拉取WordPress镜像:docker pull wordpress

启动WordPress容器:

docker run --name some-wordpress --network some-network -d wordpress

以下环境变量也可用于配置您的 WordPress 实例(通过自定义 wp-config.php实现⁠):

  • e WORDPRESS_DB_HOST=...
  • e WORDPRESS_DB_USER=...
  • e WORDPRESS_DB_PASSWORD=...
  • e WORDPRESS_DB_NAME=...
  • e WORDPRESS_TABLE_PREFIX=...
  • e WORDPRESS_AUTH_KEY=..., e WORDPRESS_SECURE_AUTH_KEY=... , e WORDPRESS_LOGGED_IN_KEY=... , e WORDPRESS_NONCE_KEY=..., e WORDPRESS_AUTH_SALT=..., e WORDPRESS_SECURE_AUTH_SALT=... , e WORDPRESS_LOGGED_IN_SALT=... , e WORDPRESS_NONCE_SALT=...(默认为唯一的随机 SHA1 值,但仅在提供其他环境变量配置时)
  • e WORDPRESS_DEBUG=1(默认禁用,非空值将启用 WP_DEBUGwp-config.php中)
  • e WORDPRESS_CONFIG_EXTRA=...(默认为空,该值将由 eval()函数在 wp-config.php中进行评估。此变量特别适用于应用此镜像默认未提供的额外配置值,例如 WP_ALLOW_MULTISITE;更多详情请参见docker-library/wordpress#142⁠

WORDPRESS_DB_NAME 需要在给定的 MySQL 服务器上已经存在;它不会由 wordpress 容器创建。

如果您希望能够在主机上访问实例而无需使用容器的 IP 地址,可以使用标准端口映射:

$ docker run --name some-wordpress -p 8080:80 -d wordpress

然后,通过浏览器访问 http://localhost:8080http://host-ip:8080

(二)、Halo(博主目前正在用的)

这部分我懒得写了,俺寻思直接把官方文档链接贴到下面然后读者自己去看肯定比我自己花20分钟照虎画猫憋出一段远不如官方详细完整的博客片段对于读者来说要有价值得多。

1Panel部署(推荐,因为Halo和1Panel均属飞致云团队出品)

部署方法同WordPress,在应用商店中部署后在网站中绑定域名并设置反代即可

详细部署文档(官方)

Docker部署

详细部署文档(官方)

(三)、Typecho(轻量级,适合低性能VPS)

这篇博客已经介绍的非常完整了,参照这位博主的部署过程即可,不过他用的是宝塔,大致流程可以直接迁移平替到1Panel。

才不是我懒得写

二、Vercel(适合白嫖党)

那有人就要问了:我现在没有VPS也不打算买/我懒得维护服务器/我希望直接将Notion数据库里的文章作为博文发表……

那恭喜你,你适合用Vercel!

Vercel 是一个提供静态网站和无服务器功能的平台,主打免费便捷、快速部署的优势。它特别适合不想花费太多精力管理服务器的用户,互联网上也有一大批开源项目支持非常方便的直接用Vercel部署你的个人博客,只需要点点点和填点关键信息。 对于预算有限的个人用户来说,Vercel 几乎可以说是“白嫖”搭建个人博客的理想选择。

(一)、NotionNext

1.项目介绍

NotionNext是一个使用NextJS + Notion API 实现的,部署在 Vercel 上的静态博客系统。为Notion和所有创作者设计。

项目开源地址

项目文档地址

NotionNext的愿景是帮助非技术人员的小白,最低成本、最快速地搭建自己的网站,帮助您将自己的产品与故事高效地传达给世界。 NotionNext可以将Notion笔记实时渲染成静态博客站点,无需购买服务器,只要一个笔记即可搭建完全属于您自己的独立网站,让您与全世界建立连接!

这个框架都有哪些特点?

  • 依托于Notion笔记:借助NotionNext建站,所有文章的编写发布都只在Notion笔记中完成,Notion本身作为次世代笔记软件的强大毋庸置疑。
  • 安装简单方便:安装一路点点点即可,需要修改的地方少,不需要独立VPS
  • 多主题快捷切换:多达数十款主题风格任您挑选,其中有适合做技术文档的Gitbook主题,也有适合做导航站点的Nav主题,还有适合做产品落地页官网的Landing主题与Starter主题,以及适合做相册的Plog主题

2.部署过程

部署站点实际上只需要三步,分别是:

  • 复制作者的Notion模板
  • 复制作者的 Github 库代码
  • 在Vercel中一键部署

(1)创建Notion页面

首先,你需要注册并登录Notion账号(邮箱注册和直接用谷歌账号注册均可),然后打开这个链接,进入到作者的Notion模板页面,在右上角点击Duplicate复制模板,如图所示。点击后会将这个博客数据模板复制到你的笔记空间中。

image.png

(2)获取页面ID(此部分直接援引项目文档)

  • 在Notion笔记中:在页面右上角的菜单栏中,依次点击SharePublishedShare To Web,开启页面分享,获取共享链接
    • 如下图所示,点击右上角 **Share ,**在弹出窗口中点击 PublishShare to web (点击展开截图)

image.png

  • 复制页面ID:页面ID在您的共享链接中、域名中间的一串32位字母与数字

image.png

👇以下我的共享链接,其中标红加粗下划线部分才是页面ID!要忽略?v=后面的英文数字。 https://www.notion.so/tanghh/02ab3b8678004aa69e9e415905ef32a5?v=b7eb215720224ca5827bfaa5ef82cf2d 👇我的页面ID 是 02ab3b8678004aa69e9e415905ef32a5

⚠️新版的notion中,页面ID的格式可能会有一点不同,例如会把页面的标题也带上: https://www.notion.so/tanghh/Today-261c36d269a74acd97682af86d7bc9a0?pvs=4 但不变的是,页面url中的那串连续32为的字符串就是id。

(3)Fork 对应项目的GitHub库

请先注册并登陆Github账号,然后点击此链接,可一键**Fork(复刻)**项目。

image.png

(4)使用Vercel进行部署

首先,你需要注册一个Vercel账号,然后点击此链接来创建导入一个新项目。

image.png

在代码仓库列表中选择导入NotionNext不要急着直接点Deploy,要先把环境变量填好

点击Environment Variables(环境变量),并添加一个属性名称为**NOTION_PAGE_ID值为步骤一获取的页面ID**。

例如,我的页面ID是:02ab3b8678004aa69e9e415905ef32a5,则配置如下:

image.png

填写后要点击右边的 Add按钮确认添加

然后点击 Deploy按钮,静候两分钟等待部署。

image.png

(5)完成!

在部署完成页面,点击 Go to Dashboard访问控制台

image.png

在控制台右上角的 Visit按钮访问您的站点。或在DOMAINS中获取您的网站地址

image.png

博客后期的美化还请参见本部分开头的项目文档

(二)、Mix Space

MixSpace采用前后端分离模式,后端部署在VPS上,前端采用Vercel进行渲染,因为安装比较麻烦所以我懒得写了。

文档链接

虽然但是,Mix Space的博客主题真的很好看

三、静态博客

静态博客里,最常见的选择采用Hexo框架,然后部署到Github Pages了。

当然,你也可以采用Hexo框架然后部署到Vercel

但静态博客一般都需要你将git库克隆到本地,在本地完成博文编写之后push到远程库中,我觉得这种方式不太优雅,因此懒得详细去介绍部署过程了。

Hexo文档