设为首页 收藏本站
查看: 944|回复: 0

[经验分享] php+apache+tomcat+spring+dwr配置

[复制链接]

尚未签到

发表于 2017-1-5 09:09:38 | 显示全部楼层 |阅读模式
  我原来有一个网络应用,现在想上一个论坛,对比了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了,才会进行后续的配置,稳当多了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-324050-1-1.html 上篇帖子: Apache 各种崩溃、错误情况手记 下篇帖子: 钟爱apache的我,dbcp让我伤心
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表