常见问题汇总


这里汇集了大家经常遇到的问题。如果这里没有找到对应的问题,可以进行反馈。
反馈地址:https://blog.zrlog.com/feedback.html

IE 浏览器要求

  • 建议使用 IE 10 及以上版本的浏览器。

Java 版本

版本 最低 Java 版本
2.x 及以前版本 >= 8
3.x 及以后版本 >= 21

数据库要求

目前使用的数据库为 MySQL,对版本没有太高的要求,使用 5.6 及以上版本即可,较老的版本已经不再支持。

运行环境需要多大的内存

程序本身占用的内存并不大,主要与使用的 Web Server 有关。推荐使用 512 MB 内存(包含 MySQL 服务)即可。

例如,程序在 BAE 提供的 256 MB 内存环境中也可以正常运行。不过目前国内云服务厂商一般都已经不再提供 512 MB 内存的云服务器。

程序编码

按照国际惯例,程序和数据库均使用 UTF-8 编码。

后台管理首页会显示程序的编码信息。如果不是 UTF-8 编码,可以通过配置环境变量的方式统一编码:

JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8

什么是环境变量?

环境变量是操作系统和各种程序约定使用的一种常见配置方式。最常见的例子就是 PATH 环境变量,它可以让系统更加方便地找到某个程序。

例如,在终端中只需要输入 java,而不需要输入 /usr/jvm/xx/bin/java 这样的完整路径。

如何配置这个环境变量?

Unix

Unix 系统中可以配置环境变量的位置较多,通常通过命令行即可完成。

# 编辑 /etc/profile、~/.bash_profile 或 ~/.bashrc
# 在文件末尾添加一行
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8

保存后,执行与修改文件相对应的命令。例如修改的是 ~/.bash_profile:

source ~/.bash_profile

然后在命令行中执行以下命令:

echo $JAVA_TOOL_OPTIONS

如果能够看到对应的配置内容,就表示配置成功了。

Windows

Windows 通常通过图形界面配置环境变量,操作步骤与配置 JAVA_HOME 基本相同。

注意:配置完成后,需要重新启动 JVM 才会生效。

开发工具的选择

由于项目使用 Maven 构建,因此在 Eclipse 或 MyEclipse 中直接以 Maven 项目的方式导入即可。

使用 IDEA 导入项目时,可以选中 pom.xml 文件,单击鼠标右键,然后选择 Add as Maven Project。

如何在开发环境中运行

  • 通过内嵌的 Tomcat 启动:找到 com.zrlog.web.Application,运行其中的 main() 方法。
  • 通过 Maven 命令启动,不依赖任何 IDE:
    • Windows:运行 bin\mvn-tomcat-run.cmd
    • Unix:运行 sh bin/mvn-tomcat-run.sh
  • 也可以按照其他 Web 项目的方式配置 Server,但不建议这样做,因为使用前面两种方式出问题的可能性更小。

应该选择 JDK 还是 JRE

没有强制要求,不过还是建议直接使用 JDK,方便追踪和排查问题。

插件的实现方式

可以参考这篇文章:如何编写一个 ZrLog 插件

应该选择官方提供的 WAR 包,还是自己打包

如果不介意每次手动打包,可以在修改代码后自行构建并上传到服务器。

注意:需要自行添加 build.properties 文件。

如果现有功能已经满足需求,直接使用官方提供的 .war 包也是一个不错的选择。

修改代码后也可以提交 Pull Request,这样可以尽量避免后续升级时出现代码冲突。

通过 git clone 或下载 zrlog-master.zip 后能否直接使用

为了方便开发者第一时间看到运行效果,src/main/webapp/WEB-INF/db.properties 中提供了一个默认可用的数据库地址。

如果需要使用自己的数据库,请先删除以下文件:

src/main/webapp/WEB-INF/install.lock

然后重新访问:

http://localhost:8080/zrlog

完成安装流程后,就可以使用自己的数据库了。

ZIP 包和源码有什么区别

通常,对外提供的 ZIP 包是由相对稳定的版本打包生成的,主要用于初始安装或版本更新。

ZIP 包中的 lib/common-x.x.x.jar 内含一个 build.properties 文件,这个文件是在打包过程中添加的,主要用于区分不同的运行环境。

Git 仓库中没有这个文件,因此通过 Git 获取的源码默认只适用于开发环境。

如果需要自行构建 ZIP 包,请使用以下命令:

sh bin/build-final-package.sh

build.properties 文件内容示例:

version=1.6.4
runMode=preview
buildId=18e66cd
buildTime=2017-03-29 22:15:45+08:00

在哪里下载最新的 ZIP 包

最新的稳定版本会发布在这里:

https://dl.zrlog.com/release/zrlog.zip

Nginx 代理后找不到静态文件,或者进入管理界面后提示“会话过期,请重新登录”

需要将代理前的 Host 传递给 Tomcat 容器,否则默认可能会被转换为 127.0.0.1:8080 这类地址。

请在 Nginx 对应的 server 配置中,或者在 http 模块中添加:

proxy_set_header Host $host;

开启 HTTPS

如果程序运行在 Nginx 或 Apache 等反向代理后面,需要额外向 Web 容器传递一个 HTTP Header。

例如,使用 Nginx 时需要添加:

proxy_set_header X-Forwarded-Proto $scheme;

迁移数据

备份

需要先导出原数据库的表结构和数据。可以尝试使用备份插件导出备份文件,然后在新环境中创建对应的数据库、账号和密码。

还原

使用 MySQL 自带的命令行工具即可还原:

mysql -uzrlog_dev -p < backup.sql

修改配置

数据库配置信息保存在以下文件中:

WEB-INF/db.properties

修改 jdbcUrl 中的主机地址。如果数据库的其他信息也发生了变化,需要一并修改。修改完成后,重启 Web Server 即可。

忘记管理后台的登录账户或密码

ZrLog 是一个单用户博客内容管理系统。为了保持系统简单,管理后台登录所需的用户名和密码保存在数据库的 user 表中。

出于安全方面的考虑,系统没有提供找回密码的功能入口,因此需要通过操作数据库来找回或重置登录信息。

忘记登录用户名

执行以下 SQL:

select * from user;

查询结果中的 userName 就是登录用户名。

忘记登录密码

ZrLog 使用 MD5 摘要算法存储密码,可以通过以下 SQL 重置密码:

update user set password = md5("mustMotifyYa!!!") where userName = "admin";

执行后,用户名 admin 对应的登录密码将被重置为:

mustMotifyYa!!!

注意:这里的 admin 是默认用户名。如果已经修改过用户名,需要将其替换为实际使用的用户名。

使用开发工具打开项目后,web/src/main/webapp 中没有 admin 目录,或者访问 admin 时提示页面不存在

问题原因

从 ZrLog 2.2 开始,管理后台不再使用传统的服务端页面渲染技术(如 JSP、FreeMarker),而是改用了 React + Ant Design 技术路线。

解决方法

Unix

ZrLog 为 Unix 系统提供了快速编译脚本,可以将 admin-web/src/frontend/ 目录中的前端代码打包为浏览器可以使用的 JavaScript 文件。

执行以下命令:

sh bin/compile-admin-web.sh

编译结果会保存到:

admin-web/src/main/resources

然后执行以下命令启动 ZrLog:

sh bin/mvn-run.sh

整个过程不需要依赖 IDE。

Windows

需要先安装 Git Bash 等类 Unix 命令行工具,然后按照 Unix 环境下的步骤进行处理。

MySQL 安装在 Docker 中,输入正确的数据库信息后仍然无法完成安装

  • 请检查是否使用了 root 账号作为安装数据库的账号。建议不要使用 root,而是为 ZrLog 创建独立的数据库账号和密码,并将准备给 ZrLog 使用的数据库授权给该账号。
  • 如果使用的是 CentOS 或 Windows,可以尝试暂时关闭系统防火墙,检查是否是防火墙限制了