AWS EC2上Tomcat部署WAR文件无法读取环境变量求助
排查Tomcat无法读取环境变量的步骤
确认Tomcat运行用户
执行ps aux | grep tomcat,输出第一列就是Tomcat的运行用户(通常是tomcat)。切换到该用户:su - tomcat,再执行printenv | grep myEnvVar_databaseConnectionURL,如果没有输出,说明这个用户确实没有该环境变量。检查环境变量配置位置
要是你把变量加在root用户的~/.bashrc、~/.bash_profile这类用户级配置文件里,只有root登录时才会加载,Tomcat运行用户读不到。全局变量要配置在/etc/environment或/etc/profile里:- 写入
/etc/environment后无需source,系统会自动加载; - 写入
/etc/profile后,需要切换Tomcat用户重新登录,或者直接重启Tomcat。
- 写入
给Tomcat进程单独注入变量
不想修改全局配置的话,直接调整Tomcat的启动配置:- 打开Tomcat目录下的
bin/catalina.sh,在文件开头添加:export myEnvVar_databaseConnectionURL="你的数据库连接URL" - 如果是用systemd管理的Tomcat,编辑
/etc/systemd/system/tomcat.service,在[Service]段添加:
执行Environment="myEnvVar_databaseConnectionURL=你的数据库连接URL"systemctl daemon-reload && systemctl restart tomcat使配置生效。
- 打开Tomcat目录下的
验证进程环境变量
用ps aux | grep tomcat拿到Tomcat的进程ID(PID),执行cat /proc/<PID>/environ | tr '\0' '\n' | grep myEnvVar_databaseConnectionURL,能看到变量就说明配置生效了。
内容的提问来源于stack exchange,提问作者Michael Cropper
相关产品推荐
相关产品推荐

