上個月,在花了一年半時間以後,寫了55篇文章,分析完成了Chromium在Android上的實現,以及Android基於Chromium實現的WebView。學到了不少東西,不過也挺累的,平均不到兩個星期一篇文章。原本想休息一段時間後,再繼續分析Chromium使用的JS引擎V8。不過某天晚上,躺在牀上睡不着,鬼使神差想着去建立一個我的站點,用來連載《Android系統源代碼情景分析》一書的內容。前端
事情是這樣的,躺在牀上睡不着,就去申請了一個域名,0xcc0xcd.com。域名申請到了,總不能不用吧。用來作什麼呢?想起我寫的那本書《Android系統源代碼情景分析》,從2012年10月出版至今,也有四年多的時間了,獲得了你們的厚受。不過網絡上也逐漸的出現了一些盜版PDF。不用說,質量確定不好。乾脆我把這本書的內容在個人我的站點上放出來吧。後面徵得了出版社的贊成,就着手開始幹了。git
網站名稱爲「進擊的程序員」,主要是爲了配合0xcc0xcd.com這個域名。從Windows時代過來的老司機可能一眼就能看出這個域名是什麼意思。看不懂的,若是你們有興趣,後面我也能夠詳細說說,懷念一下逝去的青春。程序員
從開始有想法,到把網站建好,以及將書前三章(準備知識、硬件抽象層、智能指針)的內容放上去,花了不到一個月的時間。在這不到一個月的時間裏,學習到了挺多東西:申請域名、雲服務器、域名解析、域名郵箱、網站備案以及開發網站等等。由於我一直都是作客戶端開發,剛畢業幾年作的是Windows客戶端,後面作的是Android端,沒有作過網站相關的開發,包含前端和後端,因此學習過程仍是有些小波折。不過整體上來講仍是比較順利的。這也跟網站的技術選型有關吧。數據庫
如今不是提倡作全棧工程師嗎?這個建站過程也算是小小地實踐了一把。怕時間久了會忘記一些關鍵細節和踩過的坑,因此就計劃把建站連載書的過程記錄下來。也但願可以幫助到有興趣作全棧工程師的同窗們。vim
網站使用的是LNMP架構,以下圖1所示:後端
圖1 進擊的程序員網站架構服務器
網站運行在雲服務器上,系統裝的是Ubuntu 14.04,除了Nginx、PHP和MySQL,還搭了一個GIT倉庫,用來管理網站源碼。這個GIT倉庫除了用來管理網站源碼,還用來將源碼分佈到網站中去。網絡
具體是這樣的,在本地用本身的電腦開發網站(其實就是用vim編輯網頁和PHP)。測試沒有問題以後,就用git push命令將源碼上傳到GIT倉庫。而後再登陸到雲服務器上,在網站根目錄用git pull命令從GIT倉庫中得到最新網站源碼。架構
此外,在本地還搭建了一個管理後臺。這個管理後臺就是用來給管理員管理網站的。主要就是操做一下數據庫,例如查看數據、插入數據、更新數據等等。正規的網站會專門提供一些頁面供管理員操做。鑑於這個網站不是很正規,管理員又是一個技術控,因而就直接使用Python腳原本實現這個管理後臺了,想要什麼功能就直接寫個腳本。框架
Oracle提供了一個Python版的MySQL數據庫驅動庫MySQL Connector/Python,經過它很容易用Python腳本操做MySQL中的數據。這樣一個簡單的管理後臺就搭建起來了。
整個網站的架構很是簡單,能夠很是快上手,同時它又五臟俱全。網站的前端主要用Ajax、jQuery開發,後端沒有用什麼高大尚的框架,基本上是徒手寫的PHP。主要是考慮這個網站要作的事情很簡單,就是連載《Android系統源代碼情景分析》的內容,基本功能就是瀏覽和評論。因此就以最簡單最快的方式實現。
爲了讓你們利用碎片時間更好地閱讀書的內容,網站在提供PC版的同時,也提供了移動版。移動版和PC版的功能是同樣的,只是它們的頁面表現形式不同。因此網站在設計之初,就考慮了模塊化和代碼複用,用最小的成本得到同時實現PC端和移動端的功能。
不知道爲何,提及PHP, 老是會想起「PHP是最好的語言」這句話。從這一個月的經歷看,PHP是否是最好的語言不知道,可是用來建網站,PHP的確是最好的語言。用PHP和JS開發網站,效率比用Java/OC開發App,高多了。不過,網站的體驗不如App。因此移動開發目前仍是王道。
接下來,我會用一個系列的文章分享整個建站過程,包括:
1. 域名、雲服務器、域名解析、網站備案、域名郵箱、CA證書申請
2. LNMP開發環境搭建,包括如何配置SSL加密的HTTPS站點
3. 支持SSH訪問的GIT倉庫搭建
4. 網站基本功能開發,PC版和移動版代碼複用
5. 基於MySQL Connector/Python的管理後臺開發
歡迎你們關注!想在線閱讀《Android系統源代碼情景分析》一書的,點擊進擊的程序員進入!