在一台服务器上为多个网站设置 Tomcat (linux)

我知道这个问题可能与其他问题类似,但是,我无法解决这个问题。


我有一个有 25 个网站的服务器,它们都使用 Tomcat。我正在迁移到具有 Tomcat 8(常规版本)的新服务器,而旧服务器使用“CPanel's easy tomcat”。


我开始迁移一个网站,该网站现在正在新服务器上运行,但是,当从浏览器调用 JSP 时,浏览器会显示 JSP 代码而不是执行它。


在我的旧服务器上,我不得不执行 CPanel 的 easy-tomcat 中的一项名为“安装 servlet”的功能,我真的不知道它做了什么,但是,在执行该功能之后,Tomcat 将执行 JSP。


现在,在我的新服务器中,根据我所阅读的内容,我已将其添加到 %CATALINA_HOME%/conf/server.xml 文件中的标签内<Engine></Engine>(我也必须将其包含在我的旧服务器中):


<Host name="mydomain.com" appBase="/home/myAccName/public_html/">

<Context path="" reloadable="false" docBase="/home/myAccName/public_html" />

</Host>

如您所见,该应用程序不在 %CATALINA_HOME%/webapps/ 目录下,而这正是我需要的方式。


我错过了什么?


任何帮助将不胜感激


我正在使用 Tomcat 8、EasyApache 4 和 CentOS 7.6


慕桂英4014372
浏览 126回答 3
3回答

慕姐4208626

您可以创建 VirtualHosts以在一台服务器中设置具有多个域名的多个网站。您也可以在 tomcat 7、8 和 9 中进行相同的尝试。1.编辑您相关的 server.xml 文件并包含虚拟主机,如下所示。确保重新启动您的 tomcat 服务器以使应用的更改生效。<Host name="example.com"&nbsp; appBase="webapps" unpackWARs="true" autoDeploy="true">&nbsp; &nbsp; <Alias>www.example.com</Alias>&nbsp; &nbsp; <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;prefix="example_access_log" suffix=".txt"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pattern="%h %l %u %t %r %s %b" />&nbsp; &nbsp; <Context path="" docBase="/opt/tomcat/webapps/myapp1"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;debug="0" reloadable="true"/></Host><Host name="mydomain.org"&nbsp; appBase="webapps" unpackWARs="true" autoDeploy="true">&nbsp; &nbsp; <Alias>www.mydomain.org</Alias>&nbsp; &nbsp; <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;prefix="mydomain_access_log" suffix=".txt"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pattern="%h %l %u %t %r %s %b" />&nbsp; &nbsp; <Context path="" docBase="/opt/tomcat/webapps/myapp2"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;debug="0" reloadable="true"/></Host>解释例如 .com 域,/opt/tomcat/webapps/myapp1 是文档根目录(对于您的 web 1)。对于 mydomain.org 域,/opt/tomcat/webapps/myapp2 是文档根目录(对于您的 web 1)。

撒科打诨

检查 tomcat/conf.web.xml 文件中的以下内容&nbsp; <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->&nbsp; <Listener className="org.apache.catalina.core.JasperListener" />

叮当猫咪

这就是我设法解决这个问题的方法。我不知道这是否是最好的方法,但它确实有效。只需执行以下 3 个步骤:1) 在 %CATALINA_HOME%/conf/server.xml 中:<Host name="mydomain.com" appBase="webapps" autoDeploy="false" unpackWARs="false"></Host>2) 然后我必须添加一个文件:%CATALINA_HOME%/conf/mydomain.com/ROOT.xml<Context displayName="My Website 1" docBase="/home/accountfolder/public_html" reloadable="true">&nbsp; &nbsp; &nbsp; &nbsp; <Resource&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; name="jdbc/rhwebDB"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .&nbsp; &nbsp; &nbsp; &nbsp; (database connection info, optional)&nbsp; &nbsp; /></Context>然后在 Apache 端,我必须配置 mod_proxy_ajp 连接器我编辑了文件:3) /etc/apache2/conf.d/userdata/std/2/accountfolder/mydomain.com/cp_jkmount.conf<IfModule mod_jk.c>&nbsp; JkMount /*.jsp ajp13&nbsp; JkMount /servlet/* ajp13&nbsp; JkMount /servlets/* ajp13</IfModule><IfModule mod_proxy_ajp.c>&nbsp; ProxyRequests Off&nbsp; <Proxy *>&nbsp; &nbsp; AddDefaultCharset Off&nbsp; &nbsp; Order deny,allow&nbsp; &nbsp; Allow from all&nbsp; </Proxy>&nbsp; ProxyPass / ajp://mydomain.com:8009/&nbsp; ProxyPassReverse / ajp://mydomain.com:8009/我的应用程序/网站位于 /home/accountfolder/public_html/ 并且 %CATALINA_HOME%/webapps/ 目录中没有任何内容。对我来说这更好,因为我可以使用 FTP 用户直接上传 jsp 或任何直接在应用程序所在的位置。如果遇到任何问题,请检查 /home/accountfolder/public_html/ 目录中的文件夹权限和所有者,Tomcat 需要读取/执行权限等。如果 Tomcat 无法访问这些文件和文件夹,将显示 Tomcat 的 404 错误。正如我在这篇文章中提到的,我的应用程序是“分解的”(如果这是正确的术语),我的意思是,它没有打包在 WAR 文件中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java