JbootAdmin 部署文档

# JbootAdmin 部署文档

JbootAdmin 部署过程主要分为以下几个步骤:

  • 第一步:编译
  • 第二步:上传到服务器
  • 第三步:启动

# 第一步:编译

编译的目的是为了让我们的源码(包含 java、js、css 图片等)打包成一个可以被执行的 jar 文件,有了 jar 文件后,我们便可以通过 java 命令 java -jar 进行启动。

在 JbootAdmin 中,我们需要通过 Maven 进行编译的,因此,在编译之前需要在您的电脑里,安装好 maven ,配置好 Maven 的环境变量。而 Maven 是使用 Java 开发的,因此在您的电脑安装好 Java 也是必须的。

当安装好 Maven 后,我们需要通过命令窗口(shell) 方式进入项目所在根目录,然后执行如下代码:

mvn clean package

稍等片刻,会在 starter-cms/target 目录下,生成文件:starter-cms-1.0.0-jar-with-dependencies.jar。

# 第二步:上传到服务器

上传的工具有很多,比如 xshell 等,关于工具的使用请自行参考相关工具的文档,如果您的电脑是 linux 或者 mac 电脑,可以通过如下命令上传。

scp 本地文件目录 root@ip:/服务器目录

如下的命令是将本地文件 starter-cms-1.0.0-jar-with-dependencies.jar 上传到服务器 192.168.1.100 的 /data/wwww 目录里。

scp /your/path/to/starter-cms-1.0.0-jar-with-dependencies.jar root@192.168.1.100:/data/wwww

# 第三步:启动

通过 ssh 登录到服务器后,进入到 starter-cms-1.0.0-jar-with-dependencies.jar 文件所在目录,执行命令

java -jar starter-cms-1.0.0-jar-with-dependencies.jar 就可以启动项目,但是这种启动的方式是 "前台" 模式,当我们推出命令窗口后,项目也会自动停止了,因此,我们需要通过 nohup 将其后台启动。

命令如下:

nohup java -jar ./starter-cms-1.0.0-jar-with-dependencies.jar >./log_cms.log 2>&1 & 

同时项目的相关错误日志会输出到 ./log_cms.log 这个文件里。

为了更加方便我们启动项目,我们也可以在 starter-cms-1.0.0-jar-with-dependencies.jar 目录下写一个 shell 脚本,用来启动或者关闭我们的项目,例如:

#!/bin/bash 
 
COMMAND="$1"
 
if [[ "$COMMAND" != "start" ]] && [[ "$COMMAND" != "stop" ]] && [[ "$COMMAND" != "restart" ]]; then
        echo "Usage: $0 start | stop | restart"
        exit 0
fi
 
 
# 生成 class path 值
 
function start()
{
    # 运行为后台进程,并且将信息输出到 log_cms.log 文件
    nohup java -jar ./starter-cms-1.0.0-jar-with-dependencies.jar --jboot.app.mode=product >./log_cms.log 2>&1 & 
}
 
function stop()
{
    kill `pgrep -f starter-cms` 2>/dev/null
}
 
if [[ "$COMMAND" == "start" ]]; then
        start
elif [[ "$COMMAND" == "stop" ]]; then
    stop
else
    stop
    start
fi

假设这个文件名称为 cms_deploy.sh ,我们可以执行如下命令对项目进行控制

  • 启动项目 ./cms_deploy.sh start
  • 停止项目 ./cms_deploy.sh stop
  • 重启项目 ./cms_deploy.sh restart

# 注意事项:

# 1、配置问题

当我们把项目打包成一个 jar 文件后,所有的配置内容都存放在 jar 文件里的 jboot.porperites 里了,无法对其进行修改,但是如果一定要修改其配置,可以把这个配置添加到启动参数里,例如

java -jar ./starter-cms-1.0.0-jar-with-dependencies.jar --jboot.app.mode=product

等同于在 jboot.properties 文件里添加了 jboot.app.mode=product 的配置,而且会覆盖 jboot.properties 原本的配置。其他参数同理。

另一个方案是在项目里有两个 properties 文件,分别是 jboot.properties 和 jboot-product.properties 文件,当我们启动应用的时候,如果当前的 app 模式是 product,那么系统将会优先读取 jboot-product.properties 文件里的内容,只有读取不到的时候,才会去读取 jboot.propertie 的内容。更多关于配置问题,请参考:http://jbootprojects.gitee.io/docs/docs/config.html

# 2、安全问题

一般情况下,我们不会把数据库(或者 redis等)的明文密码直接配置在 jboot.properties 文件里,配置在 jboot.properties 里的密码一般都是加密的,关于配置内容加密的解决方案,请参考: http://jbootprojects.gitee.io/docs/docs/config.html#%E9%85%8D%E7%BD%AE%E5%86%85%E5%AE%B9%E5%8A%A0%E5%AF%86%E8%A7%A3%E5%AF%86