为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英4014372 2023-02-23 16:30:13
我知道这个问题可能与其他问题类似,但是,我无法解决这个问题。我有一个有 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
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

您可以创建 VirtualHosts以在一台服务器中设置具有多个域名的多个网站。您也可以在 tomcat 7、8 和 9 中进行相同的尝试。1.编辑您相关的 server.xml 文件并包含虚拟主机,如下所示。


确保重新启动您的 tomcat 服务器以使应用的更改生效。


<Host name="example.com"  appBase="webapps" unpackWARs="true" autoDeploy="true">

    <Alias>www.example.com</Alias>


    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

           prefix="example_access_log" suffix=".txt"

           pattern="%h %l %u %t %r %s %b" />


    <Context path="" docBase="/opt/tomcat/webapps/myapp1"

           debug="0" reloadable="true"/>

</Host>



<Host name="mydomain.org"  appBase="webapps" unpackWARs="true" autoDeploy="true">

    <Alias>www.mydomain.org</Alias>


    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

           prefix="mydomain_access_log" suffix=".txt"

           pattern="%h %l %u %t %r %s %b" />


    <Context path="" docBase="/opt/tomcat/webapps/myapp2"

           debug="0" reloadable="true"/>

</Host>

解释


例如 .com 域,/opt/tomcat/webapps/myapp1 是文档根目录(对于您的 web 1)。对于 mydomain.org 域,/opt/tomcat/webapps/myapp2 是文档根目录(对于您的 web 1)。


查看完整回答
反对 回复 2023-02-23
?
撒科打诨

TA贡献1934条经验 获得超2个赞

检查 tomcat/conf.web.xml 文件中的以下内容


  <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->

  <Listener className="org.apache.catalina.core.JasperListener" />


查看完整回答
反对 回复 2023-02-23
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

这就是我设法解决这个问题的方法。我不知道这是否是最好的方法,但它确实有效。只需执行以下 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">

        <Resource

                name="jdbc/rhwebDB"

                .

                .

                .

        (database connection info, optional)

    />

</Context>

然后在 Apache 端,我必须配置 mod_proxy_ajp 连接器


我编辑了文件:


3) /etc/apache2/conf.d/userdata/std/2/accountfolder/mydomain.com/cp_jkmount.conf


<IfModule mod_jk.c>

  JkMount /*.jsp ajp13

  JkMount /servlet/* ajp13

  JkMount /servlets/* ajp13

</IfModule>


<IfModule mod_proxy_ajp.c>

  ProxyRequests Off

  <Proxy *>

    AddDefaultCharset Off

    Order deny,allow

    Allow from all

  </Proxy>


  ProxyPass / ajp://mydomain.com:8009/

  ProxyPassReverse / ajp://mydomain.com:8009/

我的应用程序/网站位于 /home/accountfolder/public_html/ 并且 %CATALINA_HOME%/webapps/ 目录中没有任何内容。对我来说这更好,因为我可以使用 FTP 用户直接上传 jsp 或任何直接在应用程序所在的位置。


如果遇到任何问题,请检查 /home/accountfolder/public_html/ 目录中的文件夹权限和所有者,Tomcat 需要读取/执行权限等。如果 Tomcat 无法访问这些文件和文件夹,将显示 Tomcat 的 404 错误。


正如我在这篇文章中提到的,我的应用程序是“分解的”(如果这是正确的术语),我的意思是,它没有打包在 WAR 文件中。


查看完整回答
反对 回复 2023-02-23
  • 3 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信