标签归档:php

Apache与Tomcat整合

软件版本:

Apache_2.2.9-win32-x86-no_ssl-r2.msi

Php-5.2.6-Win32.zip

Mysql-5.1.26-rc-win32.zip

安装目录:

D:/xmlinux/webapp

PHP配置:

1)将D:”xmlinuxer”webapp”php5″目录下的libmysql.dllphp5ts.dll两个文件复制到C:”WINDOWS”system32″下;

2)将D:”xmlinuxer”webapp”php5″ext”目录下的php_gb2.dllphp_mysql.dll php_mbstring.dll复制到C:”WINDOWS”system32″下;

3)将D:”xmlinuxer”webapp”php5″中的php.ini-destphp.ini-recommended重命名为php.ini复制到C:”WINDOWS”system32″下;

4)改配置文件php.ini,具体包括:

i.extension_dir=”/”改为 extension_dir=”F:/ProgramFiles/PHP5.2/ext”;

ii.去掉下面三个表达式前面的“;”,改后如下:

extension=php_gd2.dll

extension=php_mbstring.dll

extension=php_mysql.dll

iii.;date.timezone = 修改为 date.timezone = PRC

Apache配置httpd.conf文件

加入支持php5mysql的代码:

LoadFile D:/xmlinuxer/webapp/php5/libmysql.dll

LoadModule php5_module D:/xmlinuxer/webapp/php5/php5apache2_2.dll

PHPIniDir “D:/xmlinuxer/webapp/php5″

AddType application/x-httpd-php .php

整合Apache Tomcat

方案一:mod_jk模块实现

适用于较低版本,在Apache2.2.*以后的的版本上无法成功实现ApacheTomcat的整合,即使编译模块通过了的话(网上很多文档都是用这种方法的资料,而且都大同小异,我试过了。。。可以模块可以编译通过,但是其实根本实现不了,因为现在mod_jk模块最高版本只支持到Httpd-2.2.4版本的而已,所以对于Apache版本高一点就的话就根本没有mod_jk与之对应的模块实现)所以对此方案测试并不能成功实现。

方案二:mod_proxy代理模块实现

Apache2.2.*以上版本本身已经支持Tomcat了,所以这里用mod_proxy来整合Tomcat打开httpd.conf文件,把

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

前面的#去掉, 并在文件最后添加

ProxyPass / ajp://127.0.0.1:8009/

ProxyPassReverse / ajp://127.0.0.1:8009/

这样做的话就相当于Apache把所有80端口的请求都转发给了Tomcat8009ProxyPass /  ajp://127.0.0.1:8009/ ProxyPassReverse  /  ajp://127.0.0.1:8009/),都由Tomcat处理请求,这时的Apache只相当于一个转发器的作用,由Tomcat解析。此时要是关闭Tomcat服务,再访问还会出现503 Service Temporarily Unavailable 错误!

Service Temporarily Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

但是我们想实现的是将请求中静态的页面交给Apache处理,动态请求交给Aomcat处理。因为他们在各自的处理效率上比较高,这才是整合ApacheTomcat的真正目的作用。

这里要实现将html交给Apache处理,而把jsp转发给Tomcat处理。还需要多刚刚修改的httpd.conf进行完善,排除掉Tomcat对静态文件的解析过滤。

即在刚刚的 ProxyPass /  ajp://127.0.0.1:8009 前面加入一行

ProxyPass /web/ !

插入这行配置的意思是表示/web/下的文件的请求不转发到Tomcat进行解析直接由Apache解析。此时只要把不想转发到Tomcat处理的放在Apache安装目录下htdoc 下名为web文件夹里即可。

附录:

Mod-proxy的缺点是,当其中一台tomcat停止运行的时候,apache仍然会转发请求过去,导致502网关错误。但是只要服务器再启动就不存在这个问题。如果前置Apache代理服务器停止运行,所有集群服务将无法对外提供。

Mod-proxy优点是.可以只将Apache置于公网,节省公网IP地址资源。可以通过设置来实现Apache专门负责处理静态网页,让Tomcat专门负责处理JSPservlet等动态请求。

参考资料:IBM Developer Works中关于Apache HTTP Server Tomcat 的三种连接方式介绍的描述

Ubuntu 8.04里LAMP手动编译安装架构纪录

之前在ubuntu8.04架构LAMP环境的时候都是用包装好的直接新立得进行一步安装搞定。就只有最初刚接触Linux的时候在RedHat下尝试使 用源码手动编译配置安装,但是当初编译了一个晚上最终还是以失败告终就是,对于里头提示缺少类库等问题很是陌生,虽然网上资料很多,但是操作起来每个人有 每个人不同的问题会出现,个人觉得有时问题还是更重要需要自己去一个个的处理掉,这样印象更深刻些,也是唯一措施可以处理好自己所遇到的问题的。

步入正题:

一、mysql安装配置

root@xmlinuxer-server:/media/WinF/LAMP#groupadd mysql
root@xmlinuxer-server:/media/WinF/LAMP#useradd -g mysql mysql
root@xmlinuxer-server:/media/WinF/LAMP#tar -zxvf mysql-5.0.33.tar.gz
root@xmlinuxer-server:/media/WinF/LAMP#cd mysql-5.0.33
root@xmlinuxer-server:/media/WinF/LAMP/mysql-5.0.33#./configure --prefix=/opt/app/mysql5 --without-debug --without-bench --with-charset=utf8 --with-extra-charsets=all --with-plugins=fthightman --enable-thread-safe-client

如果出现了以下错误:

checking for tgetent in -ltermcap... no

checking for termcap functions library… configure: error: No curses/termcap library found

说明 curses/termcap 库没有安装
apt-cache search curses | grep lib
安装 libncurses5-dev ,然后重新运行配置
apt-get install libncurses5-dev

或者方法二

去下载一个ncurses-5.6.tar.gz,
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
tar zxvf ncurses-5.6.tar.gz
cd ncurses-5.6
./configure –prefix=/usr –with-shared –without-debug
make
make install clean

然后再重新编译Mysql进行安装。

root@xmlinuxer-server:/media/WinF/LAMP/mysql-5.0.33#make
root@xmlinuxer-server:/media/WinF/LAMP/mysql-5.0.33#make install
root@xmlinuxer-server:/media/WinF/LAMP/mysql-5.0.33#cp support-files/my-medium.cnf /etc/my.cnf //复制数据库mysql的配置文件
root@xmlinuxer-server:/media/WinF/LAMP/mysql-5.0.33#cp support-files/mysql.server /etc/init.d/mysql

Ubuntu 系统下貌似没有/etc/rc.d这目录 嗯 其他的Linux系统可能是/etc/rc.d/init.d/mysql

root@xmlinuxer-server:/media/WinF/LAMP/mysql-5.0.33#cd /opt/app/mysql5
root@xmlinuxer-server:/opt/app/mysql5#bin/mysql_install_db --user=mysql
root@xmlinuxer-server:/opt/app/mysql5#chown -R root . //不要少了后面那个“.”咯
root@xmlinuxer-server:/opt/app/mysql5#chown -R mysql var
root@xmlinuxer-server:/opt/app/mysql5#chgrp -R mysql .

root@xmlinuxer-server:/opt/app/mysql5/share/mysql# service mysql start
程序 ’service’ 已包含在以下软件包中:
* debian-helper-scripts
* sysvconfig
试试:apt-get install
bash: service:找不到命令

解决措施:安装下这两个软件包就ok啦 #apt-get install sysvconfig debian-helper-scripts

root@xmlinuxer-server:/opt/app/mysql5#bin/mysqld_safe --user=mysql & 或者 service mysql start 启动数据库
root@xmlinuxer-server#/opt/app/mysql5/share/mysql/mysql.server stop 或者 service mysql stop 停止数据库

二、安装apache完整配置

root@xmlinuxer-server:/media/WinF/LAMP#tar -zxvf httpd-2.2.4.tar.gz //解压包
root@xmlinuxer-server:/media/WinF/LAMP#cd httpd-2.2.4
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4#./configure --prefix=/opt/app/apache2 --enable-so --with-mysql=/opt/app/mysql5 --enable-cgi --with-config-file-path=/opt/app/apache2/conf --enable-track-vars --enable-mods-shared=all --enable-cache --enable-disk-cache --enable-mem-cache --enable-rewrite --with-mpm=worker --with-z-dir=/opt/app/zlib //配置编译参数

这里涉及到关于zlib的安装,下载zlib-1.2.3.tar.gz包编译安装下zlib于/opt/app/zlib下
具体如下:
root@xmlinuxer-server:/media/WinF/LAMP#tar -zxvf zlib-1.2.3.tar.gz
root@xmlinuxer-server:/media/WinF/LAMP#cd zlib-1.2.3
root@xmlinuxer-server:/media/WinF/LAMP/zlib-1.2.3#./configure --prefix=/opt/app/zlib
root@xmlinuxer-server:/media/WinF/LAMP/zlib-1.2.3#make
root@xmlinuxer-server:/media/WinF/LAMP/zlib-1.2.3#make install

然后继续编译安装apache环境

root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4#make
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4#make install
root@xmlinuxer-server:/opt/app/apache2# bin/apachectl start
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

因为在httpd的配置文件里面没有制定主机名,所以才会出现这个提示
用浏览器访问一下本地试试(http://127.0.0.1),屏幕上正常就会显示:It works !

三、安装php前GD库的安装:

1.安装 jpeg6
需要自己建立目录
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# mkdir /opt/app/jpeg6
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# mkdir /opt/app/jpeg6/bin
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# mkdir /opt/app/jpeg6/lib
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# mkdir /opt/app/jpeg6/include
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# mkdir /opt/app/jpeg6/man
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# mkdir /opt/app/jpeg6/man/man1
root@xmlinuxer-server:/media/WinF/LAMP/httpd-2.2.4# cd..
root@xmlinuxer-server:/media/WinF/LAMP# tar -zxvf jpegsrc.v6b.tar.gz
root@xmlinuxer-server:/media/WinF/LAMP# cd jpegsrc.v6b
root@xmlinuxer-server:/media/WinF/LAMP/jpegsrc.v6b#./configure --prefix=/opt/app/jpeg6/ --enable-shared --enable-static
root@xmlinuxer-server:/media/WinF/LAMP/jpegsrc.v6b# make; make install

2.安装 libpng
root@xmlinuxer-server:/media/WinF/LAMP/jpegsrc.v6b# cd ..
root@xmlinuxer-server:/media/WinF/LAMP# tar -jxvf libpng-1.2.8.tar.bz2
root@xmlinuxer-server:/media/WinF/LAMP# cd libpng-1.2.8
root@xmlinuxer-server:/media/WinF/LAMP/libpng-1.2.8# cp scripts/makefile.std /media/WinF/LAMP/libpng-1.2.8/makefile
root@xmlinuxer-server:/media/WinF/LAMP/libpng-1.2.8# make; make install

3.安装 freetype
root@xmlinuxer-server:/media/WinF/LAMP/libpng-1.2.8# cd ..
root@xmlinuxer-server:/media/WinF/LAMP# tar -zxvf freetype-2.3.2.tar.gz
root@xmlinuxer-server:/media/WinF/LAMP# cd freetype-2.3.2
root@xmlinuxer-server:/media/WinF/LAMP/freetype-2.3.2# ./configure --prefix=/opt/app/freetype
root@xmlinuxer-server:/media/WinF/LAMP/freetype-2.3.2# make;make install

4.安装libXML2
root@xmlinuxer-server:/media/WinF/LAMP/freetype-2.3.2# cd ..
root@xmlinuxer-server:/media/WinF/LAMP# tar -jxvf libxml2-2.6.24.tar.bz2
root@xmlinuxer-server:/media/WinF/LAMP# cd libxml2-2.6.24
root@xmlinuxer-server:/media/WinF/LAMP/libxml2-2.6.24# ./configure --prefix=/opt/app/libxml
root@xmlinuxer-server:/media/WinF/LAMP/libxml2-2.6.24# make
root@xmlinuxer-server:/media/WinF/LAMP/libxml2-2.6.24# make install

5.安装 GD2
root@xmlinuxer-server:/media/WinF/LAMP/libxml2-2.6.24# cd ..
root@xmlinuxer-server:/media/WinF/LAMP# tar -zxvf gd-2.0.34.tar.gz
root@xmlinuxer-server:/media/WinF/LAMP# cd gd-2.0.34
root@xmlinuxer-server:/media/WinF/LAMP/gd-2.0.34#./configure --prefix=/opt/app/gd --with-jpeg=/opt/app/jpeg6 --with-png=/usr/local/lib --with-zlib=/opt/app/zlib --with-freetype=/opt/app/freetype
root@xmlinuxer-server:/media/WinF/LAMP/gd-2.0.34# make
root@xmlinuxer-server:/media/WinF/LAMP/gd-2.0.34# make install

#安装PHP完整配置

root@xmlinuxer-server:/media/WinF/LAMP#tar -zxvf php-5.2.0.tar.gz
root@xmlinuxer-server:/media/WinF/LAMP#cd php-5.2.0
root@xmlinuxer-server:/media/WinF/LAMP/php-5.2.0#./configure --prefix=/opt/app/php5 --with-libxml-dir=/opt/app/libxml --with-gd=/opt/app/gd --with-jpeg-dir=/opt/app/jpeg6 --with-zlib-dir=/opt/app/zlib --with-libpng-dir=/usr/local/lib --with-freetype-dir=/opt/app/freetype --enable-mbstring --with-apxs2=/opt/app/apache2/bin/apxs --with-mysql=/opt/app/mysql5 --with-config-file-path=/opt/app/php5/etc

可能会有提示错误,编译安装下flex包:#apt-get install flex 再重新编译下就OK啦

root@xmlinuxer-server:/media/WinF/LAMP/php-5.2.0#cp php.ini-dist /opt/app/php5/etc/php.ini
root@xmlinuxer-server:/media/WinF/LAMP/php-5.2.0#make
root@xmlinuxer-server:/media/WinF/LAMP/php-5.2.0#make install