大多数互联网创业公司都会遇到一个VPS或一台服务器放多个网站供不同域名进行访问的需求,这篇文章就从实战的角度为大家介绍如果实现这一需求。
准备工作
1.一台linux服务器或虚拟主机,网络环境畅通,且服务器已经安装了yum相关的软件。
2.linux服务器jdk、tomcat已经正常安装。
安装部分
#-安装apache(我这里的apache是2.2.3的)
#因为要编译安装与apache有关的内容<如php,mod_jk>,因此需要httpd-devel以获得APXS binary
- yum -y install httpd httpd-devel
#安装完apache后,在/var/www/html文件夹中放入index.html,如果通过http://localhost/index.html能正常访问此文件,表示apache安装成功
#安装php及php相关软件包(如php连接mysql的函数包、图片处理gd包、国际化mbstring包,一些安装类型的php源程序需要这些包)
- 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
- <?php phpinfo() ?>
#test1.php
- <?php
- $link=mysql_connect('localhost','root','123456');//写自己的数据连接信息哦
- if(!$link) echo "error";
- else echo "success";
- mysql_close();
- ?>
#如果test.php能够访问,表示php安装成功;如果test1.php访问成功,表示php-mysql安装成功
#-下载并编译安装tomcat-connectors(我使用的是1.2.37)
#下载tomcat-connectors
#上传文件到linux服务器,解压
- tar -xzf tomcat-connectors-1.2.37-src.tar.gz
#切换到tomcat-connectors的安装目录
- cd tomcat-connectors-1.2.37-src/native
#执行安装(注意,前面安装apache是一定要有http-devel,否则不会生成apxs二进制文件。另如果apache使用编译安装,其apxs文件默认在/usr/local/apache2/bin/apxs)
- ./configure–with-apxs=/usr/sbin/apxs
- make
make install
#拷贝生成的apache连接tomcat的.so文件到apache对应的目录
- 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页面,则表示安装成功。