Jenkins 在 Tomcat 运行访问路径设置
问题
最近用 Tomcat
搭建了个 Jenkins
,但是访问的时候需要端口加 /jenkins/
才能进行访问。我们是直接将 Jenkins.war 包放在 webapps
下的。 我们想直接通过不加路径进行访问。
解决办法
思路一
在 Host
里面进行配置 path ,经过测试,发现是不行的。
<Host name="localhost" appBase="webapps" path="/jenkins"
unpackWARs="true" autoDeploy="true">
</Host>
思路二(可用)
新建一个 jenkins 目录在 ./webapps/
下 ./webapps/jenkins
. 然后将 jenkins.war 解压,然后将压缩包里所有内容放在 ./webapps/jenkins/
下, 然后在 ./conf/server.xml
的 Host
增加一个 Context
配置. 假设路径为 /opt/apache-tomcat-8.5.47/webapps/jenkins
,那么配置为
<Host name="localhost" appBase="webapps" path="/"
unpackWARs="true" autoDeploy="true">
<!-- 新增-->
<Context docBase="/opt/apache-tomcat-8.5.47/webapps/jenkins" path="/" reloadable="true"/>
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
然后启动 Jenkins 即可。
思路三(可用)
将 jenkins.war 解压,然后将压缩包里所有内容放在 ./webapps/ROOT/
下,然后启动 jenkins.
[root@localhost webapps]# pwd
/opt/apache-tomcat-8.5.47/webapps
[root@localhost webapps]# ls -l ./ROOT/
total 2428
drwxr-x--- 3 root root 36 Nov 10 18:22 bootstrap
-rw-r----- 1 root root 1946 Feb 7 2019 ColorFormatter.class
drwxr-x--- 5 root root 265 Nov 10 18:22 css
-rw-r----- 1 root root 1544 Oct 28 13:22 dc-license.txt
drwxr-x--- 2 root root 30 Nov 10 18:22 executable
-rw-r----- 1 root root 17542 Oct 28 13:22 favicon.ico
drwxr-x--- 12 root root 180 Nov 10 18:22 help
drwxr-x--- 6 root root 4096 Nov 10 18:22 images
-rw-r----- 1 root root 1674 Feb 7 2019 JNLPMain.class
drwxr-x--- 2 root root 250 Nov 10 18:22 jsbundles
-rw-r----- 1 root root 862 Feb 7 2019 LogFileOutputStream$1.class
-rw-r----- 1 root root 636 Feb 7 2019 LogFileOutputStream$2.class
-rw-r----- 1 root root 2240 Feb 7 2019 LogFileOutputStream.class
-rw-r----- 1 root root 20730 Feb 7 2019 Main.class
-rw-r----- 1 root root 1048 Feb 7 2019 MainDialog$1$1.class
-rw-r----- 1 root root 1067 Feb 7 2019 MainDialog$1.class
-rw-r----- 1 root root 2633 Feb 7 2019 MainDialog.class
-rw-r----- 1 root root 512 Feb 7 2019 Main$FileAndDescription.class
drwxr-x--- 3 root root 94 Nov 10 18:22 META-INF
-rw-r----- 1 root root 71 Oct 28 13:22 robots.txt
drwxr-x--- 3 root root 218 Nov 10 18:22 scripts
drwxr-x--- 7 root root 275 Nov 10 18:22 WEB-INF
-rw-r----- 1 root root 2390099 May 12 15:50 winstone.jar
反思
- 经过这个测试,我发现了一个点,当我们 在 Root 目录有内容的时候,我们没有配置 Context 的时候,我们是取 Root 里面的内容的,当我们配置了的 Context 的内容的时候,访问 ip:端口(默认访问),就是我们 Context 里面 docBase 配置的路径。
- webapps 下的默认访问是
ROOT
,其他在webapps
下的 目录都是需要加路径的(也就是目录名),当我们指定了也就是 Context 里面 docBase 配置的路径,这个时候才不需要加路径。
作者:理想三旬
本人承接各种项目维护和python项目开发, 如果觉得文章写得不错,或者帮助到您了,请点个赞,加个关注哦。运维学习交流群:544692191
本文版权归作者所有,欢迎转载,如果文章有写的不足的地方,或者是写得错误的地方,请你一定要指出,因为这样不光是对我写文章的一种促进,也是一份对后面看此文章的人的责任。谢谢。