目录

博客搭建过程(一)

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

博客搭建过程_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+MySQLWordpress的缺点很多文章都有提及,主要有逐渐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安装软件,但是要先更新,类似于CentOSyum
  9. 先安装Docker,然后Java,然后MySQL

失败
没钱,内存小,用Docker比较耗内存,而且又一些操作比较麻烦,决定重新不使用Docker,直接安装博客,尝试了Alibaba Linux,占用内存很小,虽然最后还是选择了Debian,一共需要安装两个博客系统,JREMySQLNginx这些东西。

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.6MariaDB,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的地址,改成内网IP127.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买,懂得都懂,搞过一次就知道了。