2019-05-06 tomcat+nginx

今日积累(tomcat+nginx)

CATALINA_BASE与CATALINA_HOME的区别

CATALINA_HOME是Tomcat的安装目 录,CATALINA_BASE是Tomcat的工作目录。如果想在一台服务器上运行Tomcat的多个实例,但是不想安装多个Tomcat软件副本,可以配置多个工作目录(CATALINA_BASE),每个运行实例独占一个工作目录,但是共享同一个安装目录。
通常,在大型项目部署时,Tomcat软件和业务是独立团队维护,集成部署时,就需要设置CATALINA_BASE环境变量让tomcat可以加载业务服务。

nginx配置静态资源和动态访问分离

    server {
        listen       8080;
        server_name  localhost;

        location ~ \.(gif|jpg|png|js|css|html|svg)$ {
            root website;
        }
        
        location / {
            proxy_pass http://127.0.0.1:8081;
        }
    }

这里仅列举了我当前使用的静态资源类型,实际项目中可以按需添加。
有几个点需要说明:

  1. location后面的"."是特殊字符,需要转义,例如有些接口设计中URL会携带版本号,例如/v2.0,如果不转义Nginx也不会报错。有一次踩到了这个坑,直到业务报错才发现。
  2. ~ 开头表示区分大小写的正则匹配,~* 开头表示不区分大小写的正则匹配。

IDEA本地调试tomcat web项目,环境变量设置不生效?

IDEA怎么进行tomcat本地调试可以参考这篇博客: https://www.cnblogs.com/del88/p/6407503.html

但是我代码中需要通过System.getenv获取环境变量,Configurations中貌似可以设置这种环境变量,可是我尝试了无数次都失败了,郁闷了一下午。
在这里插入图片描述
实在没折,硬着头皮看tomcat启动脚本catalina.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

意思是可以通过CATALINA_BASE和CATALINA_HOME的bin目录下setenv.bat来设置环境变量,优先用CATALINA_BASE目录。不过我看bin目录下也没有setenv.bat,抱着试一试的态度,在bin目录下创建一个setenv.bat。

set "test=on"

再次启动调试,居然生效了!
不过我还是没想明白在IDEA里设置为什么不生效,有知道的朋友麻烦告诉我:)

猜你喜欢

转载自blog.csdn.net/CommanderZero/article/details/89885758