前言:
好象在CU发PDF写得多好都加不了精华,原创的提示也不见了,我是个挺虚荣的人,一看什么都没了,那得赶紧写个东西加精华吧,哈哈,最近发现CU讨论apache2.2.0的帖子日益加温,正好几天前给客户做了一套系统,把心得告诉大家,省得大家多走冤枉路。这里主要变化的就是配置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的接口。具体作用大家可参考文章。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 注入上有很好的效果。)
下载站点: # 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下载站点: # 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访问 ip/test.php如果看到php信息界面,那么恭喜你,你的MAP初步配置好了。还有什么,优化啊!
8、php速度优化我们先要安装Zend Optimizer,此程序可以从Zend Technologies的网站()免费得到。它的原理很简单,通过检测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.安装很简单,跟我一步一步来先到下载最新版本,目前是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.下载站点:最新版本: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安装下载站点:最新版本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
javaEncoding GB18030
把上面的文字加到3上方为了配置文件的可读性,我们再次修改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、访问测试我们访问,看到什么?
如果你能看到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 内容如下:
您的第一个字段内容为:您的第二个字段内容为:
# vi /usr/local/tomcat/conf/server.xml appBase="/usr/local/httpd220/htdocs/test" name="test"> crossContext="true" 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,访问 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,可以开始你的页面设计和制作了。
本文来源:错新网[]