Linux/Windows 部署 Tomcat 配置用户环境变量 VM Options

1. IDEA 配置 VM Options

1.1 IDEA 配置 VM Options

    此处以维护用户环境变量 DES_SECRET 用于配置文件加密的秘钥为例;spring 项目可通过 org.springframework.core.env.Environment 获取变量的 value

  • SpringMVC 项目
    可以配置 VM Options 项
    在这里插入图片描述

  • SpringBoot 项目
    可以配置 Environment variables 项或者 VM Options
    在这里插入图片描述

1.2 spring 项目注入用户环境变量

    配置后用户环境变量后,项目可通过 PropertiesUtil.getProperty(“DES_SECRET”) 获取配置的 value。
    项目打包后放入 tomcat_home/webapps 路径下,运行 startup.bat/startup.sh 可以正常启动 tomcat 服务即可,若未配置用户环境变量,项目初始化动作需要该变量时,则启动会报错。

    环境变量加载及获取关键代码演示
PropertiesUtil.java

import org.springframework.core.env.Environment;

/**
 * @description: 配置文件属性读取
 **/
public class PropertiesUtil {

    public static Environment env;

    /**
     * 根据属性KEY取得属性值
     */
    public static String getProperty(String name) {
        return env.getProperty(name);
    }
}

Configuration.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
import org.springframework.core.env.Environment;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.web.context.request.RequestContextListener;

/**
 * @description: spring配置
 */
@org.springframework.context.annotation.Configuration
@EnableAsync
public class Configuration {

    /**
     * 注入上下文环境
     * @param env
     */
    @Autowired
    public void set(Environment env) {
        PropertiesUtil.env = env;
    }

    /**
     * 设置spring security提示为中文
     * @return ReloadableResourceBundleMessageSource
     */
    @Bean
    public ReloadableResourceBundleMessageSource setLocalization() {
        ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource = new ReloadableResourceBundleMessageSource(); 
        reloadableResourceBundleMessageSource.setBasenames("classpath:messages");
        reloadableResourceBundleMessageSource.setUseCodeAsDefaultMessage(true);
        reloadableResourceBundleMessageSource.setDefaultEncoding("UTF-8");
        return reloadableResourceBundleMessageSource;
    }

    /**
     * 注入spring请求上下文监听
     * @return spring请求上下文监听
     */
    @Bean
    public RequestContextListener requestContextListener() {
        return new RequestContextListener();
    }
}

2. Tomcat 部署配置用户环境变量

    此处是通过 tomcat/bin 下的配置文件永久修改,不是通过命令行命令来设置的。

2.1 Windows: standard environment variables

    可通过创建 setenv.bat 文件,单独配置标准环境变量;
    查看 tomcat_home/bin/catalina.cat 包含以下配置信息,如果我们想添加标准环境变量可以通过 setenv.sh 实现;
    下载的 tomcat 一般默认不包含 setenv.bat 文件;此处我们可以新建 setenv.bat,编辑标准环境变量保存后,运行 shutdown.bat 关闭 tomcat 服务,重新运行 start.bat 启动即可。

rem Get standard environment variables
if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome
call "%CATALINA_BASE%\bin\setenv.bat"
goto setenvDone
:checkSetenvHome
if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"
:setenvDone

新建文件 setenv.bat 配置环境变量 DES_SECRET

set JAVA_OPTS=-DDES_SECRET=123654

2.2 Linux: user defined CLASSPATH variables

相同的,可以通过创建 setenv.sh 文件配置标准环境变量;以下是 catalina.sh 部分配置

# Ensure that any user defined CLASSPATH variables are not used on startup,
# but allow them to be specified in setenv.sh, in rare case when it is needed.
CLASSPATH=

if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
  . "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
  . "$CATALINA_HOME/bin/setenv.sh"
fi

新建 setenv.sh,配置自定义的环境变量,shutdown.sh 停止服务,重新运行 startup.sh 即可。

export JAVA_OPTS="$JAVA_OPTS -DDES_SECRET=123654"

Power By niaonao, The End

©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页