Skip to content
This repository has been archived by the owner on Jun 8, 2020. It is now read-only.

aimkiray/starry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

starry 食用指南

作为一个轻量级小巧的博客系统,本项目采用 Spring + Spring MVC + MyBatis 构建。

Q: SSM 轻量级?吾阅诗书甚少,汝勿欺我。

A: 捂脸 (*/ω\*),找工作需要嘛!所谓轻量是指对 Java 程序员而言。PS. 隔壁 sgroup 第一个项目没用任何框架,初学者可以拿去参考。

Q: 那你这个意义何在?

A: 可以魔改,有详细食用说明。本项目的优点之一就是代码超规范(见名知意,参考 alibaba 的那本手册),注释超详细(覆盖率超过 90%),RESTful 风格 API,二次开发也超轻松。

PS. 不懂 java 也没关系,可以直接跳到食用说明,理论上没问题!(有问题发 issue)

本项目基于 maven 的标准目录结构,使用 maven 构建;框架是 Spring,MVC 框架是 Spring MVC,数据库是 MariaDB,持久化是 MyBatis,权限管理是自制的,如下所示:

TODO 正在用 Spring Boot 写一个图床工具,搞定之后再来考虑是否改 Spring Boot。

src
└─main
    ├─java
    │  └─com
    │      └─sinitial
    │          ├─aop
    │          ├─controller
    │          ├─dao
    │          ├─domain
    │          ├─interception
    │          ├─service
    │          │  └─Implement
    │          └─utils
    ├─notebook
    ├─resources
    │  ├─mybatis
    │  │  ├─mariadb
    │  │  └─oracle
    │  └─spring
    ├─test
    └─webapp

本项目采用 MVC 架构,前端部分同时使用 JSP 和 Freemarker,目录结构如下:

TODO 后续考虑将 JSP 全部改成 Freemarker,以配合 Spring Boot 和 RESTful API 实现前后端分离。

webapp
├─META-INF
├─resources
│  ├─bootstrap-3.0
│  │  ├─css
│  │  ├─extension
│  │  │  ├─bootbox
│  │  │  └─datetimepicker
│  │  │      ├─css
│  │  │      └─js
│  │  └─js
│  ├─bootstrap-4.0.0-beta
│  │  ├─css
│  │  └─js
│  ├─dataTables
│  │  ├─css
│  │  ├─images
│  │  └─js
│  ├─font-awesome-4.7.0
│  │  ├─css
│  │  └─fonts
│  ├─img
│  ├─jquery
│  ├─panel
│  │  ├─css
│  │  └─js
│  ├─post
│  │  ├─css
│  │  └─js
│  ├─role
│  │  ├─css
│  │  └─js
│  ├─showdown
│  ├─user
│  │  ├─css
│  │  └─js
│  └─ztree
│      ├─css
│      │  └─img
│      └─js
└─WEB-INF
    ├─ftl
    │  ├─surface
    │  └─tag
    └─jsp
        ├─panel
        ├─permission
        ├─post
        ├─role
        └─user

食(shi)用(du)方法如下。

1. 环境配置

部署环境的配置如下(阿里云友情提供):

CPU: 1 核

内存: 1 GB

硬盘: 40 GB

操作系统: Ubuntu 16.04 64 位

1.1. 安装 openjdk

更新软件列表:

root@akari:~# apt update

安装 openjdk-8-jdk:

root@akari:~# apt install openjdk-8-jdk -y

检查,成功则返回版本号:

root@akari:~# java -version

1.2. 安装 Git

root@akari:~# apt install git -y

检查 Git 是否安装成功:

root@akari:~# git --version
git version 2.7.4

1.3. 配置 maven

先下载最新版 maven,右键 Binary tar.gz archive 获取下载地址,输入如下命令下载 maven:

root@akari:~# cd ~
# 若地址失效,请自行替换最新地址
root@akari:~# wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.2-bin.tar.gz
# 解压
root@akari:~# tar -zxvf apache-maven-3.5.2-bin.tar.gz
# 重命名
root@akari:~# mv apache-maven-3.5.2 apache-maven

添加环境变量:

root@akari:~# vim /etc/profile

在最后加上这些:

MAVEN_HOME=~/apache-maven
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin

保存,退出后重载文件:

root@akari:~# source /etc/profile

验证 maven 配置:

root@akari:~# mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
Maven home: ~/apache-maven-3.5.0
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-47-generic", arch: "amd64", family: "unix"

1.4. 配置 Tomcat

在这儿获取最新版 tomcat 下载地址(core 版本的 tar.gz),如下:

root@akari:~# cd ~
root@akari:~# wget http://mirrors.shuosc.org/apache/tomcat/tomcat-9/v9.0.0.M26/bin/apache-tomcat-9.0.1.tar.gz
# 解压
root@akari:~# tar -zxvf apache-tomcat-9.0.1.tar.gz
# 重命名
root@akari:~# mv apache-tomcat-9.0.1 apache-tomcat

启动 Tomcat:

root@akari:~# sh apache-tomcat/bin/startup.sh
Using CATALINA_BASE:   ~/apache-tomcat-9.0.1
Using CATALINA_HOME:   ~/apache-tomcat-9.0.1
Using CATALINA_TMPDIR: ~/apache-tomcat-9.0.1/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       ~/apache-tomcat-9.0.1/bin/bootstrap.jar:~/apache-tomcat-9.0.1/bin/tomcat-juli.jar
Tomcat started.

1.5. 安装 MariaDB 数据库

MariaDB 是 MySQL 源代码的一个分支,在意识到 Oracle 会对 MySQL 许可做什么后分离了出来(有闭源的潜在风险)。作者 Michael Widenius Monty 也是 MySQL 创办者。MariaDB 目的是完全兼容 MySQL,也包括一些新特性优于 MySQL。

直接 apt 安装:

root@akari:~# apt install mariadb-server -y

2. 快速开始

首先 clone 本项目(注意路径,之后要用到):

root@akari:~# cd ~
root@akari:~# git clone https://github.com/nekuata/starry.git

接着配置数据库,配置 root 密码:

root@akari:~# mysql_secure_installation

然后使用 root 用户登入数据库,导入本项目的表结构:

# 登录数据库
root@akari:~/starry/src/main# mysql -u root -p
# 导入表结构
MariaDB [(none)]> source ~/starry/src/main/notebook/starry.sql

新建一个用户,赋予表 sinitial 的所有权限:

MariaDB [(none)]> CREATE USER 'starry'@'localhost' IDENTIFIED BY 'starry12138';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON `sinitial`.* TO 'starry'@'localhost' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
# 退出 mariadb
MariaDB [(none)]> exit

其中 `sinitial`.* 是刚才导入的表名,starry 是默认用户名,starry12138 是默认密码,为了安全起见最好改成自己的。

使用 maven 下载依赖包并打包:

root@akari:~# cd ~/starry
root@akari:~/starry# mvn install

以下内容不是必须的。

——————————————————start—————————————————————

生成 Druid 数据库密钥

本项目采用 Druid 数据库连接池,数据库明文密码直接写在配置里。Druid 为此提供一种数据库密码加密的手段 ConfigFilter,首先找到 Druid 的 jar 包:

root@akari:~# cd ~/.m2/repository/com/alibaba/druid/1.1.2

执行如下命令:

root@akari:~/.m2/repository/com/alibaba/druid/1.1.2# java -cp druid-1.1.2.jar com.alibaba.druid.filter.config.ConfigTools starry12138

输出:

privateKey:MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAvMTUk4bMbDkg3U6SG5ErHb8b0B4CCOqQn/7kLWVyZgJyA6tFmrfvL3DFP/S7qt3pdoEisebBpJonQK07HM/fBwIDAQABAkBgrncp8Bp3O3NHpdxTXjC1FZKLLzNfmbPlHkmDrre+4pSNPZAJBfqsEXOCfduAXuvooeXPMJ2cXCy49402TujBAiEA3fTKJK1UdvBodp8+F/kz5iU186cjfeH2cYnQdacCIfcCIQDZuOzFyHHDvE8KfZ6xAjMUPLPxDwPnLd+aKGCHq0/ncQIhAMEhuatEb1S3SA6/7cXqf/BovJNxAf8NWeXdp1hYpBBtAiArMb73tj6rwI5F3IpBP9h2aVyhtILnuHgmE2CjSd9+YQIgPcfa3J5KjjWnCYLDRDtLMcGCJ2LCqB2ZyQPC+hA3VNY=
publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALzE1JOGzGw5IN1OkhuRKx2/G9AeAgjqkJ/+5C1lcmYCcgOrRZq37y9wxT/0u6rd6XaBIrHmwaSaJ0CtOxzP3wcCAwEAAQ==
password:gNfnXJUtBokb9yuIGxw0a5FtRlM5+yuhJ+QM/sL9S1bps/zqAd2daBePWGNqdWirsZQtXbBg0sBVMaLX2ELzYw==

其中 starry12138 是刚才新建 mariadb 用户的密码

修改 Druid 配置文件:

root@akari:~# vim ~/starry/src/main/resources/spring/druid.properties

输入 i 开启编辑模式,在这里填入数据库用户名和上面生成的密钥:

jdbc_username = starry
jdbc_password = gNfnXJUtBokb9yuIGxw0a5FtRlM5+yuhJ+QM/sL9S1bps/zqAd2daBePWGNqdWirsZQtXbBg0sBVMaLX2ELzYw==
jdbc_publicKey = MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALzE1JOGzGw5IN1OkhuRKx2/G9AeAgjqkJ/+5C1lcmYCcgOrRZq37y9wxT/0u6rd6XaBIrHmwaSaJ0CtOxzP3wcCAwEAAQ==

点击 esc,输入 :wq 保存退出。

再次使用 maven 打包:

root@akari:~# cd ~/starry
root@akari:~/starry# mvn install

——————————————————end—————————————————————

完成后,把打好的 war 包重命名,丢到 Tomcat 服务器里:

# 进入 war 包目录
root@akari:~/starry# cd ~/starry/target
# 改名
root@akari:~/starry/target# mv starry.war ROOT.war
# 关闭 tomcat
root@akari:~/starry/target# sh ~/apache-tomcat/bin/shutdown.sh
# 删除旧包
root@akari:~/starry/target# rm -rf ~/apache-tomcat/webapps/ROOT
# 添加新包
root@akari:~/starry/target# mv ROOT.war ~/apache-tomcat/webapps/
# 启动 tomcat
root@akari:~/starry/target# sh ~/apache-tomcat/bin/startup.sh

大功告成!

现在地址栏输入 http:// 你的 ip 地址:8080try it~

PS. 关于更改 tomcat 端口

  • root 用户:vim ~/apache-tomcat/conf/server.xml,搜索8080将其改为80,保存,重启 tomcat 即可。

  • 非 root 用户:试试 iptables 的端口转发功能。sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

3. 自动化部署

执行脚本:

# 执行脚本
root@akari:~# sh ~/starry/src/main/notebook/deploy.sh

or

# 赋予脚本执行权限
root@akari:~# chmod +x ~/starry/src/main/notebook/deploy.sh
# 执行脚本
root@akari:~# .~/starry/src/main/notebook/deploy.sh

To Be Continue...

4. 致谢

PS. 不完全统计,排名不分先后,大小写依据 Official 项目名

附:Windows 系统配置要求如下:

最低配置 推荐配置
操作系统
Windows® 7 / Windows® 8 / Windows® 10 64 位系统 (或最新版本的 Service Pack)
Windows® 7 / Windows® 8 / Windows® 10 64 位系统 (最新版本的 Service Pack)
处理器
Intel® Core™ i3 或是 AMD Phenom™ X3 8650
Intel® Core™ i9-7980XE 或 AMD Ryzen™ ThreadRipper 1950X 处理器及以上
显卡
NVIDIA® GeForce® GTX 460, ATI Radeon™ HD 4850, 或是 Intel® HDGraphics 4400
NVIDIA® GeForce® GTX 1080Ti or AMD Radeon™ R9 Fury 或以上
内存
4 GB RAM
64 GB RAM
储存空间
30 GB 硬件空间
网络
宽带网络
媒体
无特殊需求
分辨率
最低 1024 x 768

(有话好好说,别打脸)PS. 你至少知道了下一台主机的配件表,也不是白来一趟嘛!

About

重量级博客系统(指体积

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published