目录

博客搭建过程(一)

​

摘要
这是博客搭建过程记录文章的第一篇。

博客搭建过程_2


信息
由于我的懒惰,拖延,以及效率低下,博客搭建从4月份搞到了8月份才基本完成,现在记录一下这个过程。

1 博客概念明确及方案选型

博客是什么,这里就不赘述了。


如果你的博客,只是自己记录自己看,类似于日记,其实很简单,用文本文档写就可以了。


如果你的博客,想放到网页上去给别人看,那么至少需要把你写的文本,变成网页。这里就涉及到一个转换的问题,很多博客平台,例如新浪博客,网易Loft,或者是微信公众号,都提供了这样的功能,写作者只需要提供文字,其他工作平台会自动完成。


但是如果你想要在自己的平台,发布自己的博客文章,就稍微复杂一点。


搭建一个博客自然不可能从0到1去全部完成,至少不可能自己写HTML的,那么就需要用到别人的博客框架,所以要先确定博客框架的选择。博客框架有非常多,不同博客的框架,所产生的博客类型是不一样的。


大体来分的话,博客的类型可以分为静态博客和动态博客,那么先要搞清楚这两种类型的意思和区别。


2 静态博客和动态博客

做一个表格比较一下

      静态博客 动态博客
机制 一般是本地编写好 Markdown 文件,然后通过相关的程序渲染好 HTML 后直接将 HTML 发布到服务器上 一个运行在服务器上的博客程序,一般提供一个在线的编辑器供使用者在线编写
编辑 博客的编写和编辑都在本地进行 一般有一个比较友好的后台,完全可以通过 Web 的操作来进行文章编辑、保存草稿等
文件储存 文件保存在本地 文件保存在数据库
部署 需要在本地安装静态博客生成工具 需要有自己的服务器
部署 任何一个可以托管静态页面的地方都可以托管我们的博客 对于使用的博客程序需要有比较多的理解,例如Nginx等
资源占用 少 多
发布更新 没有管理后台,较繁琐 有管理后台,较简单
访问速度 没有数据库,快 有数据库,慢(对机器而言,人类感知没有很大差别)
安全性 没有后台,更加安全 有后台和数据库,存在被攻击的可能性
定制化 大部分基于模板,定制化程度低 可定制化程度非常高
复杂功能 大部分基于模板,复杂功能难以实现,例如搜索、评论等 功能强大,插件众多,自带搜索、评论,可实现各种功能,甚至能当 CMS

其实两类博客,在我看来,最大的区别就是最后两部分,定制化和复杂功能。


如果你的博客像我的一样,仅仅只是写文章发布文章,静态博客更具优势。如果你有很多个性化需求,或者需要一些复杂功能,例如会员制度、付费阅读等,恐怕动态博客才能实现你的需求。


​

3 博客框架选型

搞清楚了静态博客和动态博客之后,首要要解决的是博客框架的选择问题。

信息

这个GitHub对静态博客生成框架做了一个整理。

https://github.com/pinceladasdaweb/Static-Site-Generators


用热门的即可,简单搜索一下:

  1. WordPress(动态):名气最大,使用PHP。PHP不懂,MySQL我熟,服务器也有,但是这个博客搞的话就要长期搞,怕之后没钱续费。而且存MySQL自由度比较高,随便怎么修改。
  2. Typecho(动态):不了解。
  3. Ghost(动态):刚发布了4.0大版本更新,似乎比较高级。
  4. Halo(动态):国人用Java写的,比较新。
  5. Hugo(静态):性能好,文章生成强于Hexo。
  6. Hexo(静态):插件很多。
  7. 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搭建(主动放弃)

  1. 基于阿里云最低端的服务器。
  2. 全程使用Docker安装。
  3. 使用Docker之后,数据库地址写127.0.0.1会出错,写公网IP地址可以,没有尝试内网IP地址。
  4. 使用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,次次和我过不去,要改数据库密码,回到原始的方式。
  5. 进入Docker容器之后,如果要修改文件,需要安装Vim编辑器。在使用 docker exec -it <> bin 命令进入时,还是docker exec -i <> bin命令,也就是进入Docker容器之后,命令行最前端无用户信息时,编辑器会出问题,改成有用户信息的/bin/bash命令之后就好了。
  6. 重置系统。
  7. 重置系统之后,root用户密码也要重新设置,不然无法使用密码登录。
  8. Debian系统可使用apt安装软件,但是要先更新,类似于CentOS的yum。
  9. 先安装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安装比较麻烦。

  1. 先 apt update。

  2. 然后 apt upgrade。

  3. 然后 apt-get install software-properties-common。

  4. 然后 curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash如果提示缺了啥软件就安装那个软件,然后再执行。

  5. 然后 sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.5/ubuntu bionic main' 上面的网站里的版本是10.3,这里可以改。

  6. 然后apt-get install mariadb-server。

  7. 然后进数据库,先改下账户密码。 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

  8. 这个时候应该是只绑定了127.0.0.1,要取消绑定,不然不能远程连接。

  9. 这里比较坑,配置文件和MySQL不一样,路径是/etc/mysql/mariadb.conf.d,在这里面有一个50-server.cnf,这才是真正的配置文件。

  10. 进去把# bind-address = 127.0.0.1这一行注释掉,然后重新启动一下,然后通过ss -tlnp命令看下端口是否开放,有其他连不上的问题可以参考这篇文章。

    MySQL 远程访问失败的原因及解决方案

  11. 然后给root用户远程连接的权限GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';。

这样就可以远程连接了。


4.2.5 Ghost安装问题

  1. apt-get 安装的Nginx的配置文件目录:/etc/nginx/nginx.conf。

  2. 根据官方教程一步步执行即可。

    How to install Ghost on Ubuntu

  3. 注意不要选ghost install local,本地安装,会出现莫名其妙的问题。


4.2.6 Ghost连接问题

  1. 启动之后还是连不上的,不知道为什么。
  2. 要去配置文件里,把host的地址,改成内网IP,127.0.0.1和外网IP都不行。
  3. 然后可以访问了。

4.2.7 Halo安装问题

  • Halo搭建比较简单,可能是因为Java这块比较熟悉,唯一一个要注意的地方是工作目录是.halo,之前看成halo搞半天也是无语。

4.2.8 备案页脚添加问题

  • 备案通过要在页面最下面加备案号,Ghost的话,就是去你用的主题文件夹,里面有个default.hbs,没有html,在这里面加。

1
<p style="text-align: center;font-size: 10px; color: #868686"><a href="http://beian.miit.gov.cn/" style="color: #868686">备案号-1</a></p>

  • 网站工信部备案通过之后,还要在公安备案,结果在公安备案更麻烦,居然让我下载Flash,直接破防,决定撤销网站的备案,不弄基于服务器的博客了。反正也没钱续费。

4.2.9 域名购买注意事项

  • 虽然万网买域名非常便宜,但是最好还是在NameSilo买,懂得都懂,搞过一次就知道了。