搭建個人博客①:基礎知識

搭建個人博客網站有很多種框架和模式。對於剛入門的人來說,對於擁有一個個人網站可以說是毫無頭緒。各種諸如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,感興趣的同學可以持續關注哦~

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