SimpleCD山寨版的 VeryCD
SimpleCD 是什么?
-
是山寨化 VeryCD 的全套工具,包括抓取腳本,網(wǎng)站代碼等
誰(shuí)需要使用 SimpleCD?
-
想保存 VeryCD 鏈接資源者:別鏡像 VeryCD 了,用這個(gè)吧。
-
想研究爬蟲腳本和 python 語(yǔ)法者:其實(shí)寫得挺爛的,勉強(qiáng)能用而已。
-
想研究 web.py+sqlite3 網(wǎng)站架設(shè)的愛好者:說學(xué)習(xí)是抬舉我了,一周以前我也既不懂 web.py 又不懂 sql 數(shù)據(jù)庫(kù)。
-
想測(cè)試自己虛擬主機(jī)性能者:沒錯(cuò),畢竟是1G 的數(shù) 據(jù)庫(kù),能跑而且能跑得順暢的均非等閑主機(jī)
SimpleCD 長(zhǎng)啥 樣子?
-
simplecd 架設(shè)完畢的例子:http://www.simplecd.org
為什么用 web.py?
-
抓網(wǎng)站用的是 python,用 python 系的框架能更好的整合
-
比較了一下 django 和 web.py,更喜歡 web.py 那種“用 python 寫網(wǎng)站”,而不是 django 那 種“用 django 寫網(wǎng)站”的風(fēng)格。
為什么使用 sqlite 做數(shù)據(jù)庫(kù)?
-
最開始是因?yàn)?python 自帶,簡(jiǎn)單易用
-
現(xiàn)在是因?yàn)閷?shí)際表現(xiàn)比 mysql 好10倍:http://obmem.com/?p=317
-
sqlite 的弱點(diǎn)是高并發(fā)可能會(huì)鎖死數(shù)據(jù)庫(kù),但是我已經(jīng)找到解決方案,就是等什么時(shí)候有空研究一下怎么寫代碼。
其他
-
我的個(gè)人主頁(yè),有源碼的實(shí)現(xiàn)細(xì)節(jié),歡迎來踩:http://obmem.com
-
博客中 VeryCD 相關(guān): http://obmem.com/?tag=verycd
-
更直觀的架設(shè)攻略請(qǐng)參考視頻: http://www.simplecd.org/static/tutorial.html
SimpleCD 使用方法
1.需求:
所有可以架設(shè) web.py 的地方,例如:
-
一個(gè) VPS(Virtual Dedicated Server)(參考 Xen 和 OpenVZ 測(cè)試(附 VPS 推薦))
-
一 個(gè)支持 web.py 的國(guó)外共享主機(jī)(例如 dreamhost 架設(shè) web.py 攻略)
-
一個(gè)支持 web.py 的國(guó)內(nèi)共享主機(jī)(例如 stdyun.com 架設(shè) web.py 攻略)
推薦配置:
-
Xen VPS 需要至少768MB內(nèi)存的Linux VPS
-
OpenVZ VPS 需要Burstable內(nèi)存至少512MB內(nèi)存的Linux VPS,基本內(nèi)存可以小一點(diǎn)沒問題。
內(nèi) 存太少的解決方法:
-
修改nginx/spawn-fcgi.sh中"-F 2"改為"-F 1",只使用一個(gè)守護(hù)進(jìn)程
-
重 新寫一個(gè)資源占用較低的框架來存取sqlite3。sqlite3直接存取占內(nèi)存不大。
-
不要試圖 用mysql來取代sqlite,mysql效率更低
本教程基于操作系統(tǒng)Ubuntu 9.04 由于玩VPS的都非善類,相信其他操作系統(tǒng)的架設(shè)都能自己解決
2.修改軟件源
我們要用新軟件,所以直接修改/etc/apt/sources.list 把其中的jaunty改為karmic,用9.10的軟件源 :)
然后更新一下
apt-get update
接下來分別安裝nginx,spawn-fcgi,和mercurial
apt-get install nginx apt-get install spawn-fcgi apt-get install mercurial
再接下來是easy_install的安裝,以及安裝web.py和flup
apt-get install python-setuptools easy_install web.py easy_install flup
3. 簡(jiǎn)易架設(shè)攻略
下載源碼
cd /var/www hg clone https://simplecd.googlecode.com/hg simplecd cd simplecd hg update deployment
接下來做一些基本的配置
#創(chuàng)建數(shù)據(jù)庫(kù) ./fetchvc.py createdb #nginx的配置文件(請(qǐng)根據(jù)視頻進(jìn)行相應(yīng)修改) cp nginx/nginx.conf /etc/nginx/ cp nginx/simplecd /etc/nginx/site-available/ ln -s /etc/nginx/site-available/simplecd /etc/nginx/site-enabled/simplecd #用spawn-fcgi開fcgi nginx/spawn-fcgi.sh #開啟nginx服務(wù) /etc/init.d/nginx start
好了,大功告成,訪問vps的地址看看,應(yīng)該已經(jīng)架設(shè)完畢了
4.simplecd的使用
一些數(shù) 據(jù)庫(kù)的更新方法:
上一步中的數(shù)據(jù)庫(kù)還是空的,必須下載數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)更新方法如下
./fetchvc.py feed #按照feed更新數(shù)據(jù)庫(kù) ./fetchvc.py update #更新主頁(yè)的前20頁(yè)數(shù)據(jù) ./fetchvc.py fetch q=海貓 #在verycd搜索所有關(guān)于海貓的內(nèi)容并更新到數(shù)據(jù)庫(kù) ./fetchvc.py fetch TopicID #直接更新topicid ./fetchvc.py fetchall #更新全部數(shù)據(jù)庫(kù),建議還是不要嘗試為好 ./fetchvc.py fetch 1000-1001 #更新verycd的archives頁(yè)面第1000頁(yè)到1001頁(yè)的內(nèi)容
下載全數(shù)據(jù)庫(kù)(截止2009.12.18)
eMule鏈接:
ed2k://%7Cfile%7Cverycd.sqlite3.db.lzma%7C233121378%7C0fd38cff1353e996576f9f3e9b8c65dd%7C
解壓: lzma -d verycd.sqlite3.db.lzma
然后放入 simplecd目錄即可
設(shè)置自動(dòng)更新
想讓simplecd自動(dòng)和VeryCD保持同步?
試試看 default branch的scdd.py:
hg update default python scdd.py start
每隔15分鐘看一下,如果成功的話應(yīng)該已經(jīng)有自動(dòng)更新了
為什么simplecd.org的主頁(yè)和deployment不一 致?
simplecd.org上有 些特殊的設(shè)置,所以我沒有讓它與本源代碼同步,而是同步到另一個(gè)目錄,作出一些調(diào)整,然后復(fù)制到目標(biāo)目錄。
要嘗試新界面和新功能你可以試試看dev branch:
hg update dev
注意:最新的dev branch使用了mysql數(shù)據(jù)庫(kù),sqlite到mysql的轉(zhuǎn)換可見conf.py的注釋部分。
注意2*:mysql性能可能會(huì)極爛,如果有2G 以上內(nèi)存那么可以考慮修改my.cnf至它默認(rèn)的huge站的配置文件
