安裝Apache2.2
安裝Tomcat7.0
解壓PHP5.2到c:\php5(最好路徑不要有空格),在環境變量的系統變量Path後添加c:\php5;c:\php5\ext;
設置操作系統中的HOSTS文件2.設置配置文件:
(1)Apache配置:
打開Apache的conf目錄下的httpd.conf文件
查找LoadModule,在後面添加:
LoadModule php5_module c:\php5\php5apache2_2.dll
查找DocumentRoot,將後面的第一個<Directory>塊改爲:
<Directory "c:/php5">
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Satisfy all
</Directory>
查找<IfModule alias_module>塊,在後面添加:
ScriptAlias /php/ "c:/php5/"
查找<IfModule dir_module>塊,修改爲:
DirectoryIndex index.jsp index.php index.html index.htm
查找<IfModule mime_module>塊,在後面添加:
AddType application/x-httpd-php .php
Action Application/x-httpd-php "c:/php5/php.exe"
(2)PHP配置:
將PHP目錄下的php.ini-recommended文件複製一份到Apache的bin目錄下並改名爲php.ini,打開該php.ini文件
查找extension_dir,修改爲:
extension_dir = "c:\php5\ext"
查找session.save_path,去掉;,修改爲:
session.save_path = "c:\php5\session_temp"(需手動建立文件夾)
查找short_open_tag,修改爲:
short_open_tag = On
將PHP目錄下的libmysql.dll拷貝一份到Apache的bin目錄下
(3)Tomcat配置:
打開Tomcat的conf目錄下的server.xml文件
添加虛擬主機配置
<Host name="www.myproject.com" appBase="webapps" unpackWARs="true" autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="e:\workspace\project\www" path="" debug="0" reloadable="true"/>
</Host>
3.PHP模塊設置
打開Apache的bin目錄下的php.ini文件,把";extension=php_mysql.dll"前的";"去掉,加載mysql模塊,保存關閉後重啓Apache就可以了.
這裏也可以選擇其它要加載的模塊,去掉前面的";",就表示要加載此模塊了.
所有的模塊文件都放在php解壓縮目錄的"ext"之下.
加載了模塊後,就要指明模塊的位置,否則重啓Apache的時候會提示"找不到指定模塊"的錯誤,這時在"系統變量"下找到"Path"變量,加入;c:\php5;c:\php5\ext重啓電腦即可.
4.Apache虛擬主機配置
打開Apache的conf目錄下的httpd.conf文件
查找#Include conf/extra/httpd-vhosts.conf,去掉註釋.
查找LoadModule,打開下面幾行的註釋
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
打開Apache的conf目錄下的extra目錄下的httpd-vhosts.conf文件,加入
轉向php的配置
<VirtualHost *:80>
<Directory "E:/workspace/uc">
Options -Indexes FollowSymLinks
Allow from all
AllowOverride All
</Directory>
ServerAdmin [email protected]
DocumentRoot "E:/workspace/uc"
ServerName www.myuc.com
ServerAlias www.myuc.com
ErrorLog logs/www.myuc.com-error_log
php_admin_value open_basedir "E:\workspace\uc;C:\WINDOWS\Temp;"
</VirtualHost>
轉向jsp的配置
<VirtualHost *:80>
DocumentRoot "E:/workspace/project"
ServerName www.myproject.com
ServerAlias www.myproject.com
DirectoryIndex index.jsp
ProxyPass / http://www.myproject.com:8080/
ProxyPassReverse / http://www.myproject.com:8080/
</VirtualHost>
5.Apache與Tomcat集羣與負載均衡配置
(1)打開Apache的conf目錄下的httpd.conf文件
在文件的最下面加入
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:9001 loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:9002 loadfactor=1 route=jvm2
BalancerMember ajp://127.0.0.1:9003 loadfactor=1 route=jvm3
BalancerMember ajp://127.0.0.1:9004 loadfactor=1 route=jvm4
</proxy>
上面的四個BalancerMember成員是配置的Tomcat集羣
打開Apache的conf目錄下的extra目錄下的httpd-vhosts.conf文件,加入
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName 127.0.0.1
ServerAlias 127.0.0.1
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
</VirtualHost>
其中的域名和路徑根據情況設置,然後再設置Tomcat虛擬主機
(2)打開Tomcat的conf目錄下的server.xml文件(以下修改集羣中的所有Tomcat都需要操作一遍)
a.修改<Server port="8005" shutdown="SHUTDOWN">中的port值,集羣中的Tomcat的該值都不一樣.
b.修改<!-- <Engine name="Catalina" defaultHost="localhost"> -->,去掉註釋同時
把name的值改爲Standalone,加入屬性jvmRoute值爲apache的httpd.conf中<proxy>的route值,
集羣中的Tomcat的該值都不一樣(例如jvmRoute="jvm1").
c.修改<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />中的port值爲
apache的httpd.conf中<proxy>的BalancerMember ajp://127.0.0.1:後的端口號,集羣中的Tomcat
的該值都不一樣(例如port="9001"),這裏是Apache和Tomcat鏈接的關鍵,前臺Apache就是通過AJP
協議與Tomcat進行通信以完成負載均衡的作用.
d.修改<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>爲
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">
<Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" mapSendOptions="6"/>
<!--
<Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>
-->
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="5001" selectorTimeout="100" maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
以上修改中<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="5001" selectorTimeout="100" maxThreads="6"/>中的port值,集羣中的Tomcat的該值都不一樣,以上修改設置主要用以Tomcat的集羣.