標籤:代碼 程式員 ref 網域名稱解析 想法 源碼 架構 http ext
上個月,在花了一年半時間之後,寫了55篇文章,分析完成了Chromium在Android上的實現,以及Android基於Chromium實現的WebView。學到了很多東西,不過也挺累的,平均不到兩個星期一篇文章。本來想休息一段時間後,再繼續分析Chromium使用的JS引擎V8。不過某天晚上,躺在床上睡不著,鬼使神差想著去建立一個個人網站,用來連載《Android系統原始碼情景分析》一書的內容。
事情是這樣的,躺在床上睡不著,就去申請了一個網域名稱,0xcc0xcd.com。網域名稱申請到了,總不能不用吧。用來做什麼呢?想起我寫的那本書《Android系統原始碼情景分析》,從2012年10月出版至今,也有四年多的時間了,得到了大家的厚受。不過網路上也逐漸的出現了一些盜版PDF。不用說,品質肯定很差。乾脆我把這本書的內容在我的個人網站上放出來吧。後面徵得了出版社的同意,就著手開始幹了。
網站名稱為“進擊的程式員”,主要是為了配合0xcc0xcd.com這個網域名稱。從Windows時代過來的老司機可能一眼就能看出這個網域名稱是什麼意思。看不懂的,如果大家有興趣,後面我也可以詳細說說,懷念一下逝去的青春。
從開始有想法,到把網站建好,以及將書前三章(準備知識、硬體抽象層、智能指標)的內容放上去,花了不到一個月的時間。在這不到一個月的時間裡,學習到了挺多東西:申請網域名稱、雲端服務器、網域名稱解析、網域名稱郵箱、網站備案以及開發網站等等。因為我一直都是做用戶端開發,剛畢業幾年做的是Windows用戶端,後面做的是Android端,沒有做過網站相關的開發,包含前端和後端,所以學習過程還是有些小波折。不過總體上來說還是比較順利的。這也跟網站的技術選型有關吧。
現在不是提倡做全棧工程師嗎?這個建站過程也算是小小地實踐了一把。怕時間久了會忘記一些關鍵細節和踩過的坑,所以就計劃把建站連載書的過程記錄下來。也希望能夠協助到有興趣做全棧工程師的同學們。
網站使用的是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系統原始碼情景分析》一書的,點擊進擊的程式員進入!
《Android系統原始碼情景分析》連載回憶錄:靈感之源