你知道怎么在生产环境下部署 tomcat 吗?,五年 java 开发经验面试
drwxr-xr-x. 9 root root 220 5 月 8 19:23 apache-tomcat-8.5.40
lrwxrwxrwx. 1 root root 20 5 月 8 16:42 tomcat -> apache-tomcat-8.5.40
这样以后用 tomcat 应用路径,就直接使用 tomcat 这个软链接,即使将来 tomcat 升级只要修改一些软链接就行了,其他就不需要改。
目录分离
我们应该要把 tomcat 和 web 应用目录分离出来,即使 tomcat 升级也跟 web 应用没有关系。那分离出来,怎么启动呢?
我们要利用启动参数中的 CATALINA_HOME 和 CATALINA_BASE,来指定 tomcat 程序应用和 web 应用;通过 CATALINA_BASE 就可以实现 web 应用分离出去,我们来看一些 tomcat 一共有哪些启动参数
我们先在/usr/local 目录下新建一个 web-apps 目录,此目录就放 web 应用
mkdir web-apps
ll
lrwxrwxrwx. 1 root root 20 5 月 8 16:42 tomcat -> apache-tomcat-8.5.40drwxr-xr-x. 2 root root 6 5 月 8 20:29 web-apps
在 web-apps 目录下,新建 web-a 和 web-b 目录,这两个目录就是 web-A 和 web-b 的 web 应用目录。
cd web-apps/
mkdir web-a
mkdir web-b
ll
drwxr-xr-x. 2 root root 6 5 月 8 20:33 web-adrwxr-xr-x. 2 root root 6 5 月 8 20:33 web-b
把 tomcat 程序中的 conf 目录拷贝到 web-a 和 web-b 里面,这样各个 web 应用都有各自的配置文件。
cp -r /usr/local/tomcat/conf /usr/local/web-apps/web-a/
cp -r /usr/local/tomcat/conf /usr/local/web-apps/web-b/
再在 web-a 和 web-b 目录下,新建 webapps 和 logs 目录,webapps 存放 web 应用,logs 存放日志文件。
到此目录分离开了,但还缺少一个启动脚本
五、启动脚本
此启动脚本,老顾引用了网上的一个脚本改造了一下,命名为 tomcat.sh
#!/bin/bashexport JAVA_OPTS="-Xms100m -Xmx200m"export JAVA_HOME="/usr/java/jdk1.8.0_181"export CATALINA_HOME="/usr/local/tomcat"export CATALINA_BASE="pwd
"
case CATALINA_HOME/bin/catalina.sh startecho start success!!;;stop)CATALINA_HOME/bin/catalina.sh stopecho stop success!!sleep 2CATALINA_HOME/bin/catalina.sh version;;configtest)$CATALINA_HOME/bin/catalina.sh configtest;;esacexit 0
脚本比较简单,核心就是启动参数,只要注意 CATALINA_BASE="pwd
"的意思是,执行脚本的路径,也就是代表 web 应用路径是脚本执行的路径;再把 tomcat.sh 设置一些启动权限 # chmod +x tomcat.sh?。
修改 conf 下的 server.xml
<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r&qu
ot; %s %b" /></Host>
修改了红色字体部分,host 中的 appBase 是相对 CATALINA_BASE 的路径,就是 web 应用的路径,context 中的 path 是请求 url,docBase 也是相对路径,相对于 appBase 的,当然也可以设置绝对路径。在 web-a 下创建 index.html 文件
到现在为止的 web-a 的目录下
ll
drwx------. 3 root root 254 5 月 8 22:05 confdrwxr-xr-x. 2 root root 197 5 月 8 21:27 logs-rwxr-xr-x. 1 root root 598 5 月 8 21:21 tomcat.shdrwxr-xr-x. 2 root root 24 5 月 8 21:25 webapps
ll webapps/
-rw-r--r--. 1 root root 12 5 月 8 21:25 index.html
启动 tomcat.sh
./tomcat.sh start
访问?http://192.168.31.150:8080/?就 ok 了,直接返回了 index.html 里面的内容。
评论