大多数互联网创业公司都会遇到一个VPS或一台服务器放多个网站供不同域名进行访问的需求,这篇文章就从实战的角度为大家介绍如果实现这一需求。

准备工作

1.一台linux服务器或虚拟主机,网络环境畅通,且服务器已经安装了yum相关的软件。
2.linux服务器jdk、tomcat已经正常安装。

安装部分
#-安装apache(我这里的apache是2.2.3的)
#因为要编译安装与apache有关的内容<如php,mod_jk>,因此需要httpd-devel以获得APXS binary
 

  1. yum -y install httpd httpd-devel 

#安装完apache后,在/var/www/html文件夹中放入index.html,如果通过http://localhost/index.html能正常访问此文件,表示apache安装成功
#安装php及php相关软件包(如php连接mysql的函数包、图片处理gd包、国际化mbstring包,一些安装类型的php源程序需要这些包)

  1. yum -y install php php-mysql php-gd php-mbstring 


(我这里的php是,5.1.6的,其他包也是针对此版本的php的安装包)
#安装完毕后,在/var/www/html中放入两php文件,test.php,test1.php,代码如下
#test.php
 

  1. <?php phpinfo() ?> 

#test1.php
 

  1. <?php   
  2.  $link=mysql_connect('localhost','root','123456');//写自己的数据连接信息哦  
  3.  if(!$link) echo "error";  
  4.  else echo "success";  
  5.  mysql_close();  
  6. ?> 

#如果test.php能够访问,表示php安装成功;如果test1.php访问成功,表示php-mysql安装成功
#-下载并编译安装tomcat-connectors(我使用的是1.2.37)
#下载tomcat-connectors
 

  1. wget http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.37-src.tar.gz

#上传文件到linux服务器,解压
 

  1. tar -xzf tomcat-connectors-1.2.37-src.tar.gz 

#切换到tomcat-connectors的安装目录
 

  1. cd tomcat-connectors-1.2.37-src/native 

#执行安装(注意,前面安装apache是一定要有http-devel,否则不会生成apxs二进制文件。另如果apache使用编译安装,其apxs文件默认在/usr/local/apache2/bin/apxs)
 

  1. ./configure–with-apxs=/usr/sbin/apxs
  2. make
    make install

#拷贝生成的apache连接tomcat的.so文件到apache对应的目录
 

  1. cp apache-2.0/mod_jk.so /etc/httpd/modules 

 

 

配置部分
#-配置apache
#-修改httpd.conf,在一堆LoadModule的附近加上下面这句话
LoadModule jk_module modules/mod_jk.so

#-创建mod_jk.conf文件,内容如下:
#指出mod_jk模块工作所需要的工作文件workers.properties的位置
JkWorkersFile /etc/httpd/conf.d/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"
# 将所有请求通过ajp13的协议送给Tomcat,让Tomcat来处理
JkMount /* worker1

#在对应的位置/etc/httpd/conf.d/创建workers.properties,内容如下:
# Defining a worker named worker1 and of type ajp13
worker.list=worker1
# Set properties for worker1
worker.worker1.type=ajp13
worker.worker1.host=127.0.0.2
#Tomcat AJP服务对应的端口
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300

#在httpd.conf配置虚拟主机
#×××虚拟主机监听
#此项配置是说,如果通过test.com域名访问到此台服务器,则按照jk-map.properties配置的内容进行转发处理
<VirtualHost *:80>
     ServerName test.com
     JkMountFile /etc/httpd/conf.d/jk-map.properties
     DirectoryIndex index.action
</VirtualHost>

#此项配置是说,如果通过test1.com域名访问到此台服务器,则自动转发到/var/www/html目录中,此目录中放的就是php网站的代码
#Directory标签中的内容,是对此目录的权限做一些培训,比如,“关闭显示文件列表”
<VirtualHost *:80>
     ServerName test1.com
     DocumentRoot /var/www/html
     DirectoryIndex index.html
     <Directory "/var/www/html">
      Options FollowSymLinks
      AllowOverride None
      Order allow,deny
      Allow from all
    </Directory>
</VirtualHost>

#如果没有在虚拟主机中进行配置的域名,统一都会根据mod_jk.conf中的配置进行转发,这里mod_jk.conf配置
#对所有的请求都转发到work1的配置中,使用其他域名访问此服务器时,会转发到tomcat中进行处理。

#配置tomcat
#tomcat的安装这里就不说了,只要注意tomcat的server.xml的端口不要和apache的80端口冲突就行,另外,AJP13一定要配置,如下所示(仅列出关键部分)
<Connector port="8088" protocol="HTTP/1.1"
               maxThreads="150" connectionTimeout="20000"
               redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

#最后,修改本地的host,使test.com,test1.com均指向127.0.0.1
#如果访问http://test.com到tomcat的默认页面,访问http://test1.com到index.html页面,则表示安装成功。