网站技术概览

经过一番努力,昨天终于把这个网站弄上线了。感到幸运的是,从一开始到把网站弄上线的过程中,没有走太多弯路。现在想谈谈网站从无到有的过程中,都用了哪些技术。这样,如果您也想弄一个自己的独立个人网站,或许能令您少走一些弯路。如果您不太了解网站建设,您也可以通过这篇文章大概了解一下网站是怎么一回事儿。

声明: 我也是个菜狗,至少在网站建设这一方面。如果您对这一方面很懂,大概扫一眼就可以了;如果您有兴趣,欢迎帮我挑挑错。

  • 服务器
  • 服务器操作系统
  • SSH
  • 域名
  • HTTP 服务器软件
  • 数据库
  • 服务器端脚本语言
  • WordPress
  • 安全宝

那么,就挨个介绍一下吧。

  • 服务器

服务器嘛,就是一个根据用户要求,把保存在自己这里的网页、版式布局、图片这些东西调出,通过网络交给用户的计算机。基本上,大多数能联网的电脑都可以用作服务器,包括您现在正在用来看本站的电脑,只要您的电脑安装相应的服务器软件就可以。当然,并不是所有可以用作服务器的计算机都适合作为服务器来用。用作服务器的电脑相对于普通家用电脑,还是有一些要求的。比如,服务器总不能三天两头就死机,不能安个软件就要求重启电脑,也不能很轻易地就染上病毒或被人黑掉。因此,服务器相对于家用机来说挺「娇贵」的,比如为了保证服务器运行稳定,服务器所在的环境必须保持一个固定的温度和湿度。

可见,对于一般人来说,是不愿意伺候服务器的。做网站本身就够累的了,还要给服务器大爷吹空调、保证不间断供电、还要时不时清灰什么的。因此,就有聪明人想了一个办法:既然你们不愿意伺候服务器,那么就让我们包办吧,我们负责清灰、提供舒适的机房、高速的网络连接,你们就安心做网站吧,只要你们每月或每年付我多少多少管理费。

就这样,诞生了一大批专门做服务器机房生意的公司或业务事业部。国内的有万网、阿里云等;国外的有亚马逊、Linode 等等。本站的服务器使用的就是国外虚拟主机商 Linode 的。

这里再解释一下虚拟主机的概念。自从有聪明人发明服务器机房后,后来有更聪明的人依靠软件,将一个大型的计算机「分割」成很多个虚拟的小计算机,这些虚拟出来的计算机共同使用这台大型计算机的 CPU、存储空间、内存、带宽等。相对于使用单独的小计算机,使用虚拟化方案会带来少许的性能损失,不过带来了一个很大的好处,即可以根据需要很方便的升级或降级。比如如果网站用户数上去了,带宽、存储空间很难满足用户需求时,使用虚拟服务器的话就可以很方便地升级(从母机上划一块磁盘空间、多分一些带宽就可以了),要是使用普通的机子,还要自己添置硬盘什么的。可见,使用虚拟服务器方案也便于机房来统一管理、维护服务器。

Linode 口碑极佳,速度很不错,也很稳定。曾经支付宝的技术专家,现丁香园 CTO 冯大辉 Fenng 也曾推荐使用 Linode。Linode 在全球有多个机房,国内可以使用日本东京机房,不过现阶段,由于众所周知的原因,东京机房的很多 IP 在国内不好用了。因此,我的这个服务器所在机房选用的是美国加州费利蒙市(Fremont)的。Linode 可以通过注册一个帐号来免费试用三个小时,在免费试用时可以选择东京机房试试。如果觉得东京机房好用,那么就用它吧;如果不好用,可以换到其他地方的机房。Linode 的服务器提供的是完全的管理员权限,可以随便折腾安软件什么的。Linode 也提供了一个详尽的文档库,方便用户上手。此外,Linode 还提供了一个 iPhone App,可以用来监视服务器的运行状态。Linode 也会时不时地升级,如最近就将所有方案的内存翻了一倍,而且月租金仅提高了 0.05 美元。Linode 的价格也很划算,最基础的服务器每月月租 19.5 美元。这最基础的服务器方案提供了每月高达 2TB 的带宽、24 GB 的硬盘、1 GB 的内存,足够大多数人用了。

因此,如果您为选择什么服务器发愁的话,Linode 是您的最佳选择。如果您想租 Linode 服务器,希望您能用这个链接购买。使用这个链接购买,我可以得到 20 美元的 credit,您也不会有任何损失。好人一生平安。

购买 Linode 服务器是需要一个国际信用卡的。不过根据现阶段政策,在校学生不可申请信用卡。为应对这种情况,推荐使用腾讯财付通的虚拟美国运通卡来购买。

题外话:就像船长可以给自己心爱的小船取名字一样,我们是可以给服务器取名字的,比如我的这个服务器名字就叫做 "Akira-Tower".

  • 服务器操作系统

既然服务器的本质就是计算机,那么同样需要安装操作系统。和大多数普通 PC 机不同的是,现阶段使用 Windows 系列的服务器市场份额并不是很大,反而是 Linux 的市场份额比重较大一些。其中原因有很多。首先,绝大多数 Linux 服务器系统是不带图形界面的,这样降低了内存与 CPU 的消耗,还增加了系统稳定性。Linux 中有很多发行版是免费的,意味着使用 Linux 可以减少一笔授权费用;如果一个公司使用的服务器不是一台,而是几千、几万台,那么省下的授权费用相当可观。Linux 有相当数量优秀的系统工具。Linux 的内核是开放源代码的,方便移植、修改。还有,Linux 的一些特性也比较适合用作服务器,比如 Linux 开进程所需要的时间远小于 Windows。

我的服务器也不例外,使用的也是 Linux,准确的说是 64 位版的 Ubuntu Server 13.04。(别笑话我用的是 Ubuntu,我知道我很菜。)

如果您也是初学者,选择 Ubuntu 吧。Ubuntu 现在是最热门的 Linux 发行版之一,文档什么的都很齐全,用户社区规模也较大。这意味着有什么问题,可以很快地找到解决方案,不会耽搁太多时间与精力。除了 Ubuntu 外,Debian 也是比较不错的选择。

  • SSH

我们有了一个服务器,但这个服务器在美国或日本等别的地方,怎么用这个服务器呢?显然,专门坐飞机飞到费利蒙或东京很不现实。这就需要一个工具,从我们的电脑通过网络远程连接到服务器上进行操作。实际上,很早人们就这样做了。最开始人们是用一个叫 Telnet 的工具连接远程服务器。不过 Telnet 有一个严重的问题:通过 Telnet 传送的数据居然是不加密的!这就意味着我们的数据、操作命令、甚至服务器的管理员密码都有可能被网络中间一些不怀好意的节点所截获。为解决这个问题,有聪明人写出了 Secure Shell 这个工具 [注1] ,即 SSH。使用 SSH 可以在我们的计算机与远在日本、美国的服务器之间建立一条加密的数据通道,这些数据即使被其他人截获也无法获取其含义。

OS X 与 Linux 系统均自带 SSH,Windows 用户可以使用 PuTTY 工具通过 SSH 连接远程服务器。

  • 域名

在拥有服务器后,如果现在就要急匆匆地搭一个网站的话,那么访客只能通过在浏览器栏输入类似 "http://192.168.10.30" 这样的东西来访问网站,而不能通过输入类似 "http://www.google.com" 、 "http://zh.wikipedia.org" 这样的。这就需要购买一个域名来让用户可以通过输入更容易记住的字串,而非一串难以记忆的数字,来访问网站。域名,简单来说就是类似 "google.com", "wikipedia.org" 这些。我们需要购买一个域名的所有权,然后把这个域名指向一个 IP 地址(就是上面那一串数字)。用户通过输入类似 "domain-name.com" 等字符来访问我们的网站时,网络上一些其他的计算机(DNS 服务器)会将这个 "domain-name.com" 翻译为类似 "192.168.10.30" 的 IP 地址,从而正确地找到我们的服务器。

国内外有很多注册商可以提供域名购买服务。在这里,不建议在国内的注册商那里购买域名。建议在 GoDaddy 那里买,原因就是他们很靠谱,而国内大多注册商连「靠谱」都不算。GoDaddy 虽然是美国的注册商,不过支持支付宝,当然也支持各种国际信用卡了。

在域名选择这方面,建议如果能用 .com 域名就用 .com 域名。如果想把网站做大,那么 .com 域名是唯一的选择。为什么我的这个网站用的是 .me 域名?很简单,因为 "zhangboning.com" 已经被人注册了。还有,永远不要考虑使用 .cn 、.com.cn 域名。

关于域名的一些要点,可以参考我的这篇博文

  • HTTP 服务器软件

配置好服务器、绑域名后,用户可以通过输入网址来找到我们的服务器了。不过我们的服务器还没有准备好接受用户请求,按用户的请求找到网页、图片这些交给用户。这就需要一个服务器软件。

常用的服务器软件有 Apache,Nginx(读作 Engine X)等,Windows 上还有 IIS。本站使用的是 Apache。

  • 数据库

然后,我们要是写文章,存在哪里?我们网站上的评论、用户 ID 什么的要怎么存?

一个很显而易见的方案是,存成一个一个的文件。不过缺点也有很多,比如以文件形式保存数据较为散乱,查找、储存都不是很方便。所以,要用到数据库。

这个网站的数据库选用的是 MySQL,同样也是开源的产品。根据需求的不同,还可选择 monoDB、Redis 等数据库。我选用 MySQL 的目的纯粹是为了用下文提到的 WordPress。

  • 服务器端脚本语言

为了更好地完成网站的功能,如管理文章、发表评论、换头像等,还需要一个脚本语言,用这个脚本语言把静态的网页变成一个基于网页的程序。

脚本语言可以选用 PHP、Python、Ruby、JSP 等。各有各的优点,如 PHP 功能强大、用户数多,Python 语法简洁,Ruby 很灵活,等等。本站使用的是 PHP 作为脚本语言。

  • WordPress

当然,我们可以自己从头写网页、连接数据库、写服务器脚本语言来搭建一个网站,不过既然有现成的方案,为什么还要亲自做、重新发明轮子呢?WordPress 就是这样一个适合个人网站、博客的现成方案。WordPress 功能相当齐全,且界面美观。如果觉得 WordPress 缺少什么功能,还可以通过安装插件来弥补。WordPress 除了默认的主题外,全世界的用户还贡献了许多精美的第三方主题。WordPress 安装起来也很快捷方便。

嗯,对,本站用的就是 WordPress。

  • 安全宝

如果网站流量上去了,有可能引起一些无聊之徒的注意,遭到他们的攻击。这就可以用到安全宝的服务。

安全宝的服务可以有效的抵挡一些常见攻击,比如最常见的,纠集一大群计算机不停地刷网站直到网站瘫痪(即 DDOS 攻击)。而且安全宝的设置非常便捷。使用安全宝后,还可以享受加速服务,原理就是把慢服务器上的内容存到他们的快服务器上,用户访问网站时直接从他们的快服务器上获取内容。非常适合个人小网站使用。

大概就这些吧。


[注1]: Secure Shell 实际上是一个协议,将 Secure Shell 称为工具是不严谨的说法。此处将其称为工具是为了便于理解。