2021SC@SDUSC


目录

一、简介

二、部署

1.安装环境

2.部署步骤

3.解决错误

三、项目分析

1.目录结构

2.jpress架构

3.团队分析与分工


一、简介

JPress 是一个使用 Java 开发的、开源免费的建站神器,灵感来源于 WordPress,目前已经有超过 10w+ 的网站使用 JPress 搭建,其中包括多个政府机构,200+上市公司,中科院、红十字会等。


二、部署

1.安装环境

  • 阿里云学生机
  • 操作系统Ubuntu 20.04.2 LTS x86_64(Py3.7.9)
  • Java环境,JDK 1.8
  • Apache Maven 3.8.2
  • MySQL 5.7.34
  • apache-tomcat-9.0.53

2.部署步骤

  1. 首先保证以上环境都配置好,可以正常运行。
  2. 下载jpress官方的war包,将其放置在tomcat的webapps下,并命名为jpress。可直接放war包,tomcat会帮你解压。
  3. 在服务器上启动tomcat,此时访问 ip:8080 ,访问成功,说明tomcat启动成功。 
  4. 继续访问 ip:8080/jpress ,访问成功。 

3.解决错误

但是访问 ip:8080/jpress/admin/login 的时候,出现错误——jpress后台管理系统的验证码显示不出来。 (注意:以下配图是已修复错误的截图,未修复之前验证码无法正常显示)

JPress使用教程 jp press_tomcat

排错步骤如下:

  • F12,捉个包,发现有一个 captcha包 是500错误,报错信息为 java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11Graphi 这应该是初始化Java的一个图形界面包失败,导致二维码显示不出来。
  • 修改步骤如下:
  • 打开tomcat的配置文件 ./bin/catalina.sh,修改里面的数据。
  • 找到如下的代码 "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \ -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \ -Djava.security.manager \ -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \ -Dcatalina.base="$CATALINA_BASE" \ -Dcatalina.home="$CATALINA_HOME" \ -Djava.io.tmpdir="$CATALINA_TMPDIR" \
  • 在如上代码后面添加以下 -Djava.awt.headless=true \ 意思大概是手动配置初始化这个图形界面包
  • 重新启动tomcat。
  • 打开 ip:8080/jpress/admin/login ,查看配置是否生效。  
  • 项目二维码正常显示,成功!捉包时也没有500错误了。于是顺利登录jpress后台管理界面,开始jpress之旅。

三、项目分析

1.目录结构

目录

备注

codegen

代码生成器,开发的时候用与生成maven模块代码,运行时用不到该模块

doc

文档存放目录

jpress-commons

工具类和公用代码

jpress-core

JPress的核心代码

jpress-model

JPress非业务实体类

jpress-service

JPress非业务 service 接口定义

jpress-service-provider

JPress非业务 service 接口实现

jpress-template

JPress的html模板

jpress-web

JPress非业务的web处理代码,包含了 Controller、指令等

module-article

文章模块代码

module-page

页面模块代码

starter

undertow启动模块,开发的时候可以运行里面的 Starter.java 的main方法,编译的时候会 jpress 可执行程序

starter-tomcat

tomcat 启动模块,编译的时候回生成 war 包,用于放在tomcat部署

2.jpress架构


JPress使用教程 jp press_tomcat_02


3.团队分析与分工

由于 JPress 是基于 JFinal 和 Jboot 开发的,,在分析 JPress 之前,有必要了解下 JFinal 和 Jboot,特别是 JFinal。Jboot对Jfinal进行了封装,并且增加了很多,通用默认组件配置:数据库、代码生成与封装、微信调用、配置类、定时任务、服务容器等。

团队在Jpress目录总结了以下四个主要核心模块:

  • jpress-core,jpress的核心模块框架
  • module-article:文章模块代码
  • module-page:页面模块代码
  • module-product:产品模块代码

以上四个模块,团队一人负责主要分析一个模块。而这四个模块之外的代码,不是不重要,而是那些东西估计大家都会涉及到(比如common包,估计每个人都要分析一遍),所以剩下的部分就是大家可以一起分析的代码。

除了以上的代码分工,队伍还规定每周进行一次每周线下分享、总结,在团队内部分享自己的成果,让其他模块的同学能了解其他模块,从而更好地认识整个系统。