博客搭建过程(一)
1 博客概念明确及方案选型
博客是什么,这里就不赘述了。
如果你的博客,只是自己记录自己看,类似于日记,其实很简单,用文本文档写就可以了。
如果你的博客,想放到网页上去给别人看,那么至少需要把你写的文本,变成网页。这里就涉及到一个转换的问题,很多博客平台,例如新浪博客,网易Loft,或者是微信公众号,都提供了这样的功能,写作者只需要提供文字,其他工作平台会自动完成。
但是如果你想要在自己的平台,发布自己的博客文章,就稍微复杂一点。
搭建一个博客自然不可能从0到1去全部完成,至少不可能自己写HTML的,那么就需要用到别人的博客框架,所以要先确定博客框架的选择。博客框架有非常多,不同博客的框架,所产生的博客类型是不一样的。
大体来分的话,博客的类型可以分为静态博客和动态博客,那么先要搞清楚这两种类型的意思和区别。
2 静态博客和动态博客
做一个表格比较一下
静态博客 | 动态博客 | |
---|---|---|
机制 | 一般是本地编写好 Markdown 文件,然后通过相关的程序渲染好 HTML 后直接将 HTML 发布到服务器上 | 一个运行在服务器上的博客程序,一般提供一个在线的编辑器供使用者在线编写 |
编辑 | 博客的编写和编辑都在本地进行 | 一般有一个比较友好的后台,完全可以通过 Web 的操作来进行文章编辑、保存草稿等 |
文件储存 | 文件保存在本地 | 文件保存在数据库 |
部署 | 需要在本地安装静态博客生成工具 | 需要有自己的服务器 |
部署 | 任何一个可以托管静态页面的地方都可以托管我们的博客 | 对于使用的博客程序需要有比较多的理解,例如Nginx等 |
资源占用 | 少 | 多 |
发布更新 | 没有管理后台,较繁琐 | 有管理后台,较简单 |
访问速度 | 没有数据库,快 | 有数据库,慢(对机器而言,人类感知没有很大差别) |
安全性 | 没有后台,更加安全 | 有后台和数据库,存在被攻击的可能性 |
定制化 | 大部分基于模板,定制化程度低 | 可定制化程度非常高 |
复杂功能 | 大部分基于模板,复杂功能难以实现,例如搜索、评论等 | 功能强大,插件众多,自带搜索、评论,可实现各种功能,甚至能当 CMS |
其实两类博客,在我看来,最大的区别就是最后两部分,定制化和复杂功能。
如果你的博客像我的一样,仅仅只是写文章发布文章,静态博客更具优势。如果你有很多个性化需求,或者需要一些复杂功能,例如会员制度、付费阅读等,恐怕动态博客才能实现你的需求。
3 博客框架选型
搞清楚了静态博客和动态博客之后,首要要解决的是博客框架的选择问题。
这个GitHub对静态博客生成框架做了一个整理。
用热门的即可,简单搜索一下:
- WordPress(动态):名气最大,使用PHP。PHP不懂,MySQL我熟,服务器也有,但是这个博客搞的话就要长期搞,怕之后没钱续费。而且存MySQL自由度比较高,随便怎么修改。
- Typecho(动态):不了解。
- Ghost(动态):刚发布了4.0大版本更新,似乎比较高级。
- Halo(动态):国人用Java写的,比较新。
- Hugo(静态):性能好,文章生成强于Hexo。
- Hexo(静态):插件很多。
- Jekyll(静态):迁移部署方便,专为博客而生。
结合各种资料,最后决定静态和动态都试一下,而且可以当作备份。
动态博客我的选择是Halo+MySQL
。Wordpress
的缺点很多文章都有提及,主要有逐渐CMS化,不仅仅是博客,其次是臃肿速度慢等等。有一点是虽然Wordpress
教程肯定很多,但是它是基于PHP
,而PHP
我是一窍不通。Halo
专为博客而生,而且用Java
基于SpringBoot
,都是我熟悉的东西,缺点可能是主题比较少,但是我对主题不是太在意。
同时再尝试一下4.0版本的Ghost,看了这篇文章有点心动。
静态博客用Hugo+GitHub Pages
。搜了一些资料,发现Hexo
转去Hugo
的比较多,其他转向Hexo
几乎没有,另外就是文章肯定会原来越多,既然开始了就要坚持下去,Hexo
的速度是个问题。另一个原因是Hugo
基于Go
语言,Hexo
基于Node.js
,然而我对Node.js
是没有多少好感的,之前安装踩了很多坑。Go
语言倒是有兴趣了解一下。
4 动态博客搭建
4.1 Docker搭建(主动放弃)
- 基于阿里云最低端的服务器。
- 全程使用
Docker
安装。 - 使用
Docker
之后,数据库地址写127.0.0.1
会出错,写公网IP地址可以,没有尝试内网IP地址。 - 使用
MySQL8
,部署Ghost
时,选择MySQL
数据库,会报ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
错误,原因出在Node.js mysql客户端不支持认证协议,又是Node Js
,次次和我过不去,要改数据库密码,回到原始的方式。 - 进入
Docker
容器之后,如果要修改文件,需要安装Vim
编辑器。在使用docker exec -it <> bin
命令进入时,还是docker exec -i <> bin
命令,也就是进入Docker
容器之后,命令行最前端无用户信息时,编辑器会出问题,改成有用户信息的/bin/bash
命令之后就好了。 - 重置系统。
- 重置系统之后,
root
用户密码也要重新设置,不然无法使用密码登录。 Debian
系统可使用apt
安装软件,但是要先更新,类似于CentOS
的yum
。- 先安装
Docker
,然后Java
,然后MySQL
。
Docker
比较耗内存,而且又一些操作比较麻烦,决定重新不使用Docker
,直接安装博客,尝试了Alibaba Linux
,占用内存很小,虽然最后还是选择了Debian
,一共需要安装两个博客系统,JRE
,MySQL
,Nginx
这些东西。4.2 非Docker搭建(被动放弃)
4.2.1 阿里云连接问题
- 又遇坑,阿里云远程连不上,网页上的远程也连不上,不是
token error
,就是22 port fail
,后来发现,重置系统那里,重置为当前系统,有一定概率出问题。选下面的重置为其他镜像,不容易出问题。
4.2.2 阿里云系统问题
- 另一个问题,选择
Debian9.9
,给装的系统竟然是Debian Jessie
,也就是Debian8
,选10 Buster
没有这种问题,很离奇。
4.2.3 MySQL安装问题
-
安装
MySQL
,这居然也遇坑,我真是太菜了。因为要安装新版的MariaDB
,而不想装旧版的MySQL
,不过10.6
的MariaDB
,2天后就出来了,这会装的是10.5
的版本,看网站似乎加了不少新功能,还是比较想装10.6
的版本。 -
不过后来又了解到
PostgreSQL
,据说比MariaDB
强,只能之后再去研究了,在现在比较菜的情况下,还是尽量兼容MySQL
。
4.2.4 MariaDB安装问题
MariaDB
安装比较麻烦。
-
先
apt update
。 -
然后
apt upgrade
。 -
然后
apt-get install software-properties-common
。 -
然后
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
如果提示缺了啥软件就安装那个软件,然后再执行。 -
然后
sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.5/ubuntu bionic main'
上面的网站里的版本是10.3,这里可以改。 -
然后
apt-get install mariadb-server
。 -
然后进数据库,先改下账户密码。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
-
这个时候应该是只绑定了127.0.0.1,要取消绑定,不然不能远程连接。
-
这里比较坑,配置文件和MySQL不一样,路径是
/etc/mysql/mariadb.conf.d
,在这里面有一个50-server.cnf
,这才是真正的配置文件。 -
进去把
# bind-address = 127.0.0.1
这一行注释掉,然后重新启动一下,然后通过ss -tlnp
命令看下端口是否开放,有其他连不上的问题可以参考这篇文章。 -
然后给
root
用户远程连接的权限GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
。
这样就可以远程连接了。
4.2.5 Ghost安装问题
-
apt-get
安装的Nginx
的配置文件目录:/etc/nginx/nginx.conf
。 -
根据官方教程一步步执行即可。
-
注意不要选
ghost install local
,本地安装,会出现莫名其妙的问题。
4.2.6 Ghost连接问题
- 启动之后还是连不上的,不知道为什么。
- 要去配置文件里,把
host
的地址,改成内网IP
,127.0.0.1
和外网IP
都不行。 - 然后可以访问了。
4.2.7 Halo安装问题
Halo
搭建比较简单,可能是因为Java
这块比较熟悉,唯一一个要注意的地方是工作目录是.halo
,之前看成halo
搞半天也是无语。
4.2.8 备案页脚添加问题
- 备案通过要在页面最下面加备案号,
Ghost
的话,就是去你用的主题文件夹,里面有个default.hbs
,没有html
,在这里面加。
|
|
- 网站工信部备案通过之后,还要在公安备案,结果在公安备案更麻烦,居然让我下载
Flash
,直接破防,决定撤销网站的备案,不弄基于服务器的博客了。反正也没钱续费。