如果你购买了一个云服务器,那么你一定不满足于只是在上面建一个网站。云服务器的功能很强大,最近流行的小程序完全可以挂载在云服务器上。本文将从修改Apache服务文件 httpd.conf 出发,手把手教你如何在一个服务器上建立多个网站域名指向。
图文 / 丁建雄
小白是单纯为兴趣而写作的独立创作人,如果您喜欢小白的文章,欢迎关注、交流、分享(引用请链接到本文)。
多站点配置概念
还是从最基本的入手,先弄清楚我们的目的是什么?
我们购买了一个云服务器之后,供应商会提供给我们一个公网IP地址,比如:115.159.107.214 。
这个IP地址其实是我们云服务器专属的IP入口,外部网络访问这个IP地址其实访问的是云服务器上特定的入口文件。比如,在CentOS系统的Apache服务器端,默认的服务器入口文件URL为 /var/www/html/index.html
。
一般来讲,如果我们只是建立一个网站,那么只要在相应的文件夹下面存入我们需要展示的网页就行了。但是,更多时候,我们可能对这个服务器配置有更多的要求,比如挂载多个网站。
举个例子,我们现在有两个域名:sample1.com 和 sample2.com ,我们想要达到的效果是:输入不同的域名,打开不同的网站(其实也就是对应于不同的服务器入口文件)。
要达到这样的效果,有哪些可行的思路呢?
复杂的就不提了,简单的配置方式主要有两种:
- 将同一个IP的不同端口映射到不同的虚拟主机,即不同端口映射到不同的站点;
- 将同一个端口映射成不同的域名,即不同的域名映射到不同的站点。
根据域名分配的多站点配置
大家可以简单理解上述两种情况:根据端口划分、根据域名名称划分。
在Windows平台下面的多站点配置,推荐大家参考 刘亚壮博客专栏 。他这边的配置方式也是按照这两种方法来实现的,写得很详细(虽然有些步骤我认为是不必要的,但是没有错误的步骤,他的方法能走通)。本文的配置环境是CentOS。
本文主要介绍的是第二种情况。小白认为,由于外部网络是主要通过域名访问的,因此,虽然两种方法都能走通,但是第二种方法却是最接近真实状况的。下面就跟着小白的步伐一步步完成这个多站点的配置任务吧!
第一步:找到 httpd.conf 配置文件
文件所处位置 /etc/httpd/conf
这个是最关键的,不要找错了,网上有很多博客写的地址是错误的,或者系统环境不同,要对号入座。
第二步:下载 httpd.conf 并打开
小白使用的云服务器文件管理工具是 FileZilla ,这其实是一个FTP下载上传工具(至于如何FTP登陆云服务器,各位请自行百度啦~)。
找到远程站点 下的 httpd.conf 文件,然后下载到本地站点 。
下载完成后,右键选择打开方式——使用记事本或者 Notepad++ 打开。
第三步:修改 hpptd.conf 配置文件
配置文件比较长,将配置文件翻页到最后,可以看到一些说明文字:
这里面从 section3 开始,就是多站点配置的说明文件。这里面给出了一个参考的示例:
#
# ServerAdmin [email protected]
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#
这里面是比较完整的示例,其实,对于小白来讲,有些参数文件大部分时候不需要,因此可以稍作精简,只留下必不可少的部分,便于大家理解。
回到之前的问题:
我们现在有两个域名:sample1.com 和 sample2.com* ,我们想要达到的效果是:输入不同的域名,打开不同的网站*
下面是最精简代码:
NameVirtualHost *:80
DocumentRoot /var/www/html/sample1 #指定sample1网站文件存放目录
ServerName sample1.com #指定访问域名为sample1.com
DocumentRoot /var/www/html/sample2 #指定sample2网站文件存放目录
ServerName sample2.com #指定访问域名为sample2.com
将这些代码直接复制到 httpd.conf 文件最后即可。
在这里,大家应该发现了,小白这边跟官方文档相比少了很多东西,但是,亲测功能项目一个不少,大家可以放心使用(如果有需要详细log文件的小伙伴,也可以按照官方文档补齐哦,文件夹自己定义即可)
第四步:上传修改后的配置文件
将现在的 httpd.conf 文件上传到之前下载的位置,并覆盖原始文件,刷新服务器。
请注意!还没好!
很多博客里面都漏掉了一点,那就是需要重启 Apache 服务,重启 Apache 服务的指令是:
service httpd restart
这个是需要在CentOS命令窗口登录的,小白在Windows上使用的登录工具是 Putty(官网上不去了,这里能下载)。
服务重启之后,在浏览器里面输入这两个域名,就可以链接到相对应的网站了。
OK,大功告成!
故事分享
小白在学习这块的时候,一直被卡着,尝试了很多种博客大神的办法,都没能成功。
前前后后看了几十篇文章,也看过官方参考文献。
后来,搁置了几个月之后,在前一篇文章学习文件上传的时候,得到刷新 的启发,才想到或许是相似的可能的原因。
后来,在一个论坛里面,有人提到,最后还需要重启 Apache 服务最终才能大功告成。
一试,成功了!
看来,很多时候,大家做一件事,很多人做了前99%,但是总是忽略那最后的1%。所以大家都能了解,却鲜有人能真正做成功。做成一件事并不难,要善始善终,而不能光说不做。心中有货,却不能将想法变成现实,那想法终究只是空想,这也是我现在做这件事的意义。
技术帖,不到关键时刻,没人会愿意去看,而往往技术帖都是雪中送炭。这么多年下来,享用了前辈们的成果,现在也该留下点东西了。
那些最真挚的东西,总是在你最落魄的时候,依然如故守护在你身边的。
参考文献
Apache_Virtual Hosts
刘亚壮博客专栏
Jaromír Chalabala