首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >linux下整合apache和tomcat

linux下整合apache和tomcat

原创
作者头像
用户1168904
修改2021-05-26 10:12:04
修改2021-05-26 10:12:04
2.2K0
举报
文章被收录于专栏:运维相关文档运维相关文档

前言:本文是我撰写的关于搭建“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 /etc/profile

末尾增加如下内容

引用:

JAVA_HOME=/usr/java/jdk1.6.0_10

export JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

export PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.ja

export 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/ap

# 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/ap

# 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/apache/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 Serve

最后,运行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扩展

在文件最后,[zend]之前,注意,这部分内容务必放在[zend]之前,不然可能会出现不可预期的服务器问题。添加下列信息:

引用:

[eaccelerator]

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/eaccelerato

# chmod 777 /tmp/eaccelerato

在浏览器中打开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 eAccelerato

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,最后就是用工程测试了

Pp#*7hN*J(*

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档