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后台管理系统的验证码显示不出来。 (注意:以下配图是已修复错误的截图,未修复之前验证码无法正常显示)

排错步骤如下:

  • 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架构

3.团队分析与分工

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

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

  • jpress-core,jpress的核心模块框架

  • module-article:文章模块代码

  • module-page:页面模块代码

  • module-product:产品模块代码

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

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

【JPress】简介、Linux部署与项目分析相关推荐

  1. GFS分布式文件系统简介及部署——让存储变得更高级

    GFS分布式文件系统简介及部署 一.GFS概述 1.文件系统 ①.文件系统组成 ②.文件系统的作用 ③.专业术语 二.GFS特点 三.GFS工作原理 四.GFS卷 1.GFS卷类型 2.三大基本卷的特 ...

  2. Asible简介及部署

    Asible简介及部署 1.Ansible基本概述 Ansible 能做什么 Ansible 软件特点 Ansible基础架构 2.Ansible服务安装 1)安装ansible(不用手动启动服务) ...

  3. Linux部署IPFS(分布式存储系统)私有网络

    Linux部署IPFS(分布式存储系统)私有网络 简介: 星际文件系统是一个旨在创建持久且分布式存储和共享文件的网络传输协议.它是一种内容可寻址的对等超媒体分发协议.在IPFS网络中的节点将构成一个分 ...

  4. Prometheus简介与部署

    Prometheus简介与部署 1. Prometheus简介 2. Prometheus原理 3. Prometheus的特点 4. 什么是样本 5. Prometheus优缺点: 6. Prome ...

  5. [新]Linux部署DM DEM

    [新]Linux部署DM DEM 简介:提供一个通过 WEB 界面来监控,管理,维护 DM 数据库的集中式管 理平台,可以从任何可以访问 web 应用的位置通过 DEM 来对 DM 数 据库进行各种管 ...

  6. linux运行dock打包的镜像,Linux部署之Docker方式部署项目

    Linux部署之Docker方式部署项目 1. 使用Docker对前端vue项目进行部署 1.1 环境准备 服务器或者虚拟机上先安装好Nginx和相关配置 docker pull nginx 拉去最新 ...

  7. Linux 部署ftp报530 错误解决方案

    Linux 部署ftp报530 错误解决方案 参考文章: (1)Linux 部署ftp报530 错误解决方案 (2)https://www.cnblogs.com/austinspark-jessyl ...

  8. Linux部署Node.js应用

    Linux部署Node.js应用 文章目录 Linux部署Node.js应用 一.背景描述 二.环境准备 三.添加守护进程 四.参考链接 一.背景描述 将基于Node.js开发的应用部署到Linux系 ...

  9. pycharm创建django项目linux部署

    大家好,我是烤鸭: pytho部署web项目比java简单一点,虽然springboot内置了tomcat. 环境: pycharm专业版python3.6 1.安装python python下载: ...

最新文章

  1. 想要,但很难得到就随缘
  2. Remove PyPhantomJS. · f6c29b1 · ariya/phantomjs
  3. AndroidMainifest标签说明2——lt;activitygt;
  4. [转]SVN + CruiseControl.NET + NANT 自动编译提交的项目最小DEMO
  5. 1.6.3 Uploading Data with Solr Cell using Apache Tika
  6. boost::log::attribute_value_set用法的测试程序
  7. 用户界面设计的一些方法和基本原则
  8. html运用以及工具
  9. 我也来推荐一个强大的flash应用
  10. mysql服务器cpu资源占用满
  11. 硬纪元AI峰会前瞻:线下大数据驱动下的新零售,目标是精准营销
  12. SecureCrt 利用公匙登录L机取消密码登录。
  13. 浏览器插件 如何方便查看md文件内容 markdown
  14. 【MFC】CTabSheet类之再改造
  15. 【图解相对论系列1】怎样直观地理解张量(Tensor)?爱因斯坦广义相对论的数学基础...
  16. 带哨兵的冒泡排序_冒泡排序(Bubble Sort)
  17. 键盘 Key Code对照表
  18. 2022年科技期刊最新影响因子在线查询
  19. 安装和配置Apache + mongrel cluster
  20. 通过学习制作长微博工具来了解水印的制作,及EditText中的内容在图片中换行显示

热门文章

  1. 通俗易懂的告诉你内卷juǎn化是什么东西?
  2. 解决mysql表输入中文出现问号问题
  3. Endnote使用——与WPS关联
  4. 体系结构学习15-cache coherence
  5. 28家中国域名商保有量统计:爱名网第四 突破百万大关
  6. 激光切割机切割时有毛刺怎么办
  7. JAVA程序距离过年还有好多天_距离2019年春节还有多少天 2019年春节时什么时候...
  8. CSS隐藏元素的几种方式以及display、visibility、opacity的区别
  9. NFC智能家电解决方案
  10. Arduino各开发板