运用Vhost让单IP的VPS/ECS实现多站点功能

本文假设你已经购买了vps与域名,详细讲解绑定的过程。如果你还未购置vps或域名,电梯直达我的博文"vps选择与服务器配置".

初衷

Hello,i'm Rover Van。在最近的开发过程中我购置了vps,由于选择的是低配的vps主机,所以只有一个IP。而我遇到的问题是想要用这个vps实现两个大方面的功能,一个是作为git的仓库存放和部署代码,另一个是作为我的APP和网站的服务器端。下文是我的实现方法。

域名购买与解析

如上文所说的,因为我要实现的是单个IP两个方向上的功能,所以我购置了两个域名。域名的购置渠道很多,我是在万网处购买的。至于解析与域名绑定,可以在万网的帮助文档中寻找"如何将域名解析指向我的云主机"之类的文章,有很简洁快速的教程。
购买了两个域名之后我将这两个域名都解析指向了我的vps。当分别访问这两个域名都能跳转到vps后,就可以开始下一步的行动了。

Vhost

虚拟主机(英语:Virtual Host)(英语:Shared Web Hosting),又称虚拟服务器、主机空间或是网页空间,是一种网络技术,可以让多个主机名称(host name),在一个单一服务器(或是一个服务器组)上运作,而且可以分开支持每个单一的主机名称。虚拟主机可以运行多个网站或服务的技术。虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。

以上概念引用自维基百科。我采取了Apache下配置Vhost来支持多个站点。这个方法也可以用在你在一个服务器下想搭建多个应用。尤其当你是初学者,想要一次运行多几个应用来测试项目的时候,vhost+Apache无疑是你一个合适的选择。

配置方法

1.配置文件位置

apache2的配置文件在 /etc/apache2/apache2.conf 新版本的apache2在配置文件中是将其他配置(比如虚拟主机配置)include进来,接下来我们主要关注两个文件夹。
/etc/apache2/sites-available//etc/apache2/sites-enabled/
简单来说 sites-available存放配置文件,但是只有在sites-enabled存在对应的配置文件,该项配置才会真正被开启。

2.新建配置文件

不修改的情况下,在/etc/apache2/sites-available/ 下有个000-default.conf文件,复制两个文件,文件名为 “你的域名.conf“,即:

cp 000-default.conf www.domainnameA.com.conf 
cp 000-default.conf www.domainnameB.com.conf

其中www.domainnameA/B.com 是两个已经解析指向本主机ip的域名。

3.新建项目目录

mkdir /var/www/server
mkdir /var/www/git

/var/www 是我的apache根目录,我在该目录下新建了两个文件夹用来部署我的项目,server准备用来作存放服务器源码,git准备用来作repository。记住这两个目录路径,下一步会修改配置文件会用到。

4.修改配置文件

这里贴出我其中一个Vhost配置文件。

<VirtualHost *:80>
    ServerName www.domainnameA.com
    ServerAdmin atrovervan@gmail.com
    DocumentRoot /var/www/server
        <Directory /var/www/server>
         DirectoryIndex index.php index.html
         AllowOverride All
         Order allow,deny
         Allow from all
        </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combine
</VirtualHost>

1.ServerName 参数写的是你的域名,与文件名相同的那个。
2.DucumentRoot 参数是项目目录路径,即上一个步骤提到的目录。
3.Directory 标签后面跟着的也是项目目录路径。
4.DirectoryIndex 参数是项目目录中的首指向文件(即index文件)。

另外一个配置文件雷同,对应要修改的就是参数1~4。

5.启用配置文件

当新建与修改好 /etc/apache2/sites-available/ 下的配置文件后,我们还需要启用这个配置文件到 /etc/apache2/sites-enabled/ 才能使其真正生效。在这里使用的是 a2ensite和a2dissite两个命令来激活和注销对应的虚拟主机
激活命令是在 /etc/apache2/sites-available/ 下执行

sudo a2ensite www.domainnameA.com

注销命令是在 /etc/apache2/sites-enabled/ 下执行

sudo a2dissite www.domainnameA.com

不管是激活还是注销命令,执行后都要重启Apache服务。

sudo /etc/init.d/apache2 restart

Contact me

如果有什么错误或者建议 OR 如果需要请教关于本主题的实现问题
欢迎来邮与我交流和讨论!
Email:atrovervan@gmail.com

2016-07-02 03:39 208
Comments
Write a Comment