APACHE环境下同IP多域名虚拟主机的设置方案全攻略[ubuntu 12, linux]

时间:2024-04-15 13:33:12

近来由于工作的需要, 已经利用源代码编译的方式进行LAMP环境的配置工作(详见本博的另一篇文章), 现在所要做就是在该环境下安装一个商城系统(magento), 现有的条件是已经有了VPS,和域名解析也已经完成(关于域名解析还有一段曲折的经历,下文有述). 最简单的方案肯定是把这套商城系统的安装文件直接传到服务器的根目录下, 然后就可以直接访问这个域名安装了, 但是这个是最笨的方案, 毕竟买一个VPS的目的不只是为了装这一个系统, 还有为后续的其他CMS的安装打算, 为了实现这个目标并且考虑到将来服务器的扩展性, 最有效的方法就是在这个VPS上配置虚拟主机, 这样方便以后再加若干个网站或者论坛等CMS系统.   这样可以使VPS的使用性价比更高, 更科学. apache服务器设置虚拟主机的方法有以下几种:

Apache实现基于IP地址的虚拟主机(每个站点拥有一个独立IP地址),使用这种虚拟主机的方案, 首先要在服务器上为每个虚拟主机单独设置一个IP地址, 这些IP地址可以通过增加多具网卡或者一个网卡上设置多个IP地址来完成, 有了多个IP地址,可以通过以下两个方案来完成:
1).为每个虚拟主机运行一份Apache, 采用这种方案, 每个apache程序都可以单独地运行, 因此各个虚拟主机之间互不影响. 设置这种虚拟主机时,只要为每一份apache设置一套配置文件就可以, 唯一要注意的是, 必须使用"Listen"语句, 强制每一个apache仅仅属于"自己"的IP地址上接收服务请求. 其优点是各个虚拟主机之间互不干扰, 安全性高.其缺点是占用系统资源多
2). 多个虚拟主机共享一个apache, 由于它是各虚拟主机共享一份配置文件, 所以各虚拟主机之间有一定的影响, 特别是执行CGI程序时, 可能会带来一些严重的安全问题. 其优点是占用系统资源比前一种方案少; 缺点是安全性低, 每个虚拟主机仍需要占用一个IP地址;
 2 Apache实现基于主机名的虚拟主机服务(一个IP地址实现多个网站,也是本文的重点内容),使用这种虚拟主机, 是比较实用的实现方案, 因为它不需要很多的IP地址, 不需要什么特殊的软硬件支持, 现在的大多数浏览也支持这种虚拟主机的实现方法, 它实现的原理是根据客户端提交的HTTP头中的关于主机名的部分决定的. 通过这种方案, 可以实现多个虚拟主要享用同一个IP地址, 其优点是只要有一个IP地址即可以提供大量的虚拟主机服务; 缺点是安全性差, 维护这些主机时需要更改配置文件, 并且需要重新启动Apache服务才能起作用. 因为不太适合有大量正在运行虚拟主机服务的服务器使用;按照这个思路并结合我们的实际情况, 一个商城系统对应一个IP地址, 这样来看,就是属于一个同IP对应多域名的原则; 还有一点,就是不要在服务器上进行测试, 否则在测试过程中引起服务器宕机就会很麻烦的. 个人建议在本地配置一个与服务器完全一致的环境, 在本地测试通过后再按照同样的方案移植到服务器上去.这是最科学合理的方案, 具体来说, 你可以在本机上装一个虚拟机, 然后在虚拟机里进行搭配测试环境, 进行开发测试. 相信搞开发的对这个不陌生. 具体的VM的安装方法因为比较简单,所以从略, 在其上安装与服务器上一致的环境也是同样的方法, 所以不赘述.默认的本地测试环境和服务器的一致; 下面进入正题.

具体到我的环境, Ubuntu的Apache的配置文件是 /etc/apache2/apache2.conf, 里面涵盖了所有的配置信息, Apache在启动时会自动读取这个文件的配置信息。而其他的一些配置文件,如 httpd.conf等,则是通过Include指令包含进来。在apache2.conf中可以找到这些Include行, 

要配置apache环境,要找到配置文件httpd.conf, 它的位置是在/etc/apache2/目录下, 等你打开就会发现, 它原来是空文件, 那它的配置文件肯定是在另外的文件夹内, 通过查询得知, 它的配置文件是/etc/apache2/sites-available/default, 与之对应的是/etc/apache2/sites-enabled这个文件夹, 如果查询它的属性的话,会发现这个文件夹是一个链接类型的文件,如下图:

注意看一下红线标注的l, 那个是链接文件的标志. 也就是说, 相关的配置是必须要在sites-available/这个里面进行配置, 然后链向sites-enabled这个文件夹, 然后才能被apache识别并执行. 这样的配置文件对调试调用都很方便,但是如果事先不知道,找起来也有点麻烦. 既然明白了其中的流程, 下面的工作就很好做了. 先进入sites-available, 然后利用cp命令拷贝default, 利用这个文件进行修改, 使之符合我们的要求:

看一下里面的文件:

需要注意的是, 你要在/var/www/test4文件夹内添加test4_access.log, test4_error.log这两个基本的文件(用作日志纪录),还有一个简单的index.html, index.php.之类的文件,其用途是报告你的配置正确与否;

建立完成后保存, 然后下一步就是要链向sites-enabled这个文件夹了, 其命令是:

ln -s sites-available/test4 sites-enabled/test4

关于ln命令在本博里也有详述, 这样就完成了文件的对应关系. 其实为了安全起见,可以把sites-available/test4的文件直接拷贝到sites-enabled/test4. 这样也可以完成它们的对应关系, 下一步,就要重启apache了, 其命令:

/etc/init.d/apache2 restart

出现这样的提示:

 

说明重启成功了. 然后要进行测试了. 切莫激动, 还有一步比较重要的事情,由于我们是在本地测试, 所以需要在本地的HOSTS里进行设置一下, 由于我是XP系统, HOSTS的位置在c:\WINDOWS\system32\drivers\etc\HOSTS, 用记事本打开, 在最底处填写一下

IP(你本地ubuntu的IP)    域名(你自己编写的)

如: 192.168.224.143 www.test4.com

然后在浏览器中输入www.test4.com,看一下效果;

大功告成!!