上個(gè)月,在花了1年半時(shí)間以后,寫了55篇文章,分析完成了Chromium在Android上的實(shí)現(xiàn),和Android基于Chromium實(shí)現(xiàn)的WebView。學(xué)到了很多東西,不過也挺累的,平均不到兩個(gè)星期1篇文章。本來想休息1段時(shí)間后,再繼續(xù)分析Chromium使用的JS引擎V8。不過某天晚上,躺在床上睡不著,鬼使神差想著去創(chuàng)建1個(gè)個(gè)人站點(diǎn),用來連載《Android系統(tǒng)源代碼情形分析》1書的內(nèi)容。
事情是這樣的,躺在床上睡不著,就去申請了1個(gè)域名,0xcc0xcd.com。域名申請到了,總不能不用吧。用來做甚么呢?想起我寫的那本書《Android系統(tǒng)源代碼情形分析》,從2012年10月出版至今,也有4年多的時(shí)間了,得到了大家的厚受。不過網(wǎng)絡(luò)上也逐步的出現(xiàn)了1些盜版PDF。不用說,質(zhì)量肯定很差。干脆我把這本書的內(nèi)容在我的個(gè)人站點(diǎn)上放出來吧。后面征得了出版社的同意,就著手開始干了。
網(wǎng)站名稱為“進(jìn)擊的程序員”,主要是為了配合0xcc0xcd.com這個(gè)域名。從Windows時(shí)期過來的老司機(jī)可能1眼就可以看出這個(gè)域名是甚么意思。看不懂的,如果大家有興趣,后面我也能夠詳細(xì)說說,懷念1下逝去的青春。
從開始有想法,到把網(wǎng)站建好,和將書前3章(準(zhǔn)備知識、硬件抽象層、智能指針)的內(nèi)容放上去,花了不到1個(gè)月的時(shí)間。在這不到1個(gè)月的時(shí)間里,學(xué)習(xí)到了挺多東西:申請域名、云服務(wù)器、域名解析、域名郵箱、網(wǎng)站備案和開發(fā)網(wǎng)站等等。由于我1直都是做客戶端開發(fā),剛畢業(yè)幾年做的是Windows客戶端,后面做的是Android端,沒有做過網(wǎng)站相干的開發(fā),包括前端和后端,所以學(xué)習(xí)進(jìn)程還是有些小波折。不過整體上來講還是比較順利的。這也跟網(wǎng)站的技術(shù)選型有關(guān)吧。
現(xiàn)在不是提倡做全棧工程師嗎?這個(gè)建站進(jìn)程也算是小小地實(shí)踐了1把。怕時(shí)間久了會忘記1些關(guān)鍵細(xì)節(jié)和踩過的坑,所以就計(jì)劃把建站連載書的進(jìn)程記錄下來。也希望能夠幫助到有興趣做全棧工程師的同學(xué)們。網(wǎng)站使用的是LNMP架構(gòu),以下圖1所示:
圖1 進(jìn)擊的程序員網(wǎng)站架構(gòu)
網(wǎng)站運(yùn)行在云服務(wù)器上,系統(tǒng)裝的是Ubuntu 14.04,除Nginx、PHP和MySQL,還搭了1個(gè)GIT倉庫,用來管理網(wǎng)站源碼。這個(gè)GIT倉庫除用來管理網(wǎng)站源碼,還用來將源碼散布到網(wǎng)站中去。
具體是這樣的,在本地用自己的電腦開發(fā)網(wǎng)站(其實(shí)就是用vim編輯網(wǎng)頁和PHP)。測試沒有問題以后,就用git push命令將源碼上傳到GIT倉庫。然后再登錄到云服務(wù)器上,在網(wǎng)站根目錄用git pull命令從GIT倉庫中取得最新網(wǎng)站源碼。
另外,在本地還搭建了1個(gè)管理后臺。這個(gè)管理后臺就是用來給管理員管理網(wǎng)站的。主要就是操作1下數(shù)據(jù)庫,例如查看數(shù)據(jù)、插入數(shù)據(jù)、更新數(shù)據(jù)等等。正規(guī)的網(wǎng)站會專門提供1些頁面供管理員操作。鑒于這個(gè)網(wǎng)站不是很正規(guī),管理員又是1個(gè)技術(shù)控,因而就直接使用Python腳本來實(shí)現(xiàn)這個(gè)管理后臺了,想要甚么功能就直接寫個(gè)腳本。
Oracle提供了1個(gè)Python版的MySQL數(shù)據(jù)庫驅(qū)動庫MySQL Connector/Python,通過它很容易用Python腳本操作MySQL中的數(shù)據(jù)。這樣1個(gè)簡單的管理后臺就搭建起來了。
全部網(wǎng)站的架構(gòu)非常簡單,可以非常快上手,同時(shí)它又5臟俱全。網(wǎng)站的前端主要用Ajax、jQuery開發(fā),后端沒有用甚么高大尚的框架,基本上是徒手寫的PHP。主要是斟酌這個(gè)網(wǎng)站要做的事情很簡單,就是連載《Android系統(tǒng)源代碼情形分析》的內(nèi)容,基本功能就是閱讀和評論。所以就以最簡單最快的方式實(shí)現(xiàn)。
為了讓大家利用碎片時(shí)間更好地瀏覽書的內(nèi)容,網(wǎng)站在提供PC版的同時(shí),也提供了移動版。移動版和PC版的功能是1樣的,只是它們的頁面表現(xiàn)情勢不1樣。所以網(wǎng)站在設(shè)計(jì)之初,就斟酌了模塊化和代碼復(fù)用,用最小的本錢取得同時(shí)實(shí)現(xiàn)PC端和移動真?zhèn)€功能。
不知道為何,說起PHP, 總是會想起“PHP是最好的語言”這句話。從這1個(gè)月的經(jīng)歷看,PHP是否是最好的語言不知道,但是用來建網(wǎng)站,PHP的確是最好的語言。用PHP和JS開發(fā)網(wǎng)站,效力比用Java/OC開發(fā)App,高多了。不過,網(wǎng)站的體驗(yàn)不如App。所以移動開發(fā)目前還是王道。
接下來,我會用1個(gè)系列的文章分享全部建站進(jìn)程,包括:
1. 域名、云服務(wù)器、域名解析、網(wǎng)站備案、域名郵箱、CA證書申請
2. LNMP開發(fā)環(huán)境搭建,包括如何配置SSL加密的HTTPS站點(diǎn)
3. 支持SSH訪問的GIT倉庫搭建
4. 網(wǎng)站基本功能開發(fā),PC版和移動版代碼復(fù)用
5. 基于MySQL Connector/Python的管理后臺開發(fā)
歡迎大家關(guān)注!想在線瀏覽《Android系統(tǒng)源代碼情形分析》1書的,點(diǎn)擊進(jìn)擊的程序員進(jìn)入!