Apache中整合JSP和PHP怎样做,实现方案是什么
Admin 2022-08-25 群英技术资讯 228 次浏览
我们最希望任何事都是完美的,如在企业应用中,我们只需要选择一个Web平台就可以部署所有的企业应用。但往往理想与现实相去甚远。在现实世界中,信息系统往往是由很多不同的操作系统、平台以及应用环境混合而成的。而且为了保持与旧的系统兼容,系统总是将当前的技术和以前的遗留技术进行混合,这样周而复始。就使系统变得越来越复杂。
对于这样的恶性变化会使很多人疲于奔命,尤其是开发人员,他们将面临几乎令人崩溃般的挑战。尤其是要将两个或更多的技术部署在同一个应用时更是如此。如本文要给出的例子中,就是将PHP和JSP程序同时部署在运行于Apache中的同一个应用程序中。在这个例子中,将提供一种方法来快速地部署这两种Web程序。开发人员也可以借鉴这种方法来处理其他类似的难题。
也许有很多人会问,我应该如做也能将基于PHP和JSP的Web程序部署在同一个Web应用程序中呢?下面我就来回答这个问题。这个问题的基本答案就是先将apache配置成PHP Web服务器,并使用Apache来处理所有的PHP/CGI请求,同时使用Tomcat处理所有的其他请求(包括JSP请求)。在开始之前,让我们先看看需要哪些软件:
完成本文的例子需要三个软件:
1. Apache HTTP Server
2. Apache Tomcat
3. Apache Tomcat Connectors
一、解决方案所使用的技术
对于上述的问题,我们有几个解决方案可以考虑。这些解决方案如下所示:
1. 使Apache服务器作为主要的或默认的请求处理器,只传递Servlet/JSP请求给Java容器。
2. 将Java容器作为主要或默认的请求处理器,只允许PHP/CGI请求由Apache处理。
3. 不使用Apache,并在Tomcat中运行PHP/CGI程序。
上述的前两种解决方案类似。这两种方法都是将大量的请求引入某一个服务器(Tomcat或Apache),然后使用别外的服务器处理个别的请求(JSP或PHP)。第三种方法虽然看起来比较简单,很诱人。但Apache在处理PHP时的效率是非常高的,并且提供了更安全的机制,因此,Tomcat并不合适处理PHP程序。
在本文中我们将采用第二种方案,就是将Tomcat作为主要的Web服务器来接收大部分请求,同时Apache作为后备服务器来处理PHP/CGI请求,它们的关系如图1所示。如果读者对第一种方法情有独衷,可以很容易地根据第二种方法来设置。
图1 Tomcat作为主要的请求处理器,Apache作为辅助请求处理器
二、配置Apache
在整个处理过程中的第一步是非常重要的,同时也是最复杂的。也就是需要安装Apache服务器,然后对Apache进行配置,以支持Apache Tomcat。对于安装来说,我们可以在google或baidu上搜索相关文章,这个本文不太详细讲述。但如何去配置它呢,首先我们需要使用一个Apache Tomcat connector,我们可以选择mod_jk或mod_jk2。在这里我强烈推荐使用mod_jk,因为mod_jk早在三年前就被放弃了。我们首先打开Apache的配置文件httpd.conf,将看到如下的内容:
#
# Use name-based virtual hosting.
#
#NameVirtualHost *:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
在下面的部分,将建立一个VirtualHost节点,它将捕捉所有的在80端口的HTTP请求,
并将它们按着上述的方法进行映射(Tomcat是默认的,Apache只处理PHP和CGI请求)。
<VirtualHost *:80>
# Set DocumentRoot equal to Tomcat ROOT context
DocumentRoot /www/webapps/ROOT
# Exclude PHP & CGI (let Apache handle)
SetEnvIf Request_URI \.php no-jk
SetEnvIf Request_URI \.cgi no-jk
# 通过mod_jk,处理每一个请求(除了PHP和CGI)
# 将处理从Apache传给Tomcat
JkMount /* myWorker
</VirtualHost>
在上面的描述中,我们应该很容易将其变能第一种方法,也就是只向JkMount处理jsp或servlet请求到Tomcat上
一查我们对环境进行了正确的配置,我们就可以将应用程序打包并发布到Web服务器了。将应用程序发布到Apache上和发布到Tomcat上没什么不同,都需要建立一个WEB-INF/web.xml文件,所不同的是如果请求的是PHP或CGI程序,将绕过Tomcat直接传给Apache来处理。
尽管改变Apache的根目录(默认是'dtdocs')对于发布应用程序并不方便。但我们可以将Apache的根目录指向Tomcat的发布目录。这样PHP/CGI就可以和JSP打在同一个WAR/EAR包中。我们只要简单地目录中放置JSP、HTML和PHP页即可完成发布。这对于开发,还是测试都是非常方便的。
另外,将PHP、JSP和CGI发布到同一个目录中还可以使它们共享相同的支持文件(CSS、JS、images等)的内容。还有,这个模型提供了一个Web应用程序的完整结构,以及从Java Web目录中调用PHP/CGI程序变得更简单(相对而言)。
四、总结
无论你在工作中是否被要求集成遗留的Web应用程序到新的Web程序中,或是将某个开源系统加进定制的Web应用中,或简单地将两个不同的Web应用集成到一起,你都有可能将不同的技术集成到同一个Web应用中。总之一句话,将不同的技术转换到同一种技术平台上是最好的解决方案
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
首先自定义Command,在命令行下执行php artisan swoole start,开启Swoole服务。然后自定义handler,再利用connection_info函数获取客户端的IP地址和端口,用fsockopen直接发送数据。
php数组排序并保持索引关系:1、uasort是数组中的值通过用户自定义的比较函数排序,并保持索引关联。2、主要是用在需要按照自定义的方法并且保留索引关系对多维数组的排序上。
PHP怎么实现读取excel导入数据库?这篇文文章主要介绍基于ThinkPHP 框架实现的读取excel导入数据库操作,下面分享了具体的实现代码,有需要的朋友可以参考一下。
一、总结1、php的全局变量:php的全局变量和C++,Java的全局变量不一样2、页面嵌套php:我在html页面中嵌套php代码的时候,php的全局变量好像和C++,Java的全局变量一样,好像是,记不清了3、php全局变量使用:php全局变量用global定义一下就好,就在外面定义global是错的,必须在函数内声明4、global定义全局变量:global定义全局变量的时候,不能一
php实现无刷新操作的方法有哪些?这篇文章给大家分享是关于php的无刷新操作的四种方法以及示例,具有一定的借鉴价值,大家可以参考参考,下面就跟随小编一起来看看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008