手写网站,网站不能总是放在远程服务器上,这样的话测试起来可能会比较麻烦,一次次连接 ftp,一次次通过一个反人类的界面操作目录结构,一次次地等待……
这样效率太低了有木有!
尤其是,当你的站点中包含了子域的时候,用绝对路径引用,如果不做测试服务器的话,就不得不上传,测试,更改,再上传。宛然一个怪圈。(至于为什么会有子域什么的,参见另一篇博文:网站规划)
所以,我的办法是:
- 在本地搭建一台测试用 web服务器,保持与站点相同或相似的配置。
- 在本地搭建一台 DNS 服务器,在测试的时候,配置域名指向本机。
由于个人习惯原因,主要以 os x 平台来演示。 windows 上操作雷同。
搭建web服务器:
平台:Apache+PHP 经典配置,本地可以先不装 MySQL
具体的配置方法,请自行 google。只做基本配置即可。
花点时间看看 apache 和 php 官网的文档,会非常有帮助。
特殊的配置:
- 在 Apache 中配置子站点。比如,我在站点中分离了图片服务,所有的图片源均指向 image.sincegrown.com。因此,在本地配置的时候,也需要建立相应地服务器,并建立相应地目录结构
- 为了方便调试未来的脚本,需要开启 php 的 XDebug。以 eclipse 为例,参考以下博文:
搭建 DNS 服务器:
其实这一块才是本文的重点。
对于子站点,为了方便调试,我试过很多办法。最初的时候,没有什么好的本地化方法,只好先用绝对路径。临上传的时候再手动修改路径。这个方法实在是又笨又累。于是开始探索,搜索。Dreamweaver 这种比较全能的 IDE好像也不提供这个功能(也或许是我没找到)。在搜索引擎上搜索,也没有找到什么好用的方法。于是自己思索出这么一个 DNS 招数来。
具体的思路就是:
- 将本机 DNS 服务列表顶端添加本机 ip;
- 在本机启动 DNS 服务器,在解析过程中,搜寻的顺序依次为:本机配置文件——223.5.5.5——8.8.4.4——8.8.8.8——114.114.114.114;
- 将@,www,image, 以及其他子域名指向本机 ip;
- 在本机配置上述所有子域名相应地站点。这一步在上面“搭建 web 服务器”中完成。
下面是 server.app 里地配置:
- 点击右面的 edit 按钮,打开 forwarding 配置,输入上面所说的搜寻顺序里地服务器地址:
- 点击左下角的“+”号,编写本机配置。如无必要,不需要进行高级设置。在这里,我们只需要简单地域名解析就可以。
首先,我有一个设想。早些时候,我在本机搭建了一个 ftp 服务器,给学校里其他同学提供资源下载服务。现在这个服务已经停止。因为我想把所有的服务转向 http。
但是,如果用买来的虚拟主机提供文件服务的话,又慢,又不划算。鉴于用户只有校内的同学(即同一内网的机器之间),所以在本机搭建 DNS 服务器的用意,在于这里:
把校内用户的访问,导向校内主机。让需要文件服务的同学修改一次 dns 设置,比让他们每次都输入 IP地址,要方便的多。
因此,你可以看到,我在上面填写的 ip 地址,是内网 ip,而不是127.1
至于我自己,在这里配置好以后,就可以以“全线下”的方式写网站了。写好调试好,上传到服务器,只要关掉 DNS 服务器,或者修改 dns 列表,或者开启网络加速服务,就可以。
您呢,如果您是用 mac 的话,相信每次切换状态,点一个“on/off”开关,总比修改一次 hosts 要来的方便。