說說伺服器部署那些事兒

今天明月給大家說說伺服器部署這個事兒,自從明月用上阿里雲 ECS 後對伺服器方面的研究就多了起來,也接了幾個給人部署伺服器的單子,所以這方面還算是有點兒心得吧。

首先作為一名草根博客站長自己要清楚知道伺服器部署的重要性,因為這關係到網站性能優化、SEO、安全防禦、更新升級、遷移伺服器甚至未來網站發展需要等等都有很大的關係。今天不講具體的技術性的東西,只是把自己的經驗心得做個匯總總結性分享給大家!希望可以幫助到新手站長們!

部署要點之一伺服器操作系統選擇

傳統上伺服器操作系統是有不少選擇的,結合我們的國情其實也就是兩個選擇 Windows 和 Linux 而已,性價比上來說 Linux 絕對是首先,別的原因不說就一點「微軟自己的伺服器都用的是 Unix!」,所以 Linux 作為伺服器操作系統這個明月感覺不用糾結選擇就是了。

選擇了 Linux 並不是就完事兒了,還有個 Linux 發行版的選擇,眾所周知 Linux 是開源免費分享的操作系統,各個廠商為了自己的需求都會對 Linux 做一些「定製」的事兒,這就造成 Linux 存在多個不同定位需求的發行版,這些發行版都或多或少的有些區別,我們選擇的時候要根據自己的實際需求情況來針對性的選擇。作為網站伺服器操作系統的 Linux 目前普遍都是建議 CentOS 發行版,因為 CentOS 是著名 Linux 發行版 RedHat 的一個重要分支版本,個人感覺跟 RedHat 最大的不同就是 CentOS 里剔除了那些需要收費授權的模塊,全部替換為同樣優秀的遵循免費開源的模塊,並且有社區技術人員的維護更新至今已經成為作為伺服器操作系統的首選發行版之一。

綜上所述,在 Linux 發行版的選擇上明月建議大家要「隨主流」的跟風!畢竟全世界運維人員的選擇是絕對錯不了的!同時,因為選擇和使用的人多了,網上相關的資料自然也就豐富起來了,這樣我們在碰到無法解決的難題的時候自然也就更容易找到解決辦法了!

至於 CentOS 在作為伺服器操作系統其它方面的優勢,我就不做過多的贅述了,總之就是大家一定要記住玩 Linux,特別是玩 Linux 伺服器 Linux 發行版的選擇很重要,一個選擇定終身都不算是誇張的說法,特別是新手們,因為當你選擇對了 Linux 發行版後學習起來也會輕鬆不少(資料多,懂得人、用的人也多,請教起來都能找到人,當然純英語文檔閱讀無壓力的自學學霸可以無視),運維起來也會少走很多的彎路,只有主流的才是標準,玩 Linux 請謹記這條!

部署要點之二生產環境搭配方案

對於網站伺服器來說,所謂的生產環境就是指用的是什麼操作系統、Web 伺服器、資料庫、網站平台的源代碼語言這些,對應每個不同的模塊取首寫字母可以是LNMP(Linux+Nginx+MySQL/MariaDB+PHP)、LAMP(Linux+Apache+MySQL/MariaDB+PHP)、LNMPA(Linux+Nginx+Apache+MySQL/MariaDB+PHP)、LTMP(Linux+Tengine+MySQL/MariaDB+PHP)等等生產環境,不同的生產環境要根據自己站點運行類型來選擇部署的,對於我們個人博客站長來說 LNMP 是最常見的生產環境,也是目前來說性價比最高的。基本上 1 核 1G 的伺服器硬體最低配置都可以滿足所有的要求了,甚至掛 3-5 個站點都毫無壓力(比如明月自己就是這樣的配置環境),理論上來說 LNMP 生產環境應對百萬級別訪問量的站點都是可以的,所以不用擔心未來發展面臨的生產環境瓶頸問題的,當然生產環境也要根據網站自身的需求來做出不同的選擇的,比如 Web 伺服器的選擇是以處理動態網站有優勢的 Apache 還是用處理靜態文件並發有優勢的 Nginx 都要根據自己的實際需求來選擇的,如果硬體條件允許 LNMPA 的組合理論上來說是最完美的,但是對硬體配置要求不低,這也意味著成本的增加。只能說是大家要根據自己的情況各取所需就是了。

生產環境選擇好了,剩下的就是各種折騰優化嘗試了,這些就設計 Web 伺服器、資料庫、PHP 甚至博客平台層面的了,大家自行百度、谷歌學習驗證即可,期間注意做好備份以防不測發生。這裡說到備份了,這對於喜歡折騰的站長們來說是很重要的,自己有技術能力備份當然是最好的,但是明月感覺選擇一個有完善伺服器容錯恢復機制的運營商也是至關重要的,比如阿里雲就提供免費的短期快照回滾恢復,這個絕對是折騰人士的福音,一旦折騰造成不可挽回的情況就可以快速的快照回滾整體務器到最近的快照備份上,把損失減小的最低,當然養成及時備份的習慣依然是很重要的。

部署要點之三伺服器安全防禦措施的完善

在【博客網站由內而外的安全防禦思路】一文里明月詳細的給大家介紹過自己總結的伺服器安全防禦思路,安全防禦是伺服器部署時一個很重要的環節,也是最耗費時間精力的部分,因為這基本上就是個長期工作需要伺服器運維人員長期分析、應對的,畢竟「道高一尺魔高一丈」嘛!攻擊方的技術也是在不斷的更新迭代的,自然防禦起來也要保持基本的同步嘛!

關於安全防禦技術上明月其實都有過分享,大家可以在本博客和【學習筆記 Blog】上看到的,未來有什麼新的方法,我也會及時折騰驗證後分享的,今天要說的其實還是一個思路問題,就像【博客網站由內而外的安全防禦思路】一文里講的那樣,只有思路明確了技術層面上才會合理的被實現。比如:在互聯網上隱藏自己網站的真實 IP 等等。有了成熟的思路後,剩下的就是熟練的用好現成的各類安全工具了,比如 Linux 防火牆 iptables,Fail2ban 腳本、DDoS Deflate 輕應用 CC/DDOS 防禦腳本、Nginx 的 WAF 模塊 ngx_lua_waf 等等,這些都是伺服器內部的安全防禦手段,需要根據不同情況下相結合使用效果才能發揮到極致,這都是需要實踐經驗來積累。其實在伺服器安全方面最重要的還是站長本人們的安全意識了,借用【博客網站由內而外的安全防禦思路】一文里的那句話:

網路永遠不是大家看到的「風平浪靜」的表象,你的網站每時每刻都在被別有用心的「人」關注著、掃描著、分析著!不要幼稚的認為自己的網站沒有價值,所謂的「價值」都是相對的,用你的伺服器攻擊別人、用你的伺服器來「挖礦」對別人都是有價值的呀。

就算是你的網站剛上線訪客極少,那麼垃圾爬蟲蜘蛛的騷擾、各類注入/XSS 掃描器的光顧都會讓你的伺服器有壓力,甚至給這些第三方跟你幾乎沒有關係的給弄宕機都不是不可能。所以把安全防禦工作在部署伺服器的時候就做好絕對是個明智之舉。

總結

伺服器的部署就好像是給萬丈高樓打地基,只有這個地基穩定了,無論你的樓層起的有多高都不會有太大的壓力,那怕你的網站真的哪天流量達到了「百萬級」訪問量,實時的平滑升級硬體配置都是可以實現的,所以說伺服器部署是一切的基礎。 當然很多站長會說伺服器的部署自己不懂,那你可以百度、谷歌呀,實在不行找高手諮詢也是可以的,千萬不要趕鴨子上架弄個「半生不熟」的部署出來,那時候高手想幫你都無從下手了。

推薦閱讀:

Python項目自動化部署之一:舉個栗子
docker 必備 — marathon 基礎教程
一位老極客的眼中的開發和部署
多台雲主機的如何實現一鍵自動部署發布?

TAG:伺服器 | 部署 | Linux系統部署 |