搭建个人博客①:基础知识

搭建个人博客网站有很多种框架和模式。对于刚入门的人来说,对于拥有一个个人网站可以说是毫无头绪。各种诸如Apache,Nginx, Hexo,WordPress,Typecho等等名次让人开始完全摸不清都是干什么的。

什么是Web服务器?

首先可以确定的是,在我有限的认知里,一个网站需要有一个服务器,这是肯定的,这个服务器首先的有个系统,如Windows,Linux。接下来我们需要某个软件来管理客户端发过来的请求,管理网站的内容,对外提供HTTP服务,或是其他服务。这就是Web服务器的作用。

可以肯定的是,搭建网站,即最基础的需要服务器(Server)。这里的服务器有硬件层面的,也有软件层面的。
1.有时候 server 表示硬件,也就是一台机器。它还有另一个名字:「主机」。
2.更多时候,server 表示软件程序,这种程序主要用来对外提供某些服务,比如邮件服务、FTP 服务、数据库服务、网页服务等。

作为开发者,我们说 server 的时候,一般指的后者。一台主机上面可以运行多个这样的程序。

通俗来说,服务器本质是一个24小时电源开启,执行软件程序的电脑。 你可能会看到一个简单的服务是跑在一台几年前甚至十几年前落满灰尘的老笔记本上的。(当然服务器不作为个人服务的时候服务器当然需要高性能高容量的电脑来运转。)

按分类来说哦,我们说的Apache即是这样的HTTP Web 服务器,同样Nginx也是这样一个东西。在这里插入图片描述在这里插入图片描述


什么是HTTP sever?如何运作?

简单来说即,程序监听机器的某个端口,一旦外部访问了机器的被监听端口,程序就会返回一些内容(如网页,图片,音视频)。
在很多语言如golang,Python,Node.js,PHP等等都可以以简短的代码构造出一个简单的,Hello World级别HTTP server

按分类来说,HTTP服务的server分为两类

  1. 静态文件服务器

这种服务器简单地根据访问路径,返回对应的文件。

比如用户访问 http:// 123.123.123.123:8080/a/b/c/d.html,那么这种服务器就会在网站根目录找到 a/b/c/d.html 文件,原样返回给用户。
在这里插入图片描述
静态网站特点:

  • 静态网站是最初的建站方式,浏览者所看到的每个页面是建站者上传到服务器上的一个 html ( htm
    )文件,这种网站每增加、删除、修改一个页面,都必须重新对服务器的文件进行一次下载上传。网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保存在网站服务器上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件;

  • 静态网页的内容相对稳定,因此容易被搜索引擎检索;

  • 静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难;

  • 静态网页的交互性较差,在功能方面有较大的限制。

优点: 相对于另外两种页面(动态页面和伪静态),速度最快,不需要从数据库里面提取数据,也不会对服务器产生压力。
缺点: 由于数据都是写在文件里,很有可能会导致文件非常大,占用大量的服务器磁盘空间,每次添加内容都会生成新的文件。更改源代码的话必须全部更改,而不能更改一个地方,全站的静态页面就自动更改了。

  1. 动态内容服务器

这种服务器返回的内容一般不是文件,而是动态生成的字符串(比如从数据库中获取的字符串)。

比如用户访问 http:// http://weibo.com/home,那么这种 http://weibo.com 的服务器则会返回当前用户最新的微博消息。显然每个用户得到的内容是不一样的。
没有数据库的情况
有数据库的情况
有多个数据库的情况
服务器均衡
动态网站的概念现在还没有统一标准,但都具备以下几个基本特征:

  • 交互性:网页会根据用户的要求和选择而动态地改变和响应,浏览器作为客户端,成为一个动态交流的桥梁,动态网页的交互性也是今后 Web
    发展的潮流。

  • 自动更新:即无须手动更新 HTML 文档,便会自动生成新页面,可以大大节省工作量。
    因时因人而变:即当不同时间、不同用户访问同一网址时会出现不同页面。

优点: 占用磁盘空间小,一般几万条数据的网站,文件大小可能只有几M。数据都是从数据库里提取出来,如果需要修改某些数据,可直接修改数据库,所有动态页面就都会自动更新。
缺点: 相对于静态页面而言,访问速度较慢,因为动态页面需要处理成静态内容,才能呈现给用户。动态页面的数据是从数据库里提取出来的,如果访问量大的话,会导致数据库的压力很大。现在动态网站多数都使用了缓存技术,但相对于静态网站而言,服务器的压力比较大,访问的人越多服务器的压力越大。

动态网站在页面里嵌套了程序,这种网站对一些框架相同,更新较快的信息页面进行内容与形式的分离,将信息内容以记录的形式存入了网站的数据库中,以便于网 站各处的调用。这样,我们看到的一个页面,可能在服务器上不一一对应某个 html 的文件了,网页框架里套了很多数据库里的记录中的内容。此外动态网页是与静态网页相对应的,也就是说,网页 URL 的后缀不是 .htm 、 .html 、 .shtml 、 .xml 等静态网页的常见形式,而是以 .asp 、 .jsp 、 .php 、 .perl 、 .cgi 等形式为后缀。

这里说的动态网页,与网页上的各种动画、滚动字幕等视觉上的 “ 动态效果 ” 没有直接关系,动态网页也可以是纯文字内容的,也可以是包含各种动画的内容,这些只是网页具体内容的表现形式,无论网页是否具有动态效果,采用动态网站技术生成的网页都称为动态网页。

  1. 伪静态

假静态页面,通过将动态页面的URL地址重写,改写成以html、htm等结尾的静态URL地址,实际上还是动态页面。

优点: 方便搜索引擎进行收录。在SEO方面,伪静态和静态页面的功能是相同的。
缺点: 相对于静态页面和动态页面而言,服务器的性能消耗是最大的。静态页面可以节省服务器的资源消耗,而伪静态是增加服务器消耗,因为Rewrite还需要消耗额外的资源。


HTTP web服务器
Apache
Apache HTTP Server(简称Apache)是Apache软件基金会的一款开放源码的web服务器软件,可以在大多数计算机操作系统中运行,是目前最流行的web服务器端软件之一。apache支持的模块众多,性能稳定,本身只支持静态解析,但可以通过扩展脚本、模块等支持动态页面。常见的网站架构有:apache+php、apache+tomcat等。
Nginx
Nginx是一款开源的轻量级的web服务器/反向代理服务器软件,其特点是占用内存少,并发能力强,也是目前比较流行的web服务器软件之一。静态页面处理能力较强,尤其是反向代理服务表现突出,常被用作负载均衡和代理服务器使用。常见的网站架构有:nginx+php、nginx+tomcat、nginx+apache+php等。
Tomcat
Tomcat是一款开源的Java web应用服务器软件,常被称之为servlet容器,用来处理jsp页面和运行servlet。tomcat技术先进、性能稳定、而且免费,因而深受Java爱好者的喜爱并得到了广泛使用。tomcat静态页面处理能力较弱,它的强项是运行Jave Servlet(用Java编写的服务器端程序)。


Apache与Nginx对比

1、nginx相对于apache的优点:
轻量级,同样起web 服务,比apache占用更少的记忆体及资源
抗并发,nginx 处理请求是非同步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高效能
高度模组化的设计,编写模组相对简单
社群活跃,各种高效能模组出品迅速啊
apache 相对于nginx 的优点:
rewrite ,比nginx 的rewrite 强大
动态页面

模组超多,基本想到的都可以找到
少bug ,nginx 的bug 相对较多

超稳定
存在就是理由,一般来说,需要效能的web 服务,用nginx 。如果不需要效能只求稳定,那就apache 吧。后者的各种功能模组实现得比前者,例如ssl 的模组就比前者好,可配置项多。这里要注意一点,epoll(freebsd 上是 kqueue )网路 IO 模型是nginx 处理效能高的根本理由,但并不是所有的情况下都是epoll 大获全胜的,如果本身提供静态服务的就只有寥寥几个档案,apache 的select 模型或许比epoll 更高效能。当然,这只是根据网路IO 模型的原理作的一个假设,真正的应用还是需要实测了再说的。

2、作为 Web 伺服器:相比 Apache,Nginx 使用更少的资源,支援更多的并发连线,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连线并发的情况下,Nginx是Apache伺服器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软体平台之一. 能够支援高达 50,000 个并发连线数的响应, 感谢Nginx为我们选择了 epoll and kqueue 作为开发模型.
Nginx 作为负载均衡伺服器: Nginx 既可以在内部直接支援 Rails 和 PHP 程式对外进行服务, 也可以支援作为 HTTP代理 伺服器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多.
作为邮件代理伺服器: Nginx 同时也是一个非常优秀的邮件代理伺服器(最早开发这个产品的目的之一也是作为邮件代理伺服器), Last.fm 描述了成功并且美妙的使用经验.
Nginx 是一个安装非常的简单 , 配置档案非常简洁(还能够支援perl语法), Bugs 非常少的伺服器: Nginx 启动特别容易, 并且几乎可以做到 7*24不间断执行,即使执行数个月也不需要重新启动. 你还能够不间断服务的情况下进行软体版本的升级 .

3、Nginx 配置简洁, Apache 复杂
Nginx 静态处理效能比 Apache 高 3倍以上
Apache 对 PHP 支援比较简单,Nginx 需要配合其他后端用
Apache 的元件比 Nginx 多
现在 Nginx 才是 Web 伺服器的首选

4、最核心的区别在于apache是同步多程序模型,一个连线对应一个程序;nginx是非同步的,多个连线(万级别)可以对应一个程序

5、nginx处理静态档案好,耗费记忆体少.但无疑apache仍然是目前的主流,有很多丰富的特性.所以还需要搭配著来.当然如果能确定nginx就适合需求,那么使用nginx会是更经济的方式.

apache有先天不支援多核心处理负载鸡肋的缺点,建议使用nginx做前端,后端用apache。大型网站建议用nginx自代的丛集功能

6、从个人过往的使用情况来看,nginx的负载能力比apache高很多。最新的伺服器也改用nginx了。而且nginx改完配置能-t测试一下配置有没有问题,apache重启的时候发现配置出错了,会很崩溃,改的时候都会非常小心翼翼现在看有好多丛集站,前端nginx抗并发,后端 apache丛集,配合的也不错。

7、nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。

8、从我个人的经验来看,nginx是很不错的前端伺服器,负载效能很好,在老奔上开nginx,用webbench模拟10000个静态档案请求毫不吃力。apache对php等语言的支援很好,此外apache有强大的支援网路,发展时间相对nginx更久,

9、 Nginx优于apache的主要两点:
①Nginx本身就是一个反向代理伺服器
②Nginx支援7层负载均衡;其他的当然,Nginx可能会比 apache支援更高的并发,但是根据NetCraft的统计,2011年4月的统计资料,Apache依然占有62.71%,而Nginx是 7.35%,因此总得来说,Aapche依然是大部分公司的首先,因为其成熟的技术和开发社群已经也是非常不错的效能。

10、你对web server的需求决定你的选择。大部分情况下nginx都优于APACHE,比如说静态档案处理、PHP-CGI的支援、反向代理功能、前端Cache、维持连线等等。在 Apache PHP(prefork)模式下,如果PHP处理慢或者前端压力很大的情况下,很容易出现Apache程序数飙升,从而拒绝服务的现象。

11、可以看一下nginx lua模组:https://github.com/chaoslaw…apache比nginx多的模组,可直接用lua实现apache是最流行的,why?大多数人懒得更新到nginx或者学新事物

12、对于nginx,我喜欢它配置档案写的很简洁,正则配置让很多事情变得简单执行效率高,占用资源少,代理功能强大,很适合做前端响应伺服器

13、Apache在处理动态有优势,Nginx并发性比较好,CPU记忆体占用低,如果rewrite频繁,那还是Apache吧


有了服务器,我们就可以在内容上做文章了。在学习前后端语言时我们知道从零开始写一个网站的框架是很困难的,对于初学者而言仅仅在第一个网页上输出Hello World就很有成就感了。如何像别人一个拥有或简约或高大上或二次元萌豚一般的优雅博客呢?

实际上这也是有框架的,总体来说网站博客框架即我们所说的WordPress,Typecho,Hexo。

  1. WordPress
    在这里插入图片描述
    在这里插入图片描述
    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。

WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的。用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。

不过WordPress并不是完全免费的,体验一些完整的功能还需按月购买。

  1. Hexo
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。

一般选择结合github使用,无需支付服务器成本

相对于 Typecho 和 WordPress 这类动态博客来说, Hexo 跟他们的最大区别就是静态了(这里的“动态、静态”主要是指其对数据处理的方式,通过数据库来动态的查询、调用、展示的叫“动态”,直接生成纯.html网页文件来供浏览的叫“静态”),从服务器端来说静态博客凭条的速度更加高效,动态博客平台因为需要数据库、服务器端的脚本语言解析的支撑在速度上相对于静态博客平台来说自然会低的(就今时今日云技术的趋于成熟和普及,动态和静态这点儿性能上的差异越来越微乎其微了,至少对于我们个人博客来说是这样的),可以说 Hexo 在这点儿上来说是完胜 Typecho 和 WordPress 的,但是有利必有弊, Hexo 是基于 Node.js的博客框架,也就是说要 Hexo 需要Node.js环境的支持才可以运行,而Node.js是需要单独在服务器上部署的,也可以理解为是 Hexo 不过多的依赖于常见的 LNMP(Linux+Nginx+Mysql+PHP) , LAMP(Linux+Apache+Mysql+PHP)LNAMP(Linux+Nginx+Apache+Mysql+PHP) 生产环境,甚至站点的访问只需要有一个“托管”的平台即可。可以说这方面看性价比做到了极致,一个域名+一个免费托管平台就可以搭建一个博客网站了。什么服务器版本、CPU高低、内存多少、带宽多少啥的都是浮云。

Hexo 的性价比极致优势是最明显的,手里有个域名就可以有个博客网站了,这个优势是任何博客平台(框架)都不具备的,至于说 Hexo 的速度,这个只能说跟静态网页文件托管的第三方平台有关系。不过 Hexo 也有其“弊端”的,那就是通用性比较差,毕竟涉及服务器的一系列部署不是每个人都可以胜任的,再加上托管到第三方平台的过程也不是所有人都可以熟练掌握的,甚至很多人都不知道 GitHub、扣钉 Coding 是干啥的,这个“门槛”可以说阻挡了很多人,如果你本身就是个技术宅甚至程序猿、攻城狮一类的那么自然知道 GitHub、扣钉 Coding 这类“同性交友社区”是干啥的,这个“门槛”自然也就不是啥问题了,那么 Hexo 自然也就是你的首选了。

  1. Typecho

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
Typecho 是国内开源基于PHP+数据库的一个动态博客平台,这点儿跟 WordPress 比较类似,甚至部署起来都区别不大,但是 Typecho 相对于 WordPress 来说更加的轻巧、快速,并且 Typecho 是原生采用 MarkDown 语法解析作为默认博客文章编辑器的,相对于 WordPress 的基于HTML的编辑器更加的先进高效,在兼容性和性能上也提升了很多。可以说 Typecho 是个基于MarkDown的微缩版 WordPress。更重要的是Typecho是免费的。

Typecho 相对于 WordPress 来说少了那么一丝“商业化”、“标准化”的外表,更加适合专注于原创内容分享的博客站点使用,可以理解为是“小清新”式、个人色彩比较浓厚的个人博客选择 Typecho 还是很不错的,无论是网站运营成本还是内容输出几乎都是以“简约”为主要原则的,性对于 WordPress 站点来说性价比还是非常不错的额。

如果选择Typecho的话,强烈推荐付费主题handsome,handsome的社区里聚集了大量优秀精美的博客https://handsome.ihewro.com/forum/index.html


总而言之,无论是WordPress,Typecho还是Hexo在外表上都有高度定制化的漂亮主题界面,在外观上只要细心调教,总能变成自己喜欢的样式。
而对于初学者而言,仅仅是为了记录生活,写文章,做简单的静态网页当然更加省事,Hexo的免费与轻量,小清新的风格会更加适合。如果同样是因为免费但追求更多的功能,Typecho会更符合你的口味。
如果有兴趣的话可以到这里看一下大家调教的博客,或者是各种博客的使用感想https://yq.aliyun.com/roundtable/493552

实际上,在拥有一台服务器,web服务器程序,以及一个适合自己的博客框架后,就已经具备搭建一个个人博客的全部材料了。当然如果需要更加深度的个人定制化,也可以为自己申请专属域名,没有可用的硬件资源,也可以购买阿里云,腾讯云,或是国外的VPS计算资源。

当你有一个自己的网站后,发布什么有趣的内容来吸引阅读量,就是你大展身手的时候了。

在以后的内容中将介绍如何实际搭建个人博客,有方便快捷的静态博客Hexo,也有需要稍微折腾但很有意思的Typecho,感兴趣的同学可以持续关注哦~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章