zoukankan      html  css  js  c++  java
  • Linux下apahe和tomcat的整合(第二版)

    [文章作者:擦肩而过 最后修改:2009.07.30  转载请注明原文链接:http://bbs.yahunet.com/thread-9856-1-1.html]
        前言:本文是我撰写的关于搭建“linux下整合apachetomcat”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扩展
    在文件最后,[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/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,最后就是用工程测试了。


    到此大功告成!!!
  • 相关阅读:
    DLL编写教程
    Ogre 配置
    LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
    C++编译,链接错误总结
    git基本操作
    实习第33天
    HTTP状态码整理
    Window下的WebStorm快捷键操作
    告别div,可以代替div的几个标签
    实习20天
  • 原文地址:https://www.cnblogs.com/top5/p/1544094.html
Copyright © 2011-2022 走看看