|
/*一直很想搞个PHP + MYSQL +APACHE FREEBSD的做虚拟主机,这里先转载个别人的,以后自己要用的时候可以参考一下。*/
系统: freebsd6.1-p3 apache22 pure-ftp mysql jdk15 resin3.0.19 防火墙ipfw 开了若干虚拟主机,也一并实现了 JSP 功能 步骤如下: 系统安装和apache22的安装和配置就不用说了,这里有很多也很简单,大家自己搜一下吧。我都是用PORTS安装的 (BSD我已经升级过源码,PORTS也已经升级过) 一、安装JDK 1、安装 cd /usr/ports/java/jdk15 make install clean 注:会提示你缺少以下几个文件,要自己下载并放到 /usr/ports/distfiles 下,下载地址也会有提示 (1)jdk-1_5_0-src-scsl.zip (2)jdk-1_5_0-bin-scsl.zip (3)j2sdk-1_4_2_12-linux-i586.bin ---这个开始没有提示缺少,后面会有提示,最好一并下载并放到 /usr/ports/distfiles 目录下 2、安装中间可能还会提示一个错误,具体的提示我说不住了,但里面有一个 linux_base-8-8.0_14 的字样,还会告诉你一个 pkd_del 的命令,如果出现这个提示,你就输入下面这个命令: pkd_delete -f linux_base-8-8.0_14 然后再接着输入:(当面一定要还在 /usr/ports/java/jdk15目录,输入 pwd 查看) make deinstall make reinstall clean 以后如果还有提示错误(我安装的时候再没有了),详细查看提示文字,解决之后输入: make deinstall make reinstall clean (还要保证在 /usr/ports/java/jdk15目录) 注:这个安装的过程比较漫长,尤其是在编译CPP文件的时候,大家一定要耐心等待, 3、安装成功后,输入以下命令验证: java -version 如果出现: java version "1.5.0-p3" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-p3-XXXX_07_aug_2006_12_59) Java HotSpot(TM) Client VM (build 1.5.0-p3-XXXX_07_aug_2006_12_59, mixed mode) 说明安装成功 二、安装RESIN 1、安装 因为我安装的是apache22,所以在安装前要手动修改 resin3 的安装文件。如果你装的是apache13或apache20,可能不需要修改。 如果不修改可能会出现无法和apache整合的情况,原因就是安装完resin后没有自动修改httpd.conf文件和填加相应的so文件,有的安装完resin后无法和apache整合,可能就是这个原因。 cd /usr/ports/www/resin3 ee Makefile (1)找到 WITH_APACHE2?= 这一行,将后面的 NO 修改为 YES (2)找到 BUILD_DEPENDS+= ${APXS}{PORTSDIR}/www/apache2 和 PLIST_SUB+= MOD_DIR=libexec/apache2 这二行,改成: BUILD_DEPENDS+= ${APXS}{PORTSDIR}/www/apache22 PLIST_SUB+= MOD_DIR=libexec/apache22 保存退出。 这样安装的时候,它才会正动修改你的 httpd.conf 文件增加 LoadModule caucho_module libexec/apache22/mod_caucho.so 这一行;并在你的 /usr/local/libexec/apache22 中填加 mod_caucho.so 文件。 然后输入: make install clean 可能会出现 resin-3.0.19.tar.gz 无法下载的情况,这时要手动下载此文件,并放到 /usr/ports/distfiles/ 下,然后重新输入: make install clean 这个很快的,完成后如果出现: -------------------------------------------------------------------------------- ADVANCED USAGE If you need to pass special options to Java, please set the resin3_flags option in /etc/rc.conf, see examples below: # Prevent Java from opening an X11 display resin3_flags="-Djava.awt.headless=true" # Increase memory limit of the Java virtual machine resin3_flags="-Xms32m -Xmx256m" # Run Java with remote debugging turned on on port 8000 resin3_flags="-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000" The Resin Apache module mod_caucho has been activated in the Apache configuration file, where you should also add a line to specify the location of the Resin configuration server, for example: <IfModule mod_caucho.c> ResinConfigServer localhost 6802 </IfModule> ******************************************************************************** 说明你的resin已经安装成功了,e_e 这时按照提示修改 httpd.conf 文件,在最下面填加: <IfModule mod_caucho.c> ResinConfigServer localhost 6802 </IfModule> 注:httpd.conf中还有一项需要修改,就是 Servername 这项,改成 Servername localhost 即可 (2)修改resin3.sh文件: cd /usr/local/etc/rc.d ee resin3.sh 找到 resin3_enable=${resin3_enable:-"NO"} 这一行,改成 resin3_enable=${resin3_enable:-"YES"},保存退出 输入: ./resin3.sh start (3)重启 apache cd /usr/local/etc/rc.d/ ./apache22.sh restart (4)JSP网页测试 http://IP/index.jsp 或 http://IP:8080/index.jsp 如果想在输入网址的时候不用加 index.jsp 在 httpd.conf 中加入 index.jsp 的索引即可 三、如果自动启动 resin 安装完 resin 后,它会提示你在 rc.conf 中加入 resin3_enable="YES" ,可我试过,加入之后并不能自动随系统启动 resin,还需要手动启动才可,所以这个不用加入到 rc.conf 中去,并用如下方法解决: cd /etc ee rc.local (没有的话就自己建立这个文件) 输入: /usr/local/etc/rc.d/resin3.sh start 然后重启 reboot 可以输入 top 查看,如果有 java ,说明已经启动成功! 四、防火墙IPFW的设置 如果装有IPFW防火墙,一定要在规则中填加 ipfw add 10006 allow tcp from any to me 8080 in 规则,否则无法实现 JSP 功能的调用。(在关掉了resin的8080端口的webserver功能后,就不用加了) 本例已经本人测试通过,当然朋友们在安装的时候可能还会遇到其它的问题,欢迎我们一起讨论,把所有的问题都解决掉。 补充: 以上的安装有一个问题,就是Resin完全接管了apache的功能,成了独立的webserver,如果想要apache和resin分管html、php和jsp的话,还要接着改一下: 1、可以关掉resin的8080端口,直接通过http://localhost/index.jsp的方式访问,这时apache只是起到了转发的功能,当然在访问静态页面或php页面的时候,还是通过apache来执行的 我用的是resin3.0.19版,低于此版的朋友可对照做相应修改 cd /usr/local/etc/resin3 ee resin.xml 找到: <!-- The http port --> <http server-id="" host="*" port="8080"/> 将其改为: <!-- The http port <http server-id="" host="*" port="8080"/> --> 也就是把这行给注释掉,这样就不启用resin的webserver功能了。 2、还是这个文件,接着找到下面这行: <srun server-id="" host="127.0.0.1" port="6802"/> 将其改为: <srun server-id="" host="localhost" port="6802"/> 这个是关键的,如果不改,则只能通过8080才能访问jsp页面(8080没有关掉的情况下),这个就是和你的httpd.conf中的 "ServerName localhost" 和 “ResinConfigServer localhost 6802”相对应,原来我也是没改,一直搞不好,改了之后,重启resin和apache,OK了。 注:这个可以用多个端口来实现平衡负载功能 比如: <srun server-id="" host="localhost" port="6801"/> <srun server-id="" host="localhost" port="6802"/> <srun server-id="" host="localhost" port="6803"/> <srun server-id="" host="localhost" port="6804"/> 当然你也要在httpd.conf做对应的设置才行: ResinConfigServer localhost 6801 ResinConfigServer localhost 6802 ResinConfigServer localhost 6803 ResinConfigServer localhost 6804 3、如果你用apache做了虚拟主机,还要改下面,使它和apache的保持一致: cd /usr/local/etc/resin3 ee resin.xml 找到: <!-- configures the default host, matching any host name --> <host id="" root-directory="."> <!-- - configures an explicit root web-app matching the - webapp's ROOT --> <web-app id="/" document-directory="webapps/ROOT"/> </host> 改成和你主机中对应的,如果有多个,就填加多段就行了: <!-- configures the default host, matching any host name --> <host id="XXX.XXX.XXX" root-directory="."> <!-- - configures an explicit root web-app matching the - webapp's ROOT --> <web-app id="/" document-directory="/usr/local/www"/> </host> 注:重启的时候最好先kill掉java,kill -9 ID 然后再 ./resin2.sh start ./apache22.sh restart 再注:做了负载平衡后,输入 netstat -an 会发现有很多127.0.0.1的连接,我个人感觉这个应该是做了负载平衡之后的正常连接现象吧,也请CU里的朋友们提示一下,呵呵 |