这里主要变化的就是配置tomcat不用连接模块了,关于这个tomcat,我印象最深的是有一次在公司郁闷了,就去中国移动面试,那的技术主管问:你用过tomcat和apache整合吗?我说接触过没研究,只用resin,然后他问我那tomcat开的端口有哪些,都是做什么的呢?我说这个我得查资料,其实主要就是8005、8009、8080这三个端口。呵呵,结果可想而知--我由于不知道tomcat的启动端口而被PASS了。其实想想也挺可笑的,我说的都是实话,技术人员吗,不可能什么都在脑子里,咱们中国人常说:好脑子不如烂笔头。所以我有记录的习惯,什么都习惯写下来,脑子只要记住该记的就行了,呵呵,不过我劝诸位想找个好归宿的还是要有好脑子,最好过目不忘,要不找工作的时候也很危险呦!!还有你觉不觉得找工作看英语过几级,到底有多少人在工作里非要和英语亲密接触呢?我就是,哈哈,但我有dr.eye,呵呵,无奈了...
废话少说,让咱们开始以配置这个曾经把我PASS的环境吧 :)
第一章:MAP安装、测试、优化、安全
1、Mysql安装
我的版本选择是mysql-4.0.25.tar.gz,选择这个OLD版本是因为我其他机器的数据库也是这个版本,这样相互导来导去方便点。按我如下傻瓜方式安装吧。
# tar xzvf mysql-4.0.25.tar.gz
# cd mysql-4.0.25
# useradd mysql -s /sbin/nologin
# CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --with--charset=gbk --with-extra-charsets=all;make;make install
睡会儿吧!大概5分钟。--我的1850差不多是这样。为什么用这些参数,请参考
./configure --help
# cp support-files/my-huge.cnf /etc/my.cnf
# cd /usr/local/mysql
# bin/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql var
# chgrp -R mysql .
# bin/mysqld_safe --user=mysql &
# /usr/local/mysql/bin/mysqladmin -u root password 'hahaha'
# mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with or \g.
Your MySQL connection id is 2 to server version: 4.0.25-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>use mysql
Database changed
mysql> delete from user where Password='';
Query OK, 3 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
# cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d
# chmod 500 /etc/rc.d/init.d/mysql.server
# cd /etc/rc.d/rc3.d
# ln -s ../init.d/mysql.server S99mysql
# ln -s ../init.d/mysql.server K99mysql
Mysql安装完了,那我们开始装apache2.2.0
2、安装apache-2.2.0
到这我们就要说说APR了,这个东西是Apache可移植运行库,源自为了服务器代码的多平台性, 尝试将不同的操作系统特定字节与操作系统无关代码隔离。结果就提供了一个基础API的接口。具体作用大家可参考http://fanqiang.chinaunix.net/app/web/2006-02-21/4012.shtml文章。apache-2.2.0提供了apr以及apr-util的源代码
要使用发行源代码中自带的apr/apr-util源代码进行安装,你必须手动完成:
我们先编译和安装 apr 1.2
# tar xzvf httpd -2.2.0.tar.gz
# cd httpd-2.2.0
# cd srclib/apr
# ./configure --prefix=/usr/local/apr
# make
# make install
现在编译和安装 apr-util 1.2
# cd ../apr-util
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
# make
# make install
开始安装配置 apache,在这里我们需要一个mod_proxy_ajp模块,这个是为整合tomcat用的,用2.2.0就是美,哈哈。
cd ../../
# ./configure --prefix=/usr/local/httpd220 --enable-so --enable-rewrite=share --enable-proxy=share --enable-proxy-ajp=share --enable-dav=share --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/
# make
# make install
现在让我们查看编译进apache的模块:
# cd /usr/local/httpd220/bin
# ./httpd -l
我们要的mod_proxy_ajp.c也在其中就可以了。
现在不用配置apache的conf文件,我们直接安装php,我用的是4.4.2版本
# cd /usr/local/httpd220/bin
# cp apachectl /etc/init.d/httpd
# cd /etc/rc3.d
# ln -s ../init.d/httpd S85httpd
# ln -s ../init.d/httpd K85httpd
3、安装php
# tar xzvf php-4.4.2.tar.gz
# cd php-4.4.2
# ./configure --prefix=/usr/local/php442 --with-apxs2=/usr/local/httpd220/bin/apxs --with-config-file-path=/usr/local/php442 --with-mysql=/usr/local/mysql --with-mail --sysconfdir=/usr/local/php442/etc --with-gd --with-zlib --with-png --with-jpeg --with-freetype --enable-sockets
# make;make install
cp php.ini-dist /usr/local/php442/php.ini
4、安装modsecurity(mod_security 可以加强apache的安全性,特别是在防sql 注入上有很好的效果。)
下载站点:http://www.modsecurity.org/download/
# tar zxvf modsecurity-apache-1.9.2.tar.gz
# cd modsecurity-apache-1.9/apache2/
# /usr/local/httpd220/bin/apxs -cia mod_security.c
打开httpd.conf查看是否有如下文字加入
LoadModule security_module modules/mod_security.so
如没有则加上去
在httpd.conf中添加下列一段mod_security的配置文件
SecFilterEngine On
SecFilterCheckURLEncoding On
SecFilterDefaultAction "deny,log,status:500"
#SecFilterForceByteRange 32 126
#SecFilterScanPOST On
SecAuditLog logs/audit_log
###
SecFilter "\.\./"
#####
SecFilter /etc/*passwd
SecFilter /bin/*sh
#for css attack
SecFilter "<( | )*script"
SecFilter "<(.| )+>"
#for sql attack
SecFilter "delete[ ]+from"
SecFilter "insert[ ]+into"
SecFilter "select.+from"
SecFilter "union[ ]+from"
SecFilter "drop[ ]"
5、apache2 安装 mod_evasive 防DDOS攻击
mod_evasive 的前身就是mod_dosevasive
下载站点:http://www.nuclearelephant.com/projects/mod_evasive
# tar zxvf mod_evasive_1.10.1.tar.gz
# cd mod_evasive
# /usr/local/httpd220/bin/apxs -cia mod_evasive20.c
打开httpd.conf查看是否有如下文字加入
LoadModule evasive20_module modules/mod_evasive20.so
如没有则加上去
在httpd.conf中添加下列一段mod_security的配置文件
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
6、配置httpd.conf
注意2.2.0里默认是如下的用户和组,而不是原来的nobody
User daemon
Group daemon
ServerAdmin xu1701@hotmail.com 这个地方配置成你自己的信箱
ServerName YourDomainName:80 这个地方把#号打开,红色的地方你自己编辑
documentRoot "/usr/local/httpd220/htdocs" 这个地方你换成自己的WEB路径
Options Indexes FollowSymLinks 这个地方你把Indexes 去掉,除非你想把你的文件显示出来
DirectoryIndex index.html index.jsp index.php index.htm 这个地方加三个主页文件名
搜索AddType application,找到后在
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
下加一行,因为我们用了PHP了吗!哈哈。
AddType application/x-httpd-php .php
7、启动apache,看看我们的结果
首先进入你自己的documentRoot,建立一个文件test.php,内容是
# /usr/local/httpd220/bin/apachectl start
访问http://Your ip/test.php
如果看到php信息界面,那么恭喜你,你的MAP初步配置好了。还有什么,优化啊!
8、php速度优化
我们先要安装Zend Optimizer,此程序可以从Zend Technologies的网站(http://www.zend.com/)免费得到。它的原理很简单,通过检测Zend引擎产生的中间代码,并且优化它来得到更高的执行速度。我认为优化代码是一项颇烦琐的工作,而且优化后的代码可能变得难以理解,因此我建议你在PHP的源代码较为复杂的时候,用Zend Optimizer来做这个优化的工作,好处是它不会令你的代码变得复杂难懂。
安装Zend Optimizer是非常简单的。我们需要先下载
ZendOptimizer-2.6.0-linux-glibc21-i386.tar.gz
# tar xzvf ZendOptimizer-2.6.0-linux-glibc21-i386.tar.gz
# cd ZendOptimizer-2.6.0
# ./install
这样就可以安装了,不过如果你不用vnc这样的远程桌面显示,可能安装起来很费劲,所以我建议你用VNC来安装。安装后会自动在你的php.ini加入如下六行,根据路径不同,你的可能和我的路径不完全一致:
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-2_6_0
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-2_6_0
zend_optimizer.version=2.6.0
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
我们修改一下zend_optimizer.optimization_level的参数(实际只有这个参数用我们修改),这个参数是表示优化程度的,这里定义启动多少个优化过程,默认值是 15 ,表示同时开启 10 个优化过程中的 1-4 ,我们可以将这个值改为 1023 ,表示开启全部10个优化过程。
zend_optimizer.optimization_level=1023
重新启动apache,如果执行test.php时看到
Zend Technologies with Zend Optimizer v2.6.0,那么就说明以已经应用了。
优化完了,我们还需要加速代码执行过程。由于turck-mmcache的作者已经被zend招安了,turck-mmcache很久没有更新了。我们这次介绍另一个不错的开源优化php代码软件eAccelerator。
安装很简单,跟我一步一步来
先到http://eaccelerator.net/wiki/下载最新版本,目前是eaccelerator-0.9.4
# unzip eaccelerator-0.9.4.zip
# export PHP_PREFIX="/usr/local/php442"
# cd eaccelerator-0.9.4
# $PHP_PREFIX/bin/phpize
# ./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
# make
# make install
安装完成后你会看到下面这么一句,注意你的路径可能和我是不相同的。
/usr/local/php442/lib/php/extensions/no-debug-non-zts-20020429/
然后我们要配置php.ini,根据您系统的情况,一般有两种安装方式,一种按照Zend的扩展,一种是PHP扩展。如果是前者,请在您的 php.ini 中加入以下代码:
zend_extension="/usr/local/php442/lib/php/extensions/no-debug-non-zts-20020429/eaccelerator.so"
eaccelerator.shm_size="16"
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"
如果您的系统打开了安全模式,必须使用, "zend_extension_ts" 取代 "zend_extension".
PHP扩展安装模式,请在您的 php.ini 中加入
extension="/usr/local/php442/lib/php/extensions/no-debug-non-zts-20020429/eaccelerator.so"
eaccelerator.shm_size="16"
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"
修改后保存,开始创建cache文件夹
# mkdir /tmp/eaccelerator
# chmod 0777 /tmp/eaccelerator
重新启动apache,如果访问test.php你看到
eAccelerator v0.9.4, Copyright (c) 2004-2004 eAccelerator, by eAccelerator with Zend Extension
那就成功了。
第二章:Jdk+Tomcat安装及配置
1、Jdk安装
Jdk 是Java开发工具包 (Java Development Kit ) 的缩写。它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。
Jdk是一切java应用程序的基础,所有的java应用程序是构建在这个之上的。它是一组API,也可以说是一些java Class。
下载站点:http://java.sun.com/j2se/1.5.0/download.jsp
最新版本:JDK 5.0 Update 6
下面开始安装
# rpm -qa | grep libgcj
libgcj-3.2.3-53
libgcj-ssa-devel-3.5ssa-0.20030801.48
libgcj-ssa-3.5ssa-0.20030801.48
libgcj-devel-3.2.3-53
# rpm -e gcc-java-3.2.3-53
# rpm -e libgcj-devel
# rpm -e redhat-lsb
# rpm -e gettext-0.11.4-7
# rpm -e libgcj
# chmod +x jdk-1_5_0_06-linux-i586-rpm.bin
# ./jdk-1_5_0_06-linux-i586-rpm.bin
# vi ~/.bash_profile
把其改成如下:
JAVA_HOME=/usr/java/jdk1.5.0_06
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
BASH_ENV=$HOME/.bashrc
TOMCAT_HOME=/usr/local/tomcat
USERNAME="root"
export USERNAME BASH_ENV PATH JAVA_HOME CLASSPATH TOMCAT_HOME
使环境变量起作用
# source ~/.bash_profile
# java
# javac
如果java 和javac运行了,说明java环境变量配置成功。
2、Tomcat安装
下载站点:http://apache.linuxforum.net/dist/jakarta/tomcat-5/
最新版本5.5.16
# tar zxvf apache-tomcat-5.5.16.tar.gz
# mv apache-tomcat-5.5.16 /usr/local/tomcat
tomcat这个东西几乎是解压以后就能跑了
3、配置tomcat及apache整合
# vi /usr/local/tomcat/conf/web.xml
把上面的文字加到
为了配置文件的可读性,我们再次修改apache配置文件,把如下开关打开
vi /usr/local/httpd220/conf/httpd.conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
# vi /usr/local/httpd220/conf/extra/httpd-vhosts.conf
NameVirtualHost YourIp:80
DirectoryIndex index.jsp
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
ServerAdmin Yourname@DOMAIN
ServerName YourIp
ServerAlias www
ErrorLog logs/YourIp-error_log
CustomLog logs/YourIp-access_log common
4、启动tomcat和apache
# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.5.0_06
# /usr/local/httpd220/bin/apachectl restart
5、访问测试
我们访问http://YourIp/,看到什么?
如果你能看到tomcat默认页面,那么恭喜你,tomcat和apache整合成功了。
第三章:Mysql连接池的加入及测试
下载最新的mysql-connector-java-3.1.12.tar.gz
# tar xzvf mysql-connector-java-3.1.12.tar.gz
# cd mysql-connector-java-3.1.12
# cp mysql-connector-java-3.1.12-bin.jar /usr/local/tomcat/common/lib
# vi ~/.bash_profile
修改
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar 为
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:/usr/local/tomcat/common/lib/mysql-connector-java-3.1.12-bin.jar
更新bash
# . ~/.bash_profile
我们一会用刚才那个虚拟主机测试一下
# mkdir /usr/local/httpd220/htdocs/test
# cd /usr/local/httpd220/htdocs/test
# vi index.jsp 内容如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost:3306/mysql?user=root&password=YorPass&useUnicode=true&characterEncoding=GB2312";
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from user";
ResultSet rs=stmt.executeQuery(sql); %>
您的第一个字段内容为: | 您的第二个字段内容为: |
<%=rs.getString(1)%> |
<%=rs.getString(2)%> |
<%out.print("Tomcat+JDK+mySQL完整测试,恭喜你,数据库操作成功!");%>
<%rs.close();
stmt.close();
conn.close();
%>
# vi /usr/local/tomcat/conf/server.xml
name="test">
docBase="."
path=""
reloadable="true">
# vi /usr/local/httpd220/conf/extra/httpd-vhosts.conf
修改这个虚拟主机的配置为如下:
DirectoryIndex index.jsp
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
ServerAdmin xu1701@hotmail.com
ServerName 211.100.30.238
ServerAlias www
ErrorLog logs/211.100.30.238-error_log
CustomLog logs/211.100.30.238-access_log common
重新启动tomcat和apache,访问http://Your Ip/
如果出现个错误页面,提示
Host 'Your host name' is not allowed to connect to this MySQL server
那么你只要在mysql下执行
mysql> grant all on *.* to root@ Your host name identified by "hahaha";
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
如果看到
您的第一个字段内容为: 您的第二个字段内容为:
localhost root
Your host name root
Tomcat+JDK+mySQL完整测试,恭喜你,数据库操作成功!
那么恭喜你,一切OK,可以开始你的页面设计和制作了。