我原来有一个网络应用,现在想上一个论坛,对比了n多java做的论坛后,感觉还是用discuz吧,呵呵。
需要解决的问题是:如何在apache下同时部署php和tomcat(原来的应用是直接跑tomcat的)。整合效果是:
1、访问http://.../myapp则使用原来的java应用,这个应用是spring abatis dwr写的;
2、访问http://.../bbs则进入discuz的论坛;
3、可能以后访问http://.../sns进入discuz的兄弟uhome
下面是配置的过程:
window环境,先说版本:tomcat 6, apache 2.2.3, mysql 5.1, php5.3.1, discuz(ucenter集成版本)7.1
准备工作:
1、安装mysql;
2、安装apache,自己建一个目录,比如d:\www,修改conf/httpd.conf,找DocumentRoot和<Directory "。。。">,替换成d:\www,随便写一个html文件,浏览http://..能看到表示搞定。apache我特意用的解压版本,没有用msi安装;
3、安装tomcat,浏览http://...:8080看到tomcat欢迎页表示搞定,仍然用解压版本,注意在startup.bat里面手工加上java_home的路径,以防他找不到;
4、尝试部署应用myapp,看到http://...:8080/表示,部署成功。
都准备好了,下面要解决几个问题:
1、apache + php:
第一步,在httpd.conf最后一行加上
LoadModule php5_module "D:/software/php531/php5apache2_2.dll"
<IfModule php5_module>
PHPIniDir "d:/software/php531"
LoadFile "d:/software/php531/php5ts.dll"
</IfModule>
AddType application/x-httpd-php .php
第二步、改名php.ini_develop或者-production为php.ini,找到一堆extension的地方,将下面几个前面的;去掉:
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
找pdo_mysql.default_socket,修改mysql的端口,即使用缺省的,也要写上3306;
找mysql.default_port,修改mysql的端口,即使用缺省的,也要写上3306;
找mysqli.default_port = 3306,修改mysql的端口,即使用缺省的,也要写上3306;
至此,apache应该可以运行php了,在d:\www建立目录bbs,写一个测试文件:text.php
<?php
phpinfo();
>
重启apache后,请求,应该能看到php的信息,确认:
Configuration File (php.ini) Path C:\Windows
Loaded Configuration File D:\software\php531\php.ini
另外,我从前辈的配置方法中看了n多方法,什么拷贝dll到windows目录啊,system32目录啊,什么的,其实都不用。如果按照上面的配置有问题了,顶多把php的解压目录加到path里面,就欧了(我没加path就欧了)。
说明一把:php531比较幽默,不认识localhost,所以,链接mysql的时候,要写127.0.0.1
,比如:
<?php
$conn = mysql_connect("127.0.0.1","myapp","pass") or die("无法连接数据库");
mysql_select_db("myappdb",$conn) or die("找不到数据源");
?>
真折腾人!
2、安装discuz,这个不用说了,安装官方文档干呗;
3、加上tomcat:
步骤一、在tomcat/conf目录下建立文件:workers.properties,所有前辈的文章都说要建这个文件名,有的人说在tomcat/conf目录下,有的说在apache/conf里面,其实,哪儿都行,叫什么都行,文件内容如下:
workers.tomcat_home=D:\steve\tomcat6.0
workers.java_home=C:\Program Files\Java\jdk1.6.0_16
ps=\
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
其实就是两个home写好就欧了。
步骤二、在apache的httpd.conf最后加上:
LoadModule jk_module modules\mod_jk-1.2.28-httpd-2.2.3.so
<IfModule jk_module>
JkWorkersFile "D:\steve\tomcat6.0\conf\workers.properties" #看见了吧,叫什么名字,放在哪儿都成!
JkLogFile "D:\steve\tomcat6.0\logs\mod_jk2.log" #自己随便定
JkLogLevel info
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common
JkMount /myapp/* ajp13
JkUnMount /bbs/* ajp13
</IfModule>
需要解释的有下面两个:
第一个、JkMount:前辈们一般都这么说:
JkMount /servlet/* ajp13
JkMount /*.jsp ajp13
但是,可但是呢?这两个我都用不上,我没有jsp文件(都用spring mvc虚拟htm文件了),我也没有servlet目录。起初,我小小的修改了一下:
去掉servlet的定义,把/*.jsp变成/myapp/*.htm,果然apache吧htm的请求给tomcat啦,但是,dwr完全不能用,想了想,原因是还没告诉apache,/myapp/dwr/*也给tomcat,也可以再加上一行JkMoount,后来一想,凡是myapp下都给tomcat就完了呗,干嘛写100多行JkMount啊,最后就成了/myapp/*;
第二个、JkUnMount:为什么非要写这个呢?如果不写,请求:http://.../bbs/index.php没问题,但是省略index.php,尽管配置了DirectoryIndex,apache也给tomcat处理了,所以要把bbs这个目录刨去;
最后,在httpd.conf加上:DirectoryIndex index.html index.htm index.jsp index.php
步骤三、修改tomcat的conf/server.xml,前辈的说法是配置一个虚拟目录,指向apache的documentroot,但是我做的时候总是出现问题,于是我索性修改了tomcat的webapp的位置,如下:
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
<Host name="localhost" appBase="D:\steve\apache_http_docs" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" />
</Engine>
然后,把webapps下面的host-manager和manager两个目录加上自己的应用myapp一起拷贝到apache的documentroot就欧了。
配置完成后,满足要求:同在一个80端口,访问php和tomcat,互不影响。
另外,如果想让tomcat原来的8080端口失效,只要找到server.xml,去掉原来那个8080的Connector就可以了
最后,罗唆一把,关于httpd.conf里面的IfModule的,前辈们给的配置都没有涉及到这个,我觉得还是加上比较稳当,如下:
LoadModule php5_module "D:/software/php531/php5apache2_2.dll"
<IfModule php5_module>
PHPIniDir "d:/software/php531"
LoadFile "d:/software/php531/php5ts.dll"
</IfModule>
AddType application/x-httpd-php .php
LoadModule jk_module modules\mod_jk-1.2.28-httpd-2.2.3.so
<IfModule jk_module>
JkWorkersFile "D:\steve\tomcat6.0\conf\workers.properties"
JkLogFile "D:\steve\tomcat6.0\logs\mod_jk2.log"
JkLogLevel info
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common
JkMount /myapp/* ajp13
JkUnMount /bbs/* ajp13
</IfModule>
表示如果这两个model成功load了,才会进行后续的配置,稳当多了。
分享到:
相关推荐
Struts2、Spring、Hibernate和DWR是Java Web开发中常用的四大框架,它们各自负责不同的功能,协同工作能构建出高效、灵活的企业级应用。在这个小实例中,开发者结合这四个框架来展示了一个完整的后端架构。 Struts2...
### 最新版本Struts2.1.8+Spring3.0+Hibernate3.3.2+DWR2.0.6配置详解 在本篇内容中,我们将详细探讨如何搭建一个基于Struts2.1.8、Spring3.0、Hibernate3.3.2以及DWR2.0.6的Web应用程序框架。这一组合被称为SSH+...
标题与描述中的关键词“struts+...整体而言,文档提供了从环境搭建到具体配置的详尽指南,有助于开发者快速掌握在MyEclipse下集成Struts+Hibernate+Spring+DWR的技术要点,对于企业级应用的开发具有较高的参考价值。
1. **环境配置**:设置开发环境,包括安装Java、Apache Tomcat服务器、Eclipse或IntelliJ IDEA等开发工具,以及添加SSH框架的jar包。 2. **项目结构**:理解Maven或Ant构建项目的结构,包括src/main/java(源代码)...
部署时,可能涉及到Tomcat、Jetty等应用服务器,以及Apache或Nginx等反向代理服务器,实现负载分发和静态资源处理。 综上所述,基于javaweb+jsp的财务管理系统结合了多种技术,旨在提供一个高效、安全的财务管理...
本项目将采用General Interface + DWR + Spring + Apache Tomcat + MySQL的开发模式,实现一个基于BS架构的在线股票交易系统。将遵循软件工程规范,完成需求分析,整体设计,详细设计,编码以及测试交付。 主要关键...
AJAX(Asynchronous JavaScript and XML)则是一种用于创建动态网页的技术,TOMCAT是Apache组织开发的开源Servlet容器,而MYSQL是广泛使用的开源关系型数据库管理系统。 1. **SSH框架**: - **Spring**:提供了一...
### Struts、Spring、Hibernate整合开发与DWR集成知识点详解 #### 一、概述 本文档旨在介绍如何在Struts、Spring、Hibernate(通常简称SSH)框架基础上集成DWR(Direct Web Remoting),以实现前后端更为流畅的...
1. **配置环境**:确保安装了JDK、Apache Tomcat服务器,并设置好环境变量。 2. **集成Struts2、Hibernate和Spring**:在web.xml中配置拦截器、Action和Spring的ContextLoaderListener,以启用MVC框架和Spring的DI。...
在与Struts2和JPA的集成中,Spring主要负责管理Bean的生命周期、配置以及处理事务,它提供了无缝的集成解决方案,使得整个应用架构更加清晰、模块化。 #### 综合运用案例分析 在实际开发中,结合Struts2、AJAX、...
- **易于集成**:DWR可以轻松集成到现有的Java Web应用中,如Servlet容器(如Tomcat、Jetty)和MVC框架(如Spring MVC)。 总结起来,DWR.JAR及其依赖的库文件是构建基于DWR框架的实时Web应用的关键组件。通过这些...
在进行项目配置前,首先需确保开发环境中已安装必要的软件,如JDK、Eclipse或IntelliJ IDEA等IDE、Apache Tomcat服务器等。随后,根据描述中的库列表,导入以下JAR包至项目中: 1. **Spring框架核心库**:包括`...
开发者可能使用了Spring Security或者Apache Shiro等安全框架来保护应用程序免受SQL注入、XSS攻击等威胁,并对敏感数据进行了加密处理。 8. 部署与运维:项目部署可能是在一个支持Java应用的服务器上,如Tomcat、...
- **applicationContext.xml**:Spring的核心配置文件,定义了Spring容器的bean配置。 - **hibernate.cfg.xml**:Hibernate的核心配置文件,定义了连接数据库的方式以及事务管理策略等。 - **log4j.properties**...
配置Apache httpd和Jetty教程 配置Apache mod_proxy和Jetty 配置Jetty中的AJP13 在JBoss中配置Jetty Remote Glassfish EJBs from Jetty Jetty and Spring EJB3 (Pitchfork) JBoss EJB3 ObjectWeb EasyBeans (aka ...
这些jar包包括但不限于:AspectJ的两个jar(aspectjrt.jar和aspectjweaver.jar),Oracle的数据库驱动classes12.jar,Apache的commons-logging相关库,DWR与Struts2的整合jar(dwr4struts2.jar),FreeMarker模板...
SSH2框架的过程中,我们涉及到了一套完整的开发环境与一系列关键技术组件,这包括了Eclipse3.4作为集成开发环境、Tomcat-5.5.28作为应用服务器、Mysql-5.1.49作为数据库系统,以及一个由Struts2.0、Spring2.5和...
2. **全程一体化办公系统(OA)**:基于Windows 2003、JDK 1.6、Apache Tomcat 6.0、MySQL和Eclipse开发,采用Spring3、Hibernate4、Struts2.3、jQuery、dtree、jquery-easyui和javamail。系统包含多个管理模块,利用...
10. **Apache Tomcat**: Tomcat是一个开源的Servlet容器,实现了Java Servlet和JavaServer Pages(JSP)规范,常用于开发和测试Java Web应用。 这些框架和项目不仅在开发中起到关键作用,也是面试中常见的考察点...