背景

虽然我一直使用wordpress建站,可是长时间使用一样东西难免会感到无聊。正好前几天咕咕鸽(https://gugu.ge)发布了有关Halo 2.0的视频,于是我决定试试看,看看性能、外观和功能如何。

安装

安装Halo 2.0很简单,只需要按照官方文档使用Docker就行了,下面是我的docker-compose实例:

version: "3"

services:
  halo:
    image: halohub/halo:2.3.1
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - /data/halo2:/root/.halo2
    ports:
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=password
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=https://blog.yuri.ro/
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=admin
  halodb:
    image: mysql:8.0.31
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    command: 
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - /data/mysql:/var/lib/mysql
      - /data/mysqlBackup:/data/mysqlBackup
    ports:
      - "3306:3306"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=halo
networks:
  halo_network:

我是在本地服务器的虚拟机上安装的,因此为了方便外网访问,我使用了DDNS+Cloudflare,使得全球的IPv4和IPv6用户都能访问(我这儿有公网IPv6地址而且不封80、443).

接着,我就发现了一件非常神奇的事情,如果wordpress站点经过这么一折腾,在外面打开起码得花10-15秒。而这个Halo站点,居然只花了5s不到就打开了...这说明至少在默认情况下,Halo的性能要优于Wordpress。

插件与主题

Halo 2.0和之前的1.X相比,算是一个大版本升级,所以在选择主题和插件时需要注意兼容性。这里有一份列表,列出了大部分兼容Halo 2.0的插件和主题。

除去默认自带的插件外,我安装了以下插件:

Halo的插件和主题比Wordpress少很多,但精致化程度比Wordpress浩如烟海的插件和主题高多了。

除去默认自带的主题,我只安装了一个Sakura。

安装了这些插件和主题之后,网站的打开速度慢了不少,但是就算在晚高峰也能在10s内打开。

数据导入

我使用了上面的wordpress数据导入插件来导入https://blog.ete.moe里的文章。即在wordpress里导出数据,再在Halo后台导入即可。不过这个插件目前还不是很完善,我遇到了几个问题:

  1. 只能在https环境下导入,http环境则不行;
  2. 不能导入评论;
  3. 导入之后,文章默认禁止评论和生成摘要,感觉一篇篇改很麻烦,希望以后在导入时对于这两项加个开关。

希望以后能够做的更好吧。

图片,我就不将就地使用了图床(https://sm.ms),毕竟经过了这么长的路径,我的网站打开就已经够慢了,如果再加上图片,那效果....或许1分钟都不能打开。正巧我这次只是做个实验,于是就把图片放进了图床里,感觉速度确实还行。

总结

halo 2.0和目前的wordpress 6.1相比,优势是:

  1. 性能表现更好;
  2. 界面简洁直观;
  3. 主题、插件平均质量较高;
  4. 安装、配置方便。

不足之处是:

  1. 插件、主题数量较少,可能难以满足部分人的需求;
  2. 后台功能没有Wordpress丰富,缺少一些细节选项(比如自定义URL);
  3. 默认编辑器尚有改进空间。

等到我安定下来,或许会把这个网站也换到Halo上,然后部署在家庭服务器上。看来我得好好考虑一下图片的处理了。

最后更新于 2023-03-13