歡迎您光臨本站 註冊首頁

Linux下apahe和tomcat的整合(第二版)

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

Linux下apahe和tomcat的整合(第二版)

[文章作者:擦肩而過 最後修改:2009.07.30  轉載請註明原文鏈接:http://bbs.yahunet.com/thread-9856-1-1.html]
    前言:本文是我撰寫的關於搭建「linux下整合apache和tomcat」Web伺服器的第2篇文章。比Linux下apahe和tomcat的整合(第一版)沒有什麼大的變化,增加了GD庫、Zend、eaccelerator加速等,測試了一些PHP和JSP的知名開源程序,sablog、shopex、phpcms、discuz、ucenter_home、lybbs等都可以正常運行。
    Apache和Tomcat同是Apache基金會下面的兩個項目。
    一個是HTTP WEB伺服器,另一個是servlet容器(servlet container)。在我們生產的環境中,往往需要Apache做前端伺服器,Tomcat做後端伺服器。此時我們就需要一個連接器,這個連接器的作用就是把所有Servlet/JSP的請求轉給Tomcat來處理。在Apache2.2之前,一般有兩個組件可選擇:mod_jk和mod_jk2。後來 mod_jk2沒更新了,轉而更新mod_jk,所以現在一般都使用mod_jk做Apache和Tomcat的連接器。
不過,自從Apache2.2出來后,你又多了種選擇,那就是proxy-ajp。大家知道Apache里的proxy模塊,可以實現雙向代理功能,功能非常強大。其實從連接器的實現原理上來說,用proxy模塊來實現是非常自然的。proxy模塊的功能無非就是把相關的請求發給特定的主機再返回結果。那連接器的功能需求就是要把所有對Servlet/JSP的請求都轉給後台的Tomcat。

安裝步驟
系統要求:Linux 2.6+ 內核,本文中的Linux操作系統為CentOS 4.7,另在RedHat AS4上也安裝成功

一、獲取相關開源程序:
所需軟體:
引用:
eaccelerator-0.9.5.2.tar.bz2
gd-2.0.35.tar.gz
httpd-2.2.9.tar.gz
mysql-5.0.67.tar.gz
php-5.2.6.tar.gz
ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz
jdk-6u7-linux-i586-rpm.bin
apache-tomcat-6.0.14.tar.gz
apr-1.3.3.tar.gz
apr-util-1.3.4.tar.gz
eaccelerator-0.9.5.2.tar.bz2
-----------------------------------------------------------------------------------------------------------------------
安裝之前要確保系統中安裝了以下這些包。
我們可以用rpm -qa |grep 來查看系統是否裝
引用:
bzip2-devel
zlib-devel
libjpeg-devel
libpng-devel
libtiff-devel
freetype-devel
openssl-devel
libxml2-devel
gettext-devel
這些包一般都安了,除了最後一個,我們可以在光碟里找到用rpm -ivh 來安裝上.

二、安裝JDK
引用:
# pwd
/usr/local
# chmod a+x jdk-6u7-linux-i586-rpm.bin
# ./jdk-6u7-linux-i586-rpm.bin
# ln -s /usr/java/jdk1.6.0_07 /usr/local/java
設置環境變數

# vi profile
末尾增加如下內容
引用:
JAVA_HOME=/usr/java/jdk1.6.0_07
CLASSPATH=/usr/java/jdk1.6.0_07/lib/dt.jar:/usr/java/jdk1.6.0_07/lib/tools.jar
PATH=/usr/java/jdk1.6.0_07/bin:$PATH
export PATH JAVA_HOME CLASSPATH
保存退出
引用:
# source /etc/profile
驗證:
引用:
#  java -version
三、安裝MYSQL
引用:

# tar -zxvf mysql-5.0.67.tar.gz
# cd mysql-5.0.67
# groupadd mysql
# useradd -g mysql -s /sbin/nologin -M mysql
# ./configure --prefix=/usr/local/mysql --with-charset=gbk --with-extra-charset=all --enable-thread-safe-client
# make && make install
# cp support-files/my-medium.cnf  /etc/my.cnf
# chown -R mysql.mysql /usr/local/mysql/
# /usr/local/mysql/bin/mysql_install_db --user=mysql
# chown -R root.root /usr/local/mysql/
# chown -R mysql.mysql /usr/local/mysql/var/
啟動資料庫服務,並添加到自啟動
引用:
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
# netstat -ant             查 看3306埠
加入自動啟動服務隊列:
引用:
#cp  support-files/mysql.server  /etc/rc.d/init.d/mysqld
#chmod  755  /etc/rc.d/init.d/mysqld
#chkconfig --add mysqld
#chkconfig  --level  345  mysqld  on
添加root密碼
引用:
# /usr/local/mysql/bin/mysqladmin -u root password "123456"
測試一下:
引用:
# /usr/local/mysql/bin/mysql -u root -p
輸入密碼:123456,看能不能進入到資料庫

配置庫文件搜索路徑
引用:
# echo "/usr/local/mysql/lib/mysql">>/etc/ld.so.conf
# ldconfig
# ldconfig -v
#echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
#source /etc/profile
四、安裝Apr和Apr-util
引用:
# tar -zxvf apr-1.3.6.tar.gz
# cd apr-1.3.6
# ./configure  --prefix=/usr/local/apr
# make
# make install
# tar -zxvf apr-util-1.3.8.tar.gz
# cd apr-util-1.3.8
# ./configure  --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make
# make install
五、安裝GD2
引用:

# tar -jxvf gd-2.0.35.tar.bz2
# cd gd-2.0.35
# ./configure --prefix=/usr/local/gd --with-png --with-freetype --with-jpeg --with-zlib --with-fontconfig
#make
#如果GD報錯:configure.ac:64: warning: macro `AM_ICONV' not found in library
你就make clean一下,然後再make
#make install
六、安裝Apache
引用:
# tar xzvf httpd-2.2.9.tar.gz
# cd httpd-2.2.9
# ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-proxy --enable-proxy-ajp --enable-proxy-balancer --enable-proxy-connect --enable-proxy-http --with-mpm=worker --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
# make
# make install
# /usr/local/apache/bin/apachectl start
添加到自啟動
引用:
# cp /usr/local/www/bin/apachectl /etc/rc.d/init.d/httpd
然後 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)
# chkconfig: 2345 10 90
# description: Activates/Deactivates Apache Web Server
最後,運行chkconfig把Apache添加到系統的啟動服務組裡面:
# chkconfig --add httpd
# chkconfig httpd on
七、安裝Tomcat
引用:
# cp apache-tomcat-6.0.20.tar.gz /usr/local/
# cd /usr/local/
# tar xzvf apache-tomcat-6.0.20.tar.gz
# ln -s apache-tomcat-6.0.20 tomcat
#vi /usr/local/tomcat/bin/catalina.sh
加入一行:
引用:
JAVA_HOME=/usr/java/jdk1.6.0_14
# /usr/local/tomcat/bin/startup.sh

啟動服務后訪問本地的8080埠可以看到對應apache tomcat頁面了

把Tomcat加到自啟動:
vi /etc/rc.d/rc.local
在裡面加入如下代碼:
引用:
export JDK_HOME=/usr/java/jdk1.6.0_14
export JAVA_HOME=/usr/java/jdk1.6.0_14
/usr/local/tomcat/bin/startup.sh
八、安裝PHP
引用:

#tar zxvf php-5.2.5.tar.gz
#cd php-5.2.5
# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-gd=/usr/local/gd --with-config-file-path=/usr/local/php --enable-mbstring=all
# make
# make install
# cp php.ini-recommended /usr/local/php.ini
整合apache與php
# vi /usr/local/apache/conf/httpd.conf

找到AddType application/x-gzip .gz .tgz在其下加以下內容
引用:
AddType application/x-httpd-php .php
查找:(設置WEB默認文件)
DirectoryIndex index.html
改成:
引用:
DirectoryIndex index.php index.jsp index.html index.htm
保存退出
引用:
service httpd restart
然後在目錄中建一個文件用來測試php情況
在htdocs目錄下建一個測試頁
引用:

vi index.php
<?php
phpinfo();
?>
保存退出
重啟apache


九、安裝Zend
引用:

# tar zxvf ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz
# cd ZendOptimizer-3.3.0a-linux-glibc21-i386
# ./install.sh
出現一個界面
OK點回車
安裝協議直接回車
YES回車

然後問你php的配置文件,我們前面已經知道是在/etc下所以直接回車
問你是用apache伺服器嗎,當然用選YES
問apche的控制命令在哪 /usr/local/apache/bin/apachectl
然後開始裝有進度條但很快,然後到一個有/etc/php.ini-zend_optimizer.bak備份的界面選OK
go on "OK"
問你是否重新啟動apache選YES
提示apache啟動成功點"OK"
安裝完成
我們再輸入IE看那個測試頁Zend是否載入成功。
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies
with Zend Optimizer v3.3.0, Copyright (c) 1998-2007, by Zend Technologies
沒有zend之前是這樣的:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies就是這樣的。


十、安裝eaccelerator加速軟體

eaccelerator是php的加速軟體,使用后php的執行效率會有很大幅度的提升。目前eaccelerator0.9.5.2已經和ZendOptimizer-3.3.0能夠基本上兼容啦。
引用:

# tar jxvf eaccelerator-0.9.5.2.tar.bz2
# cd eaccelerator-0.9.5.2
# /usr/local/php/bin/phpize
# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
# make
# make install
編譯安裝后我們會看到屏幕提示的eaccelerator.so所在的目錄,php5.2.x系列是在/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/,記住這個路徑,待會要用到。

修改php.ini(安裝完zend之後,php.ini存入於/usr/local/Zend/etc)

# vi /usr/local/zend/etc/php.ini

安裝php擴展
在文件最後,之前,注意,這部分內容務必放在之前,不然可能會出現不可預期的伺服器問題。添加下列信息:
引用:

extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
重啟apache然後在IE還是那個php測試頁,zend哪又有沒有變化如沒有,說明這種方法沒有好用。
然後mkdir /tmp/eaccelerator
# chmod 777 /tmp/eaccelerator

在瀏覽器中打開phpinfo()那個測試頁,如果出現以下內容,證明安裝成功!
引用:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
with eAccelerator v0.9.5.2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies
with Zend Optimizer v3.3.0, Copyright (c) 1998-2007, by Zend Technologies
最後就可以把網站工程放在/usr/local/htdocs目錄下進行測試了。
OK~~全部結束!!!!


十一、Tomcat 與Apache 的整合

# vi httpd.conf
在文件末尾增加一下兩行
引用:
ProxyPass / ajp://127.0.0.1:8009/
ProxyPassReverse / ajp://127.0.0.1:8009/
這裡要注意的是如果沒有虛擬主機的話在http.conf中直接加以上兩行如果有就不加了。
如果做虛擬主機的話如果是JSP 加其它不加
例:
vi /usr/local/apache/conf/http.conf
把:
#Include conf/extra/httpd-vhosts.conf
去掉註釋保存
然後vi /usr/local/apache/conf/extra/httpd-vhosts.conf

把:
引用:

NameVirtualHost :80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost :80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>
<VirtualHost :80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/usr/local/apache/docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
ErrorLog "logs/dummy-host2.example.com-error_log"
CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
改成:
引用:

NameVirtualHost  192.168.1.100:80
<VirtualHost 192.168.1.100:80>
ServerName bbs.yahunet.com
DocumentRoot "/usr/local/apache/htdocs/bbs"
ErrorLog /usr/local/apache/htdocs/yahunet/error_log
CustomLog /usr/local/apache/htdocs/yahunet/access_log common
</VirtualHost>
<VirtualHost 192.168.1.100:80>
ServerName www.syitren.com
DocumentRoot "/usr/local/apache/htdocs/syitren"
ErrorLog /usr/local/apache/htdocs/syitren/error_log
CustomLog /usr/local/apache/htdocs/syitren/access_log common  
</VirtualHost>
注:加這兩行日誌要注意就是在相應的路徑下一定要建
ServerAlias 是別名也就是域名這裡需注意的是在不是JSP工程時虛擬主機只改httpd-vhosts.conf加上就可以而JSP工程不但在這得加還要在server.xml中也要加具體方法看下面的。
以上是PHP的但如果是JSP
引用:
<VirtualHost 192.168.1.100:80>
ServerName bbs.syitren.com
DocumentRoot "/usr/local/tomcat/webapps/wz"
ErrorLog /usr/local/apache/htdocs/syitrenbbs/error_log
CustomLog /usr/local/apache/htdocs/syitrenbbs/access_log common
ProxyPass / ajp://127.0.0.1:8009/
ProxyPassReverse / ajp://127.0.0.1:8009/
</VirtualHost>
這裡就得加這兩行而且還得在tomcat配置文件server.xml中也得做虛擬主機目錄和這個要一致。
server.xml中這麼加:
引用:
<Host name="www.syitren.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false"  xmlNamespaceAware="false">
  <Context path="" docBase="/usr/local/apache/htdocs/syitren/" debug="0" reloadable="true" crossC/>  
  <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="www_5sai_log." suffix=".txt"
timestamp="true"/>
</Host>
OK,最後就是用工程測試了。


到此大功告成!!!
《解決方案》

樓主辛苦了
謝謝分享

[火星人 ] Linux下apahe和tomcat的整合(第二版)已經有551次圍觀

http://coctec.com/docs/service/show-post-21323.html