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

搭建个人博客网站有很多种框架和模式。对于刚入门的人来说,对于拥有一个个人网站可以说是毫无头绪。各种诸如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,感兴趣的同学可以持续关注哦~

posted @ 2020-03-01 18:07  KuroNekonano  阅读(578)  评论(0编辑  收藏  举报