apache_php_tomcat基于主机名的多虚拟主机整合笔记
生活随笔
收集整理的這篇文章主要介紹了
apache_php_tomcat基于主机名的多虚拟主机整合笔记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
《apache_php_tomcat基于主機名的多虛擬主機整合筆記》
環境:rhel4 x86-64 + apache2.0.52 + php5.2.17 + jdk1.6.0_29 + tomcat6.0.35, apache為系統缺省安裝
一,php安裝,參見《rhel4_x86_64_php5.2.17_make安裝支持mysqli》-> http://blog.csdn.net/lazyclough/article/details/7103948
二, tomcat 6 安裝
1, 下載jdk-6u29-linux-i586-rpm.bin, 為其加上可執行權限并執行,jdk將安裝于/usr/java/jdk1.6.0_29
2, 下載apache-tomcat-6.0.35.tar.gz并解壓至任意目錄,如:/home/molin/program/apache-tomcat-6.0.35
3,配置java和tomcat環境變量
$ sudo vi /etc/profile, 在文件末尾加上以下內容:
###########################################################
export JAVA_HOME=/usr/java/jdk1.6.0_29
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$PATH:$JAVA_HOME/bin
export CATALINA_HOME=/home/molin/program/apache-tomcat-6.0.35
export CATALINA_BASE=$CATALINA_HOME
###########################################################
$ sudo source /etc/profile (使環境變量直接生效)
4, 將tomcat配置為系統服務
$ sudo vi /etc/init.d/tomcat
#############################################################
#!/bin/bash
#
#tomcat Startup script for the Tomcat Server
#
#set options related to chkconfig
#chkconfig: 345 80 20
#description: start the tomcat deamon
#
# Source function library
if [ -f /etc/init.d/functions ] ; then
??????? . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
??????? . /etc/rc.d/init.d/functions
else
??????? exit 0
fi
prog=tomcat
JAVA_HOME=/usr/java/jdk1.6.0_29
export JAVA_HOME
CATALINA_HOME=/home/molin/program/apache-tomcat-6.0.35
export CATALINA_HOME
# start tomcat service
case "$1" in
start)
??????? echo "Starting Tomcat ... "
??????? $CATALINA_HOME/bin/startup.sh
??????? ;;
stop)
??????? echo "Stopping Tomcat ... "
??????? $CATALINA_HOME/bin/shutdown.sh
??????? ;;
restart)
??????? echo "Stopping Tomcat ... "
??????? $CATALINA_HOME/bin/shutdown.sh
??????? sleep 2
??????? echo
??????? echo "Starting Tomcat ... "
??????? $CATALINA_HOME/bin/startup.sh
??????? ;;
*)
??????? echo "Usage: $prog {start | stop | restart}"
??????? ;;
esac
exit 0
#############################################################
$ sudo chkconfig --add tomcat??? (注:添加成服務)
$ sudo chkconfig --list tomcat
$ sudo chkconfig --del tomcat??? (注:刪除服務)
$ sudo service tomcat start????? (注:啟動服務)
三、配置apache和tomcat以整合APACHE、PHP、TOMCAT并多主機
1, 目的為完成以下功能
www.php.com 訪問 php 站點, 站點主目錄/var/www/html
www.eda.com 訪問tomcat站點1, 站點主目錄/home/molin/program/apache-tomcat-6.0.35/eda
www.flow.com 訪問tomcat站點2, 站點主目錄/home/molin/program/apache-tomcat-6.0.35/flow
2, 到http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/x86_64/下載 mod_jk-1.2.31-httpd-2.0.x.so, 注意應下載與apache版本相應的版本。
3, 復制mod_jk-1.2.31-httpd-2.0.x.so到apache模塊目錄
$ sudo cp mod_jk-1.2.31-httpd-2.0.x.so /etc/httpd/modules/
$ sudo chmod a+x mod_jk-1.2.31-httpd-2.0.x.so
4, 添加mod_jk的配置文件
a) $ sudo vi /etc/httpd/conf/mod_jk.conf
#############################################################
# 指出mod_jk模塊工作所需要的工作文件workers.properties的位置
JkWorkersFile /etc/httpd/conf/workers.properties
# Where to put jk logs
JkLogFile /etc/httpd/logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions indicate to send SSL KEY SIZE,
JkOptions? +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
#############################################################
b) $ sudo vi /etc/httpd/conf/mod_jk_to.conf
#############################################################
# 將所有servlet 和jsp請求通過ajp13的協議送給Tomcat,讓Tomcat來處理
JkMount /servlet/*? worker1
JkMount /eda/*? worker1
JkMount /*.jsp worker1
# 將所有文件均送給tomcat
JkMount /* worker1
#############################################################
c) 注:實際上以上a),b)是將一般配置的mod_jk分拆為兩個文件,以便只在虛擬主機中包含JkMount語句
5, 編輯httpd.conf
$ sudo vi /etc/httpd/conf/httpd.conf
添加以下內容:
#############################################################
LoadModule jk_module modules/mod_jk.so
Include /etc/httpd/conf/mod_jk.conf
# ........
AddDefaultCharset off?? #(注, 這條語句關閉缺省字符集,以便各站點使用自己的字符集)
# ........
NameVirtualHost *:80
<VirtualHost *:80>
??????? ServerName www.php.com
??????? DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
??????? ServerName www.eda.com
??????? DocumentRoot /home/molin/program/apache-tomcat-6.0.35/webapps/eda
??????? Include /etc/httpd/conf/mod_jk_to.conf
</VirtualHost>
<VirtualHost *:80>
??????? ServerName www.flow.com
??????? ServerAlias flow.com, *.flow.com
??????? DocumentRoot /home/molin/program/apache-tomcat-6.0.35/webapps/flow
??????? Include /etc/httpd/conf/mod_jk_to.conf
</VirtualHost>
#############################################################
6, 編輯tomcat配置文件
A) $ vi ~/program/apache-tomcat-6.0.35/conf/server.xml
a) 刪除原來的<Host></Host>節
b) 添加以下內容(#行勿拷入)
#############################################################
<Host name="www.eda.com" appBase="/home/molin/program/apache-tomcat-6.0.35/webapps/eda"
??? unpackWARs="true" autoDeploy="true"
??? xmlValidation="false" xmlNamespaceAware="false">
??? <Context path="/" docBase="/home/molin/program/apache-tomcat-6.0.35/webapps/eda"></Context>
</Host>
<Host name="www.flow.com" appBase="/home/molin/program/apache-tomcat-6.0.35/webapps/flow"
??? unpackWARs="true" autoDeploy="true"
??? xmlValidation="false" xmlNamespaceAware="false">
??? <Context path="/" docBase="/home/molin/program/apache-tomcat-6.0.35/webapps/flow"></Context>
</Host>
#############################################################
B) $ vi ~/program/apache-tomcat-6.0.35/conf/context.xml (這個步驟或許可以不要?)
將原<context>標簽內容改為:
<Context path="" docBase="/home/molin/program/apache-tomcat-6.0.35/webapps" debug="0" reloadable="true" crossContext="true">
7, 重啟服務生效(注:apache監聽于80端口, tomcat監聽于8080端口)
$ sudo service httpd restart
$ sudo service tomcat restart
8, 錯誤處理
a) service httpd restart 時報錯host路徑/home/molin/program/apache-tomcat-6.0.35/webapps/eda找不到, 此為SELinux的問題,可通過關閉SELinux對httpd daemon的保護解決,命令:$ sudo setsebool -P httpd_disable_trans true
環境:rhel4 x86-64 + apache2.0.52 + php5.2.17 + jdk1.6.0_29 + tomcat6.0.35, apache為系統缺省安裝
一,php安裝,參見《rhel4_x86_64_php5.2.17_make安裝支持mysqli》-> http://blog.csdn.net/lazyclough/article/details/7103948
二, tomcat 6 安裝
1, 下載jdk-6u29-linux-i586-rpm.bin, 為其加上可執行權限并執行,jdk將安裝于/usr/java/jdk1.6.0_29
2, 下載apache-tomcat-6.0.35.tar.gz并解壓至任意目錄,如:/home/molin/program/apache-tomcat-6.0.35
3,配置java和tomcat環境變量
$ sudo vi /etc/profile, 在文件末尾加上以下內容:
###########################################################
export JAVA_HOME=/usr/java/jdk1.6.0_29
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$PATH:$JAVA_HOME/bin
export CATALINA_HOME=/home/molin/program/apache-tomcat-6.0.35
export CATALINA_BASE=$CATALINA_HOME
###########################################################
$ sudo source /etc/profile (使環境變量直接生效)
4, 將tomcat配置為系統服務
$ sudo vi /etc/init.d/tomcat
#############################################################
#!/bin/bash
#
#tomcat Startup script for the Tomcat Server
#
#set options related to chkconfig
#chkconfig: 345 80 20
#description: start the tomcat deamon
#
# Source function library
if [ -f /etc/init.d/functions ] ; then
??????? . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
??????? . /etc/rc.d/init.d/functions
else
??????? exit 0
fi
prog=tomcat
JAVA_HOME=/usr/java/jdk1.6.0_29
export JAVA_HOME
CATALINA_HOME=/home/molin/program/apache-tomcat-6.0.35
export CATALINA_HOME
# start tomcat service
case "$1" in
start)
??????? echo "Starting Tomcat ... "
??????? $CATALINA_HOME/bin/startup.sh
??????? ;;
stop)
??????? echo "Stopping Tomcat ... "
??????? $CATALINA_HOME/bin/shutdown.sh
??????? ;;
restart)
??????? echo "Stopping Tomcat ... "
??????? $CATALINA_HOME/bin/shutdown.sh
??????? sleep 2
??????? echo
??????? echo "Starting Tomcat ... "
??????? $CATALINA_HOME/bin/startup.sh
??????? ;;
*)
??????? echo "Usage: $prog {start | stop | restart}"
??????? ;;
esac
exit 0
#############################################################
$ sudo chkconfig --add tomcat??? (注:添加成服務)
$ sudo chkconfig --list tomcat
$ sudo chkconfig --del tomcat??? (注:刪除服務)
$ sudo service tomcat start????? (注:啟動服務)
三、配置apache和tomcat以整合APACHE、PHP、TOMCAT并多主機
1, 目的為完成以下功能
www.php.com 訪問 php 站點, 站點主目錄/var/www/html
www.eda.com 訪問tomcat站點1, 站點主目錄/home/molin/program/apache-tomcat-6.0.35/eda
www.flow.com 訪問tomcat站點2, 站點主目錄/home/molin/program/apache-tomcat-6.0.35/flow
2, 到http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/x86_64/下載 mod_jk-1.2.31-httpd-2.0.x.so, 注意應下載與apache版本相應的版本。
3, 復制mod_jk-1.2.31-httpd-2.0.x.so到apache模塊目錄
$ sudo cp mod_jk-1.2.31-httpd-2.0.x.so /etc/httpd/modules/
$ sudo chmod a+x mod_jk-1.2.31-httpd-2.0.x.so
4, 添加mod_jk的配置文件
a) $ sudo vi /etc/httpd/conf/mod_jk.conf
#############################################################
# 指出mod_jk模塊工作所需要的工作文件workers.properties的位置
JkWorkersFile /etc/httpd/conf/workers.properties
# Where to put jk logs
JkLogFile /etc/httpd/logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions indicate to send SSL KEY SIZE,
JkOptions? +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
#############################################################
b) $ sudo vi /etc/httpd/conf/mod_jk_to.conf
#############################################################
# 將所有servlet 和jsp請求通過ajp13的協議送給Tomcat,讓Tomcat來處理
JkMount /servlet/*? worker1
JkMount /eda/*? worker1
JkMount /*.jsp worker1
# 將所有文件均送給tomcat
JkMount /* worker1
#############################################################
c) 注:實際上以上a),b)是將一般配置的mod_jk分拆為兩個文件,以便只在虛擬主機中包含JkMount語句
5, 編輯httpd.conf
$ sudo vi /etc/httpd/conf/httpd.conf
添加以下內容:
#############################################################
LoadModule jk_module modules/mod_jk.so
Include /etc/httpd/conf/mod_jk.conf
# ........
AddDefaultCharset off?? #(注, 這條語句關閉缺省字符集,以便各站點使用自己的字符集)
# ........
NameVirtualHost *:80
<VirtualHost *:80>
??????? ServerName www.php.com
??????? DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
??????? ServerName www.eda.com
??????? DocumentRoot /home/molin/program/apache-tomcat-6.0.35/webapps/eda
??????? Include /etc/httpd/conf/mod_jk_to.conf
</VirtualHost>
<VirtualHost *:80>
??????? ServerName www.flow.com
??????? ServerAlias flow.com, *.flow.com
??????? DocumentRoot /home/molin/program/apache-tomcat-6.0.35/webapps/flow
??????? Include /etc/httpd/conf/mod_jk_to.conf
</VirtualHost>
#############################################################
6, 編輯tomcat配置文件
A) $ vi ~/program/apache-tomcat-6.0.35/conf/server.xml
a) 刪除原來的<Host></Host>節
b) 添加以下內容(#行勿拷入)
#############################################################
<Host name="www.eda.com" appBase="/home/molin/program/apache-tomcat-6.0.35/webapps/eda"
??? unpackWARs="true" autoDeploy="true"
??? xmlValidation="false" xmlNamespaceAware="false">
??? <Context path="/" docBase="/home/molin/program/apache-tomcat-6.0.35/webapps/eda"></Context>
</Host>
<Host name="www.flow.com" appBase="/home/molin/program/apache-tomcat-6.0.35/webapps/flow"
??? unpackWARs="true" autoDeploy="true"
??? xmlValidation="false" xmlNamespaceAware="false">
??? <Context path="/" docBase="/home/molin/program/apache-tomcat-6.0.35/webapps/flow"></Context>
</Host>
#############################################################
B) $ vi ~/program/apache-tomcat-6.0.35/conf/context.xml (這個步驟或許可以不要?)
將原<context>標簽內容改為:
<Context path="" docBase="/home/molin/program/apache-tomcat-6.0.35/webapps" debug="0" reloadable="true" crossContext="true">
7, 重啟服務生效(注:apache監聽于80端口, tomcat監聽于8080端口)
$ sudo service httpd restart
$ sudo service tomcat restart
8, 錯誤處理
a) service httpd restart 時報錯host路徑/home/molin/program/apache-tomcat-6.0.35/webapps/eda找不到, 此為SELinux的問題,可通過關閉SELinux對httpd daemon的保護解決,命令:$ sudo setsebool -P httpd_disable_trans true
總結
以上是生活随笔為你收集整理的apache_php_tomcat基于主机名的多虚拟主机整合笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LINUX下文件字符集编码查看与转换并文
- 下一篇: vs2010 vc nmake编译ope