教你如何建立自己的网站

   日期:2024-12-26    作者:f72js 移动:http://3jjewl.riyuangf.com/mobile/quote/24900.html

@池建强 写了一部分,发现内容太多了,最后是分几次完成的。虽然是技术文章,但我会尽量把这件事搞的轻松一点,大家读起来也更有趣。最后会在macshuo.com上形成一篇完整的文章。

2000年前后是第一波互联网浪潮,无论是幸与不幸,我的早期职业生涯都是从这波浪潮开始的,那时候很多ASP(Application Service Provider)厂商会给个人用户免费提供一些静态建站功能,大家可以写一些HTML+CSS+JS的页面传上去,算是早期的个人的站点,我记得自己的 第一个站点叫做「雪域苍穹」,貌似取自一首流行歌曲的名字。无论是名称还是页面,现在看来都土的能掉出翔来,但当时的感觉是,这特么的太酷了。

后面做过一些个人网站,由于各种原因都关掉了。再后来开始写博客,很多人开始建自己的博客站点。站点不少,一直保持更新的倒没几个。我的想法是,专业的事就让专业的厂商去做吧,所以一直也没建个人博客网站,断断续续的在博客园和图灵社区写一些东西,也算是保持更新了。

终于有一天,微信公众平台来了,一个偶然的机会注册了MacTalk(原Mac技巧),之后一口气写了一百三十多篇文章,文字总数超过了我前几年的博客总和,而且保持了一定的文字水准(自以为-_-#)。然后就有很多读者一直提醒我,MacTalk里的内容有一部分是技术性质的,有存留价值,如果能够进行查询检索,对Mac的新老用户都有帮助。我想了想也是,扯淡的东西估计没人愿意重复阅读的,技术类又很难记在当下,所以就准备开始着手建站,然后 macshuo.com就建成了。下面我把整个过程写一下,供大家参考,另外,我只说自己的选择,不会去比对各种指标,比如Linode和国内VPS的优 劣,Apache和Nginx的性能差异等等,如果你想了解这些东西,那就用Google百度一下。

搭建个人站点,大致需要做这么几件事情:

  • 一台具备公网IP的服务器
  • 安装操作系统,搭建环境
  • 购买域名,域名绑定IP
  • 部署应用程序

基本上这四套组合拳打完,你的个人网站就算建起来了,后续的事情就是添砖加瓦和蓬荜生辉了。

好把我们依次介绍:

大部分公司都会有自己的服务器和公网IP,要么托管要么自建机房。但对于个人用户来说,就没必要费时费力做这个事情了,购买一个 VPS(Virtual Private Server)即可。什么是VPS,建议大家去维基百科上查一下,简单来说就是你会拥有一台虚拟主机,除了看不见机箱之外,你可以像操作一台实体服务器那 样操作它,独立操作系统和硬盘空间、独立内存和CPU资源、独立的执行程序和系统配置等,可以自己安装操作系统和软件,独立重启等等。

在VPS的选择上,我用的是Linode。Linode是一家来自于米帝的专注于提供 Linux VPS 的服务提供商, 虚拟化技术采用了Xen,Linode的含义是Linux Node。注意,这里的操作系统是Linux,我推荐所有个人建站都采用Linux,不解释,如果你想采用Windows Server,后面的内容就不用看了。

Linode在国内外口碑都不错,价格适中,质量可靠,童叟无欺。Linode提供了各种Linux操作系统供选择,比如Ubuntu、Redhat、Debian、CentOS等等,装系统和重装系统都非常简单。

好,我们下面简单说一下步骤,访问https://manager.linode.com/session/signup
填写邮箱、用户名密码,就算注册成功了,Linode会给你发封邮件确认,打开那个确认连接,大家就会看到下面这张图的内容:

Linode通过它的ticket system(一套支持系统)提供7 x 24 x 365的支持服务,看清楚,不是7 x 24 x 365的不停机服务,我现在特别烦一些企业客户,一谈就说永不宕机,特么除了上帝谁能保证永不宕机?时间长了自个都得宕!另外Linode还提供了4小时 的免费试用服务,比较厚道,如果你试试觉得不爽还可以选择不玩。

选择继续,就可以选机房了,Linode目前提供了东京和欧美等地的机房选择,我选了东京机房,据说是针对亚太地区用户的需求新开辟的,速度很快。 然后选操作系统,设置硬盘大小、root密码等,点击「Rebuild」,你就进入了VPS的控制台,等Host Job Queue的所有任务都是绿色的Success,就可以点击「Boot」,启动系统。然后找到Remote Access这个标签,点进去就可以找到这台服务器的访问IP,打开终端,输入ssh root@x.x.x.x,就可以登录系统了,看到了吧,very simple!

试用之后,如果你觉得可以,点击Acount标签,完善自己的信息,选择服务器配置,支付信息,然后就可以完整支付流程了。

我选的是Linode 1024套餐(24 GB DISK, 2000 GB),按照年付费的话230刀左右,大家这两天赞助的碎银子,差不过够一年年费了:)支付方式包括Visa,MasterCard,American Express,只有要信用卡还是很方便的。

另外需要注意的一点是,拿到了IP之后,一定要在不翻##墙的情况下测试一下是否可以正常访问。我就遇到这个问题了,在国内没法访问,但是挂了VPN的就可以,我估计是哪个倒霉孩子以前用过,被墙之后不用了。

不得已我发起了一个Ticket(支持问题),说我在中国大陆不能访问这个IP,但通过VPN可以,那哥们响应倒是挺快,但显然不懂我朝行情,让我 执行mtr –r x.x.x.x,mtr可以结合ping、nslookup、tracert诊断网络传输问题。我只得把数据返给他,结果人家还要其他数据,我就不耐烦 了,用蹩脚的英文给丫解释了一下什么是伟大的墙,基本意思就是少特么废话,赶紧给我换个IP。那哥们看我气势挺盛,赶紧给我换了个IP,我一试没问题了, 说了声三克油,他说威尔卡姆,这事算结了。两人共交手五个回合,用时2小时,效率还可以。


我选用的服务器是Ubuntu12.04,64位。以下内容均基于该环境描述。

拿到了主机IP,你就算拿到了新房的钥匙,但是离入住还远着呢,因为你那个主机现在就是个毛坯房,除了进去看看,什么都不能干。好,下面我们做一下简装修。

1、创建用户

第一次登录需要root用户,什么是root?root就是整个Linux操作系统最牛逼的主,他想干嘛就干嘛,他想删谁就删谁,他是光他是电他是 唯一的神话,他就是我朝就是我D,所以非常危险,你们懂的。如果用root执行一下rm -rf,那整个锡安就会被抹掉,尼奥也拯救不了,如果root愿意,他可以抹掉你曾经存在过的所有痕迹。所以,我们不能没事就用root进去耍,为了解决 这个问题,我们必须要建立一个agent,平时是普通用户,关键时刻充当root的角色。

具体操作如下:

首先用root登录系统


创建一个新用户,用户名随你喜欢,比如叫做mactalk


按照提示信息输入密码和相关信息,就可以完成操作。完成之后系统就会自动建立/home/mactalk路径。

然后是授权,输入


在编辑器中找到如下内容:


在下面加一行


通过ctrl+x保存退出即可。然后就可以退出root,用mactalk重新登录(ssh mactalk@x.x.x.x),登录进来默认目录在/home/mactalk下,当你想行使root权限时,请在命令之前增加sudo,按照系统提示输入密码即可执行操作。

2、选择shell

用户建好了,下面我们为用户选择一种shell,估计小白看到这个又毛了,啥是shell?

shell就是Linux的一个外壳,你理解成衣服也行。它负责外界与Linux内核的交互,接收用户或其他应用程序的命令,然后把这些命令转化成 内核能理解的语言,传给内核,内核是真正干活的,干完之后再把结果返回用户或应用程序。比如你对shell说,「你好」,shell就跑到内核那说,「老 大,有人问候你呢」,内核就不耐烦的说,「有事说事,我特么忙着呢」,shell就把这条信息反馈给你,大致就是这样。以前讲Mac技巧的时候,经常跟大 家说在终端里输入一些命令,那就是Mac的shell,都是一脉相承的。

Linux提供了很多种Shell,你要问我为什么要有这么多,我只能告诉你,你为毛同类型的衣服有那么多件?花色,质地还不一样。写程序比买衣服 复杂多了,而且程序员是不惮于把事情搞复杂的,牛程序员看到不爽的shell,就会自己重新写一套,慢慢形成了一些标准,常用的shell有这么几 种,sh、bash、csh、zsh等,想知道你的系统有几种shell,可以通过以下命令查看:


这些shell我就不解释了,维基百科和百度百科都写的很清楚,总之,坊间流传,普通程序员用bash,文艺程序员用zsh,XX程序员直接用原生 的sh,我建议大家文艺一点,用zsh好一些,功能也最强大。目前各个版本的Linux默认的shell都是bash,如果你想用zsh,需要安装一下, 如下:


具体的配置我就不介绍了,感兴趣的读者,可以参考

http://leeiio.me/bash-to-zsh-for-mac/

3、通用工具

介绍几个简单的工具,建站必备。

  • wget,命令行下载工具,安装,使用方式后面会介绍。
  • tmux,一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台 而无需再「浪费」多余的终端来连接这台远程主机。好吧,这句话有点绕,简单说就是用tmux打开的会话可以一直驻留在服务器上,下次去看时还是上次来的样 子。就像你是某个酒店的VIP客户,住完之后不会人走茶凉,也不会断电,下次去时茶还热着,灯也亮着,就这样。

    安装方式,对使用方式感兴趣的读者去查一下吧,中文介绍很多,记住,热键是ctrl+b。

  • vim,在Linux上少不了编辑文件,我推荐Vim和Emacs,一个是编辑器之神,一个是神的编辑器(或者是伪装成操作系统的编辑器),我是Vim党,目前在学习Emacs。我之前写过一个Vim系列,有兴趣的可以去看:

    http://www.cnblogs.com/chijianqiang/tag/vim/

    从原理到配置、使用都有非常详细的介绍,那也是个大坑,还没写完,但写了MacTalk就变成顾此坑失彼坑了。

差不多就这几个,其他的工具随用随装吧。


服务器和环境构建都写完了,今天介绍一下域名和DNS的那点事儿,稍微复杂一点的软件部分放在最后说。

域名是什么东西呢?就是一个网站的标识和入口,由「.」分隔开的字符串构成,洋名叫Domain Name,比如苹果公司网站的域名就是apple.com,在浏览器地址栏输入这个域名,就可以访问苹果的网站了。为什么要有域名呢,有了公网IP,不就可以访问网站了么?

咳,这么说吧,如果有人说找个地方聚聚,你说,咱们经度116.46、纬度39.92,不见不散!地方倒是对,但是估计实名菜刀和无名臭鞋就飞过来 了。IP地址就是你的服务器在互联网世界的经纬度,域名就是对应IP的门牌号码,就像人们能记住门牌号记不住经纬度一样,在网络世界里,大家都是记域名 的。与现实世界不同的是,门牌号和实际地址正常情况都是一对一的,而域名和IP地址是多对一的,也就是说,只要你有一个公网IP,就可以申请多个域名,对 应多个应用,非常方便。

现在你知道了吧,要建站,必须要有域名。能够提供域名的厂商很多,国内外都有。不过我强烈推荐大家购买国外厂商的域名,免去提交材料和备案之苦,国 外动动鼠标和小手分分钟搞定的事情,国内要提交各种材料、备案、定期监管balabala……具体差异大家看看www.apple.com.cn和 www.apple.com两个网站的底部知道了,苹果中国的底部有「京公安网安备 11010500896|京ICP备10214630」,再看看米帝的网站,毛都没有,都是自己的网站信息,我们只能说,米帝的监管制度太不健全了,真为 他们捉鸡!

国外的域名厂商推荐www.godaddy.com和www.name.com,都不错。我使用的是Godaddy。

Godaddy是全球最大的域名注册服务商,全球市场占有率超过30%,一般情况下不会被我朝屏蔽。如果屏蔽了Godaddy,会导致在大陆无法访 问全球近三分之一的网站,所以相对安全,相对,你懂的。另外Godaddy开始支持支付宝了,对我朝臣民来说付费变得方便无比。

在域名选择上,最好满足这几点要求:有意义、好记、简短,另外尽可能使用com(通用顶级域名)。申请步骤也很简单,访问 www.godaddy.com,在搜索框输入你想要购买的域名,点击搜索,你会看到这个域名的具体信息,是否被使用,相关域名,价格等信息,域名后缀一 般有com、net、me、us、info等,建议选com,不建议选info,据说info结尾的网站大部分是垃圾网站,会被搜索引擎屏蔽。

选好域名后,点Add,加入购物车,如果不需要其他服务,一路Continue即可,最后设置支付信息,支付宝在最后一列,然后「Place Your Order」,根据提示注册和支付即可。价格与域名信息相关,一般几美元到10几美元不等。

购买完成之后,进入Godaddy的域名管理控制台,找到你购买的域名,把域名和你的IP地址绑定起来,就可以通过域名访问你的网站了。这里就涉及到DNS了。

DNS的洋名一般说成Domain Name System,就是给域名提供服务的。光有域名没用,还得有相关的服务能够把域名解析成IP地址才行,DNS就干这事。DNS的扩展性非常好,不依靠单一 的巨型主机索引,而是通过分布式系统提供服务,全球能够提供DNS服务的服务器多如牛毛数不胜数,但大哥级别的根服务只有13台,目前的分布是:主根服务 器美国1个,设置在弗吉尼亚州的杜勒斯;辅根服务器美国9个,瑞典、荷兰、日本各1个,旗下是各个级别的域名服务器。

DNS的工作方式挺复杂,有兴趣的直接去Google吧,我简单描述一下,大致的场景是这样的,比如小明是个DNS服务器,有一天你想访问 macshuo.com,就问,「小明啊,我想去听听MacTalk,怎么走呢?」,作为忠诚的DNS战士,小明的服务态度是值得赞赏的,如果他知道的 话,就会立刻告诉你地址,比如从这个街区左转左转左转再左转balabala……如果丫不知道也没关系,他会反馈给上级主管,说「最近有人新建了个 MacTalk网站,我这还没记录地址,你晓得不?」,上级部门如果知道就会把地址发给小明,说「你丫长点记性,把这地址记下来行不?别特么老问了,最近 自媒体网站可真多啊,哎……」,这样小明就会把地址告诉你,并且用心的把这个地址记到自己的小本本上,下次有人再问,就直接告诉人家答案了。如果上级部门 也不知道,那就继续问,直到反馈到根服务器为止,反正只要你注册了,总能找到。差不多就这样吧。

Godaddy默认提供了DNS服务,点击DNS Manager,在弹出的设置面板中设置你的网站IP即可,具体的图文教程网络上很多,我就不费那事了。但是我的使用结果是,Godaddy提供的DNS 在国内访问不太稳定,时不时就不能访问了,具体为啥我也不清楚。因为购买了Linode服务,我最后采用了Linode的DNS,具体的做法是:

  1. 登录linode.com,点击DNS Manager标签,进入管理控制台
  2. 选择Add a domain zone
  3. 填写域名、邮件地址和IP
  4. 点击Add a Mater Zone,就算完成了

最后一步就是在Godaddy的控制台里设置一下Linode的DNS服务器,很简单就不描述了。


经过前面三篇系列文章的介绍之后,我们现在房子也有了,做了简装修,还申请了地址和门牌号,最后一步就是入住,也就是部署你的应用程序。

针对网站提供的服务不同,需要不同的技术选型,我的需求就是做个风格简约的博客,用来存放MacTalk的文章,同时有个地方能够随意发表一些个人 观点,就这么简单,所以针对这个需求进行选择即可。大家将来建站的时候也是一样,明确自己的需求,不要为未来买单,尽量搞的轻量级一些,最忌讳给的是龙套 的钱,您自个却按照男猪脚进行角色扮演,不提倡。

搭建轻量级的博客不建议使用.Net或JavaEE的技术,这些技术都比较重,必要性不大。Php、Python、Ruby相关的框架都是可选的技 术。因为我对Python相对熟悉一些,最初想找个开源的Python Blog框架,不过后来综合对比了一下,发现在个人博客领域,WordPress基本上无出其右,技术成熟、安装方便、性能稳定、插件众多,实在是居家建 站、个人扯淡之必备良药,就是它了。

在确定了基本需求和工具之后,我们看看涉及到哪些技术:

1、Nginx Nginx是一款高性能的HTTP服务器软件,由俄罗斯的一位大牛Igor Sysoev开发的,源代码以类BSD许可证的形式发布。Nginx的设计非常轻量级,由内核和模块组成,内核微小简洁,模块功能强大,静态编译。 Nginx做的事情简单来说就是,接收客户端(浏览器)的HTTP请求,然后通过映射机制把不同类型的请求交给不同的模块去处理,比如html、图片、 css等可以交给静态资源模块处理,还可以做压缩、缓存等,php、python等类型的请求则交给FastCGI模块去处理,完成业务逻辑。

什么是FastCGI呢?这玩意就等于是HTTP服务器和动态脚本语言通信的接口,就像一个粘合剂一样把HTTP请求和动态脚本处理整合在一起,顾名思义,处理速度非常Fast!

Nginx可以说是HTTP服务器软件市场的新贵,目前国内很多大型网站都采用了Nginx作为默认的web服务器,比如阿里、腾讯、新浪等等,国 外就更多了。当然,在Nginx未涉足江湖之前,这个领域的大哥叫做Apache,那时候几乎所有的HTTP Server都是清一色的Apache,一时之间风头无两。但是这哥们大哥做久了就不思进取,跟国内很多大佬一个德性,没竞争对手时就特么不知道改进,直 到Nginx出来抢了丫半壁江山,现在知道努力了,当初干嘛去了?

那么Nginx比Apache优秀在哪呢?

  • Nginx的所有模块都是全静态编译的,启动Nginx后,Nginx的模块被自动加载,静态库执行效率更高。
  • Nginx支持epoll(Linux系列)和kqueue(BSD系列)I/O事件通知机制。完,又特么出现两个名词!这让人情何以堪、文何以完 啊?简单说说epoll吧。epoll是Linux2.6正式引入的提高网络I/O的处理方法,它的几个优点是:单一进程打开的FD(文件描述符)数量仅 受限于操作系统,1GB内存的机器上大约是10万左右,这一点大大提升了处理海量请求的能力;采用共享内存的模式避免内存拷贝;随着打开FD的数量增 加,I/O效率不会线性下降。总之,大家知道epoll很牛逼就是了。
  • Nginx支持多进程的工作方式,Nginx启动后会有一个master进程,多个worker进程。worker进程一般对应服务器的CPU数 量,你有个8核的CPU,最好把worker设置为8。master负责接收外界信号,并向worker发送信号,监控worker的运行状况,当 worker挂掉的时候,启动新的worker。写到这我发现,这特么活脱脱就是一个地主老财打压长工的模式啊!
    尤其是Nginx的不中断重启机制,当系统配置变化需要重新启动Nginx时,我们就给地主(master)发个消息,说这批长工(worker)太老 了,都得换掉,你看着办。地主收到消息后就开始偷偷雇佣新的长工(worker),然后假惺惺的告诉老长工,把手头的活干完就行了,别太累了,啊。这时候 如果有新的请求,就会交给新长工干,等所有的老长工把活都干完了,就直接fire,绝不留情。这样,整个服务无中断重启过程就完成了,就特么一个字,黑!
    当然长工(worker)也不是省油的等,他们干活的过程非常复杂,会用到我们上文中提到的epoll机制,如果有人感兴趣,以后再讲吧,这么写下去这个系列就没完了。

Nginx功能非常强大,一本书也写不完,我简单就说这么几句。老话,有兴趣的,用Google百度一下!

大概了解了Nginx的工作机制,下面安装就比较简单了,Nginx可以编译安装,也可以在线安装,对于普通用户来说,使用apt-get在线安装即可,省的自己去找依赖关系。


如果安装和启动都没有问题,我们再调整几个参数就可以了。

找到/etc/nginx/nginx.conf,做以下几个改动:

  • 把worker_processes设置为服务器的CPU核数
  • 在event里增加use epoll
  • 把worker_connections的值设置大一点,如果是1G内存,不要大于100000/worker_processes。

其他的采用默认值即可,然后重新加载参数:


好,Nginx就算妥了,后续在安装PHP和WordPress时还要做一些配置。

我有时候觉得,当我们在计算机领域遇到问题的时候,总会出现一些技术神山上的神人,他们时不时会俯视一下凡人的IT世界,高兴了就顺手解决几个bug,发明几个新玩意,epoll和Nginx就是这些玩意,我们用好就已经心满意足袅。

2、MySQL

MySQL是应用最为广泛的开源数据库,这个没什么可说的,非常成熟的技术,直接安装即可:


安装过程中,MySQL会提示你设置root密码(root的作用参考之前介绍的,把操作系统换成数据库即可)。如果安装时没设置密码,等MySQL起来后用mysqladmin改也行,用sql改也行,简单不啰嗦。

3、PHP

WordPresss是基于PHP开发的,所以我们得为WordPress准备好环境,安装PHP。


php5-fpm是PHP FastCGI的实现之一,能够更好的管理PHP进程,控制内存使用,平滑重载等,现在我们都用它!

下面做一点简单配置,打开php.ini文件:


找到cgi.fix_pathinfo=1这一行,把1改为0。 值为1时,php的解释器会尽可能的去解析客户端请求的文件各种类型,这会引发一些安全漏洞,设置为0时,解释器只会去解析特定的文件类型,设置为0是一种相对安全的处理策略。

修改www.conf:


把 修改为 ,前者是走TCP socket,后者是Unix domain socket,如果服务都在同一台机器上,建议使用后者,效率更好一些。

重新启动PHP,这部分的配置就算完成了:


4、WordPress

好的,我们从后场断球后左冲右突,盘过对方和我方的所有进攻和防守队员,来到球门前面,发现就差最后一关:WordPress。下面我们看看如何安装和配置WordPress。

首先下载WordPress的最新版本,我用了中文版,下载和解压缩:


在MySQL中为WordPress创建用户和数据库,这部分很简单就不描述了,后续会在macshuo.com网站上补充。我们设定数据库为wordpress,用户名为mactalk,并且把数据库编码改为UTF-8。

在解压好的wordpress文件夹下,执行:


按照文件内容注释填写数据库名称、用户名、密码、数据库编码使用UTF-8,然后保存退出。

为wordpress创建www文件夹,并且把完整的wordpress目录复制到www文件夹下,并设置相关权限:


安装php的MySQL驱动


设置虚拟主机:

在/etc/nginx/sites-available下创建文件wordpress


具体的文件内容就不贴了,后续会整合到machuo.com网站上,这个文件的作用就是把Nginx和WordPress粘合在一起,接收客户端的 请求并反馈响应结果。有几点要注意的是,root设置为/var/www/,index部分增加index.php,fastcgi_pass对应之前设 置的unix socket:unix:/var/run/php5-fpm.sock。

为wordpress文件建立软连接:


最后重新启动nginx和php5-fpm,就算大功告成了:


如果一切正常的话,访问你的域名或者公网IP,就可以看到wordpress的提示页面,根据信息提示初始化数据库,创建管理员,基本框架就算建好了,之后就是完善和优化,比如性能优化、主题选择、配置信息、插件选择、扩展开发等等,大家慢慢体会吧。

这个系列就算完结了,我发现写这种文章想做到好玩好看、还能言之有物把事说清楚,挺难也挺累,好在结了。

第一个十年我才华横溢,「贼光闪现」,令周边黯然失色;第二个十年,我终于「宝光现形」,不再去抢风头,反而与身边的美丽相得益彰;进入第三个十年,繁华落尽见真醇,我进入了「醇光初现」的阶段,真正体味到了境界之美。——中国台湾作家林清玄


推荐两个公众账号:
左林右狸,由雷锋网创始人林军、笨狸维护,负责互联网业界八卦和无厘头,偶尔卖萌偶尔深沉,我最喜欢的一篇文章是「那年夏天」。
微信ID:Left-Right-007
公众帐号:厉哥说,上次说的「戏里戏外」又一次半血复活,凤凰涅磐,这两天正挑车呢,大伙去看看吧。
ID:roytalk


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号