记录:个人的建站历程
前言
之前其实有过搭建其他类型服务器的经历,但是,却从未想过搭建个人网站被背刺如此之多,但也在这时学到了新的知识了。
这篇文章也是写给希望搭建自己的静态个人网站的朋友的,希望对你有所帮助。
一.伊始
在QQ动态上有时会写一写东西,发一发图,不过QQ动态会有一些这样的缺陷:
1.虽说QQ动态没有严格的字数限制,(我也可以在别人的动态上看到一些小作文)但是,QQ空间的性质就决定了这个地方不适合写大段文字。(没什么人愿意看)
2.QQ空间天然的相对封闭不利于让一些写给特定的人的内容被看到。
3.不支持在文字中间插图(这将导致图片说明阅读起来较困难,且文字越多难度越大)
而在bilibili写专栏不能满足全部的个性化需求(比如不能自定义背景图)。并且吧,快高三的我也没时间使用与学习无关的电子设备。
于是我将目光看向了纸,笔与有道词典笔,利用有道云笔记的文字扫描把我的文字记录扫描成纯文本,再改写成.md文件,导出文件。通过支持markdown的服务端发布。
出于以上考虑,我选择建立个人专栏频道。
二.服务器与软件选择
服务器还是建议使用云服务器,毕竟不是所有人都能拿到固定公网IPv4地址。注意中国大陆地区建站需要ICP备案,各省的年龄规定有所不同。
域名根据自己的需要选择在什么服务商注册。如果服务器在中国大陆,只能在内地的服务商购买,以解决实名认证与ICP备案的问题。
至于服务端,开始的时候,朋友推荐我使用Wordpress完成搭建。
但是,Wordpress作为一个动态页面,官方推荐的最低配置为4GB的运行内存。
我在哪里找这种配置高,价格便宜的vps?因此,我婉拒了他的建议,并使用了Hexo作为服务端。
为了方便管理,我还选择了安装一个Linux面板。这个面板可以是宝塔,也可以是1panel。
除此之外,建议在服务器上安装Screen,以保证Hexo在后台留存。
三.折腾与间连不断的挫折
运行Hexo需要Node.js,还需要nginx反代理,如果想要使用https还需要SSL证书。结果,问题最大的竟然是Node.js的离谱依赖问题。。。
1.安装Node.js
错误的示范
开始的时候,我使用的是ubuntu的apt源安装Node.js。
1 | |
但是,当我在终端输入node -v后,输出了这样的版本号。
12.04
不愧是LTS版本,甚至都懒得更新软件源。。。
因此,请务必使用官方的方法安装。
正确的示范
注意:本方法来源于Node.js中文网
我在这里使用fnm安装Node.js v22.14.0 LTS,并使用Yarn。请在终端上输入:
1 | |
其实,npm在这个过程中已经安装完毕。使用Yarn是因为之后主题安装需要。
2.安装Hexo
由于我们在先前已经安装了Yarn,因此,接下来的指令主要为Yarn。使用npm安装的教程Hexo官方已经给出,点击这里访问
下面是安装Hexo本体的指令。
1 | |
在浏览器打开你的服务器的IP:4000,查看是否可以打开。
如果没有打开,那么看看服务器是否设置防火墙策略。比如Ubuntu,可以运行以下指令。
1 | |
成功打开后,按下Ctrl+C退出,设置Hexo。
3.设置Hexo与主题安装
设置Hexo主要聚焦于_config.yml。当你安装主题后,主题配置文件也是主要设置项。
本体设置
建议先学习官方的教程,这里只讲_config.yml的修改内容。
title: 网站标题,必填
subtitle: 网站副标题
description: 网站描述
author: 作者,必填
language: 语言,可填写zh-CN
url: 网站链接,填写你的网站域名。
theme: 主题。先安装好再做修改
一般修改以上内容便够了。如果期望在文章中添加本地图片,可启用这些参数。参见这里
post_asset_folder: true
marked:
prependRoot: true
postAsset: true
主题安装(报错警告!!)
这里大概就是坑最多的区域了,每次我遇上的问题属这里最多。
如你所见,本站使用的是kira-hexo主题。根据官方的教程,建议使用yarn安装。下面的命令在网站根目录运行。
1 | |
但是!无论你使用什么包管理器,都有一定概率出现一些警告。警告的有无与安装了什么主题无关。
这些警告不能忽视,重者甚至导致Hexo瘫痪!!!
因此,请一定仔细阅读这些内容,并将其复制出来以防万一。比如下面这个。
报错内容
warning hexo-theme-kira > hexo-tag-aplayer > babel-polyfill > core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
warning hexo-theme-kira > hexo-tag-aplayer > babel-polyfill > babel-runtime > core-js@2.6.12: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
warning hexo-theme-kira > hexo-tag-aplayer > hexo-fs > chokidar > fsevents@1.2.13: Upgrade to fsevents v2 to mitigate potential security issues
warning hexo-theme-kira > hexo-kira-toc > markdown-toc > gray-matter > coffee-script@1.12.7: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
warning hexo-theme-kira > hexo-tag-aplayer > hexo-util > highlight.js@8.9.1: Version no longer supported. Upgrade to @latest
warning hexo-theme-kira > hexo-tag-aplayer > hexo-log > hexo-bunyan@1.0.0: Please see https://github.com/hexojs/hexo-bunyan/issues/17
warning hexo-theme-kira > hexo-kira-toc > markdown-toc > remarkable > autolinker > gulp-header@1.8.12: Removed event-stream from gulp-header
warning hexo-theme-kira > hexo-tag-aplayer > hexo-fs > chokidar > readdirp > micromatch > snapdragon > source-map-resolve@0.5.3: See https://github.com/lydell/source-map-resolve#deprecated
warning hexo-theme-kira > hexo-kira-toc > markdown-toc > remarkable > autolinker > gulp-header > lodash.template@4.5.0: This package is deprecated. Use https://socket.dev/npm/package/eta instead.
warning hexo-theme-kira > hexo-tag-aplayer > hexo-fs > chokidar > readdirp > micromatch > snapdragon > source-map-resolve > resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
warning hexo-theme-kira > hexo-tag-aplayer > hexo-fs > chokidar > readdirp > micromatch > snapdragon > source-map-resolve > source-map-url@0.4.1: See https://github.com/lydell/source-map-url#deprecated
warning hexo-theme-kira > hexo-tag-aplayer > hexo-fs > chokidar > readdirp > micromatch > snapdragon > source-map-resolve > urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
warning hexo-theme-kira > hexo-tag-aplayer > hexo-log > hexo-bunyan > mv > rimraf@2.4.5: Rimraf versions prior to v4 are no longer supported
warning hexo-theme-kira > hexo-tag-aplayer > hexo-log > hexo-bunyan > mv > rimraf > glob@6.0.4: Glob versions prior to v9 are no longer supported
解决思路
注意带@符号的内容,这些是依赖包名称+版本号。比如glob@6.0.4,意思是依赖包名称为glob,版本号为6.0.4。
如果出现no longer supported,prior to v4,no longer maintained之类的说明,本依赖包版本一定过低!!!这时,建议直接把整个警告扔给翻译软件或者交由deepseek解释,看看哪些包有问题。否则。。。
这时,把这些依赖包名称单独复制,输入
1 | |
其中,把package_name改为需升级的依赖包包名。
完成后,先手动在Hexo根目录创建_config_kira.yml,再参考kira-hexo的编写模板填写kira配置。
这时,才可以运行hexo server,并访问hexo服务端口,看看是否正常。
如果成功显示,说明主题安装成功。
其他kira主题配置内容官方写的很详细了,就不讲了。
4.安装面板、反代理与SSL证书
这里相对简单,但是SSL证书需要先有一个域名(最好是一级域名)。
并且保证域名解析正常。
面板安装
这里以1Panel为例。
进入官网,点击在线安装,选择系统,复制指令后在终端运行。
中途会有一些选项,根据需要选择。完成后,会打印面板信息。请复制出来,有用。
完成后,根据复制的内容登录面板,记得打开面板的端口。
安装与配置OpenResty
登录面板后,在应用商店安装OpenResty,以同时进行反代理与SSL证书。
完成安装后,点击侧边栏的“网站-网站”,在这个界面中点击创建。
选择反向代理,分组默认,输入网站主域名,代理输入127.0.0.1:4000
申请证书
然后去申请证书,点击侧边栏的“网站-证书”。
这个界面里,先点击Acme账户,选择创建。填写你注册域名的邮箱,其余默认。
之后点击DNS账户,选择创建。名称随意,类型请选择你购买域名的服务商。
在这里以阿里云为例。
首先登录阿里云官网,设置RAM访问。
之后在身份管理-用户中创建用户。
登录名称填写记得住的,勾选永久AccessKey访问,完成后记录Access Key与Secret Key
之后给刚刚创建的RAM授予AliyunDNSFullAccess。
返回创建DNS账户界面,把记录的内容丢进去,点击确认。
之后点击申请证书,选择创建的网站、Acme账户与DNS账户,选择自动续签,填写阿里云域名解析预留的DNS服务器IP(不知道的自行ping DNS服务器域名)。
点击确认,等待完成签名。这个过程将耗时1分钟左右。如果使用默认DNS服务器,将会把时间拉长,取决于你在DNS服务商的设置。
拿到证书后,回到网站管理界面,点击配置-https。
勾选启用https,SSL选择已有证书,Acme账户与证书选择之前注册好的,其他默认。
点击保存,这时理论可以看到成功启用https。
工作基本完成!
四.其他
1.删掉默认文章
Hexo会在运行时创建一个文章。可以前往站点根目录下source/_posts把它删掉,不过建议先写好一篇文章再删。
2.创建“关于个人页”
这个在kira的教程中有,可以自己去写。
3.写作
直接以markdown的形式写,然后扔进站点根目录下的source/_post。
结语
这是我写的第一篇正经文章,写了半天了。
愿对你有帮助。Bye~!