人人都能有自己的論壇與博客 之OpenWrt下PHP+Lighttpd+MySql+Discuz論壇架設(shè)指導(dǎo)!!

在著名的第三方路由器固件ddwrt與tomato下面已經(jīng)都有完整的discuz論壇架設(shè)標(biāo)準(zhǔn)教程了,有的還有所謂的論壇架設(shè)鏡像包。也就是只要將ghost包導(dǎo)入優(yōu)盤,或者移動硬盤。插入路由器基本就可以用了。但是,悲慘的是,由于openwrt的開源性,與自編譯性,openwrt的固件一直存在著不同的差異性。以至于,很難通過一個統(tǒng)一的ghost包來完成論壇的架設(shè)等操作!?。?!甚至在openwrt上都沒有一分完整的discuz論壇架設(shè)教程??蓱z啊~~~~但是不要緊,經(jīng)過我?guī)讉€月的不懈努力,終于成功把自己的discuz論壇架設(shè)成功了。所以,今天,我就把我的論壇架設(shè)教程奉獻(xiàn)上來,還請大家喜歡~~~~

第一
確定你的固件是那種類型的固件,常見的固件有Trunk與backfire兩種,這里我使用的是老鷹同學(xué)提供的版權(quán)專供版Trunk固件??偟膩碚f還是Trunk版本的。backfire固件的可能操作就會有所不同了,還請包含~~~~

第二
由于本人路由器的flash,容量有限,準(zhǔn)確點說應(yīng)該是8mb,肯定是裝不下mysql了??赡苡腥藭f我的flash比較大是16mb或者更大的!??!應(yīng)該還是有機(jī)會能裝入mysql的。但是我依然還是建議你學(xué)習(xí)我一樣使用block-extroot把自己的優(yōu)盤掛到系統(tǒng)根目錄?。。∧鞘且驗?,只要你用的是usb2.0 high speed接口的話!那就怎么也比你路由器內(nèi)的串行flash要來的快多了!?。?!

http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&tid=268

第三
架設(shè)discuz論壇到底要裝多少軟件呢?。?!我的答案是PHP+lighttpd+mysql

是一種功能強(qiáng)大,并且簡便易用的腳本語言。
簡單的說,php是和微軟asp語言相對于的一種web2.0動態(tài)網(wǎng)絡(luò)編程語言。不過php是一種開源的語言。我們常見的discuz論壇就是基于php語言開發(fā)的一種程序??!

什么虛擬主機(jī),php支持,文件斷點續(xù)傳,網(wǎng)頁文件壓縮傳輸,虛擬文件系統(tǒng)支持都少不了它。這就是Lighttpd 。它是一種Linux web服務(wù)器的后臺環(huán)境支持就對了!

數(shù)據(jù)庫,和微軟的SQL Server相對應(yīng)的linux下的免費的,開源的SQL數(shù)據(jù)庫軟件。discuz論壇大家都知道的。我們要注冊用戶,輸入性別,昵稱,郵箱,三圍等等的,這些都要有數(shù)據(jù)需要登記管理,這就是discuz為什么一定要裝SQL數(shù)據(jù)庫了~~~~~~
說了這么多,還沒有說具體咋干呢?。?!
現(xiàn)在就來說具體的吧,
實戰(zhàn)操作!!
首先啟動SecureCRT 去和路由器用SSH加密鏈接!
SecureCRT下載地址?http://soft.onlinedown.net/soft/4768.htm

開啟SecureCRT



openwrt下的軟件按裝是依托于Opkg。Opkg 是一個輕量快速的套件管理系統(tǒng),目前已成為 Opensource 界嵌入式系統(tǒng)標(biāo)準(zhǔn)。常用于路由、交換機(jī)等嵌入式設(shè)備中,用來管理軟件包的安裝升級與下載。
首先我們在路由器命令行下輸入
opkg update
這是為了升級軟件更新列表,從服務(wù)器端,下載服務(wù)器上最新更新的,可下載使用軟件列表以及下載地址?。。∵@一步一定要做

這里我要給大家解釋一下這些軟件的作用
libexpat libgd libjpeg libmysqlclient libncurses libncursesw libopenssl libpcre libpng libpthread libreadline librt libsqlite3
lib這個抬頭已經(jīng)把它的熟悉完全暴露無遺了。后臺支持環(huán)境庫!這些都不是我打命令安裝的,而是我安裝php啦 lighttpd這類軟件被附帶自動安裝的!
lighttpd lighttpd-mod-access lighttpd-mod-alias lighttpd-mod-cgi lighttpd-mod-fastcgi
cgi和fastcgi是關(guān)鍵
CGI全稱是“公共網(wǎng)關(guān)接口”(Common Gateway Interface),HTTP服務(wù)器與你的或其它機(jī)器上的程序進(jìn)行“交談”的一種工具,其程序須運行在網(wǎng)絡(luò)服務(wù)器上。
FastCGI像是一個常駐(long-live)型的CGI,它可以一直執(zhí)行著,只要激活后,不會每次都要花費時間去fork一次(這是CGI最為人詬病的fork-and-execute 模式)。
mysql-server
這個不用我再解釋了吧,重頭戲mysql數(shù)據(jù)服務(wù)支持
php5 php5-cgi php5-fastcgi php5-mod-apc php5-mod-gd php5-mod-mysql php5-mod-pdo php5-mod-pdo-mysql php5-mod-xml
php5-mod-mysql php5-mod-pdo php5-mod-pdo-mysql
這些是php與mysql連接所必需的。如果沒有他們。discuz就無法找到mysql數(shù)據(jù)庫
php5-mod-xml?
XML(Extensible Markup Language)即可擴(kuò)展標(biāo)記語言,它與HTML一樣,都是SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語言)。Xml是Internet環(huán)境中跨平臺的,依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。擴(kuò)展標(biāo)記語言XML是一種簡單的數(shù)據(jù)存儲語言,使用一系列簡單的標(biāo)記描述數(shù)據(jù),而這些標(biāo)記可以用方便的方式建立,雖然XML占用的空間比二進(jìn)制數(shù)據(jù)要占用更多的空間,但XML極其簡單易于掌握和使用。

discuz的程序會自動檢測你服務(wù)器的環(huán)境支持情況 mysql_connect()報錯就是因為php5-mod-mysql php5-mod-pdo php5-mod-pdo-mysql沒裝。如果要xml_parser_create()正常就必須安裝php5-mod-xml?
php5-mod-apc
Alternative PHP Cache (APC)是一種對PHP有效的開放源高速緩沖儲存器工具,它能夠緩存opcode的php中間碼。這是可選組件,可以不安裝。但是安裝它會大大加速discuz論壇的訪問速度,尤其是當(dāng)我們的路由器cpu性能還比較爛的時候。強(qiáng)烈建議安裝?。。?/p>
安裝完成之后,就能在discuz論壇的右下角看到 GMT+8, 2011-6-5 23:05?, Processed in 0.191815 second(s), 6 queries , Gzip On, Apc On.的標(biāo)志!??!

php5-mod-gd
PHP的附屬支持安裝包,非必要安裝程序,如果你不需要discuz論壇的驗證碼是彩色的,甚至動態(tài)的,那就可以不用安裝!?。“惭b它會導(dǎo)致連帶安裝非常多的lib例如libgd libjpeg libpng等lib(請原諒我實在已經(jīng)快記不住了)都是因為安裝了它而連帶安裝的?。。?!


terminfo uclibcxx zlib
這些也是附屬安裝包,其實有些也不是我自己安裝的,嗨,都是附帶“被”安裝的,悲劇啊~~~~~說實話我也說不清楚具體他們是干嘛的~~~~
其實安裝真的很簡單
在SecureCRT中用opkg update更新完程序下載地址之后直接輸入如下命令(Ctrl+C&Ctrl+V吧)
opkg install libexpat libgd libjpeg libmysqlclient libncurses libncursesw libopenssl libpcre libpng libpthread libreadline librt libsqlite3 lighttpd lighttpd-mod-access lighttpd-mod-alias lighttpd-mod-cgi lighttpd-mod-fastcgi mysql-server php5 php5-cgi php5-fastcgi php5-mod-apc php5-mod-gd php5-mod-mysql php5-mod-pdo php5-mod-pdo-mysql php5-mod-xml terminfo uclibcxx zlib
然后軟件就會全部慢慢下載完成之后自動安裝了。當(dāng)然如果你是一個狂熱的鍵盤控,命令行高手,也可以學(xué)我一樣,一條條的打入下面的命令
opkg install php5 php5-cgi php5-fastcgi php5-mod-pdo php5-mod-pdo-mysql php5-mod-mysql php5-mod-gd php5-mod-xml
opkg install lighttpd lighttpd-mod-access lighttpd-mod-alias lighttpd-mod-cgi lighttpd-mod-fastcgi
opkg install??zlib libmysqlclient uclibcxx libreadline libncursesw mysql-server libncurses
大家是否發(fā)覺,實際我打入的安裝包少了很多,我不是早就說了嗎?。?!lib等一些安裝包都是連帶一起“被”安裝的,嗨~~~~~~~~~~
安裝完這些之后
一般來說還要編輯一下php.ini和lighttpd.conf
比如說在lighttpd.conf
server.modules = (
?"mod_access",
??"mod_fastcgi",
??"mod_alias"
#?"mod_rewrite",
#?"mod_redirect",
#?"mod_alias",
#?"mod_auth",
#?"mod_status",
#?"mod_setenv",
#?"mod_fastcgi",
#?"mod_proxy",
#?"mod_simple_vhost",
#?"mod_cgi",
#?"mod_ssi",
#?"mod_usertrack",
#?"mod_expire",
#?"mod_webdav"
)
修改這段,就是說啟動fastcgi模塊access模塊alias模塊
server.document-root = "/mnt/www"
你網(wǎng)頁程序存放的根目錄
index-file.names = ( "index.php","index.html", "default.html", "index.htm", "default.htm" )
根目錄下主頁可能存在的名字?。?!
server.port = 88
服務(wù)器端口號,默認(rèn)是80,不過現(xiàn)在一般都改88,那是因為一般我們adsl都被萬惡的中國電信屏蔽了80端口,而80端口是一般web網(wǎng)站默認(rèn)的對外網(wǎng)訪問端口
在比如php.ini中的一些配置參數(shù)
[APC]
apc.enabled = 1
apc.shm_segments = 1?;The number of shared memory segments to allocate for the compiler cache.
apc.shm_size = 4?;The size of each shared memory segment in MB.
別懷疑之前說的apc加速緩存服務(wù)支持
file_uploads = On
upload_tmp_dir = "/tmp"
upload_max_filesize = 200M
max_file_uploads = 200
上傳緩存目錄,是否允許上傳。最大上傳文件尺寸最大上傳文件個數(shù)
doc_root = "/mnt/www"
user_dir =
extension_dir = "/usr/lib/php"
enable_dl = On
一些特定目錄的位置,其實里面的鳥語還是比較簡單的,大家自己看看改改不會有太大難度的
當(dāng)然,也有捷徑,那就是下載我已經(jīng)修改好的那個版本。直接覆蓋源文件就是了!?。_^下載地址點我
向路由器里面復(fù)制文件的正確做法是,首先在windows里面安裝WinSCP(放心其實有中文版的,只是我實在懶的弄了)然后新建登錄,按下面的提示輸入
WinSCP下載地址?https://www.onlinedown.net/soft/20088.htm


點Login登錄吧

php.ini在/ect目錄下
lighttpd.conf文件在/etc/lighttpd目錄下!覆蓋源文件就好了
之后我們安裝discuz 的論壇文件依然還要用到它的!
最后輸入如下命令
/etc/init.d/lighttpd start
就可以啟動lighttpd服務(wù)了?。?!啟動這個,你用php代碼寫的一般web網(wǎng)頁就已經(jīng)能訪問了?。。。?/p>
比如你在www目錄下放入隨意一個index.php文件,就可以在web頁面中輸入http://192.168.1.1:88/index.php訪問了
MySQL配置
接下來再來折騰,mysql,也就是讓openwrt論壇眾多高手都頭疼的東西!?。?!
首先輸入
/usr/bin/mysql_install_db --force
這是創(chuàng)建默認(rèn)的數(shù)據(jù)庫,數(shù)據(jù)文件默認(rèn)的地址是/mnt/data/mysql這個文件夾下
可能會報錯
root@OpenWrt:~# /usr/bin/mysql_install_db --force
Installing MySQL system tables...
ERROR: 1049??Unknown database 'mysql'
110507 15:01:36 [ERROR] Aborting
110507 15:01:36 [Note] /usr/bin/mysqld: Shutdown complete
Installation of system tables failed!??Examine the logs in
/mnt/data/mysql/ for more information.
You can try to start the mysqld daemon with:
???shell> /usr/bin/mysqld --skip-grant &
and use the command line tool /usr/bin/mysql
to connect to the mysql database and look at the grant tables:
???shell> /usr/bin/mysql -u root mysql
???mysql> show tables
Try 'mysqld --help' if you have problems with paths.??Using --log
gives you a log in /mnt/data/mysql/ that may be helpful.
Please consult the MySQL manual section
'Problems running mysql_install_db', and the manual section that
describes problems on your OS.??Another information source are the
MySQL email archives available at?http://lists.mysql.com/.
Please check all of the above before mailing us!??And remember, if
you do mail us, you MUST use the /usr/scripts/mysqlbug script!
?
沒有報錯最好,如果有報錯,那就把我最新剛剛生成好的新數(shù)據(jù)庫文件復(fù)制進(jìn)去吧,替換那些生成的數(shù)據(jù)庫文件就好了
點擊我下載
之后再輸入如下命令就可以正常啟動mysql了
root@OpenWrt:~#?/etc/init.d/mysqld start
Starting MySQL daemon... done
可以看到mysql已經(jīng)成功啟動了
當(dāng)然我們也可以輸入
/etc/init.d/mysqld stop
來關(guān)閉mysql,只是現(xiàn)在千萬別輸入這個命令關(guān)閉mysql?。?!
輸入如下命令創(chuàng)建mysql的密碼
/usr/bin/mysqladmin -u root password 123456
或者
/usr/bin/mysqladmin -u root password '123456'
密碼別學(xué)我也真的是123456哦
登陸數(shù)據(jù)庫
mysql -u root -p
這個時候會提示你要密碼。輸入密碼是沒有任何提示符的。連*都沒有哦。全看不見,盲操作之后成功進(jìn)入數(shù)據(jù)庫
如果一切正確你會看到的是
root@OpenWrt:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.??Commands end with ; or \g.
Your MySQL connection id is 877
Server version: 5.1.53 Source distribution
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
創(chuàng)建一個xxxx數(shù)據(jù)庫
mysql> create database ucenter
???-> \g
記住這里一定要以\g結(jié)束,這個命令的意思就是傳送你剛才輸入的字符到數(shù)據(jù)庫
查看數(shù)據(jù)庫
mysql> show databases
???-> \g
+--------------------+
| Database??????????|
+--------------------+
| information_schema |
| mysql?????????????|
| test??????????????|
| ucenter???????????|
+--------------------+
4 rows in set (0.17 sec)
?
這個其實是可以不用做的
輸入如下命令
mysql> \s
--------------
mysql??Ver 14.14 Distrib 5.1.53, for openwrt-linux-gnu (mips) using readline 5.2
Connection id:?????????879
Current database:
Current user:??????????root@localhost
SSL:???????????????????Not in use
Current pager:?????????stdout
Using outfile:?????????''
Using delimiter:???????;
Server version:????????5.1.53 Source distribution
Protocol version:??????10
Connection:????????????Localhost via UNIX socket
Server characterset:???latin1
Db????characterset:???latin1
Client characterset:???latin1
Conn.?characterset:???latin1
UNIX socket:???????????/var/run/mysqld.sock
Uptime:????????????????23 hours 8 min 53 sec
Threads: 1?Questions: 7974??Slow queries: 4?Opens: 894??Flush tables: 1??Open tables: 64??Queries per second avg: 0.95
--------------
你會看到當(dāng)前數(shù)據(jù)庫的一些狀況?。。?!
當(dāng)然這個也不是必須做的,只有那個創(chuàng)建數(shù)據(jù)庫的操作是必須的!?。?!
論壇架設(shè)指導(dǎo)
上面的工作做完之后,linux服務(wù)器的架設(shè)算是徹底的完成了,現(xiàn)在要做的就是安裝discuz的論壇了。當(dāng)然我們首先是要下載discuz的源程序,這里建議下載的是dixcuzX2的最新版程序。下載地址如下,大家點我啊??一般來說是下Discuz_X2_SC_UTF8.zip。 UTF8 GBK BIG5是幾種不同的漢字編碼一般選UIF8因為它比較新支持的字比較多 SC是簡體TC是繁體,各取所需下載吧?。?!
把下載下來的文件解壓,把文件夾內(nèi)的upload目錄復(fù)制到路由器的www目錄下改名為bbs(當(dāng)然用的還是WinSCP咯)

在地址欄輸入http://192.168.1.1:88/bbs/install/index.php
就會進(jìn)入discuz的安裝界面了!?。。?/p>
別高興的太早,你的discuz確實是可以用了,但是,如何讓它每次都跟隨路由器一同啟動呢!?。?/p>




但是問題依然麻煩,由于中國某巨大邪惡組織的關(guān)系,我們的80端口被封掉,要訪問adsl用戶架設(shè)的web網(wǎng)站,訪問者必須輸入端口號。比如說我這里的“:88 ”這顯然不是廣大網(wǎng)友所習(xí)慣的網(wǎng)址,不要著急,這里我們可以巧妙的使用域名跳轉(zhuǎn)功能,繞過這一麻煩問題。大家自己去3322的賬戶設(shè)置里面看看吧,很方便的。簡單的說,按照我上面的設(shè)置。只要你在web上面輸入http://kokorobbs.go.3322.org/?DDNS就會自動幫你轉(zhuǎn)向http://192.168.1.1:88/bbs/?注意上面的指向地址是要有/bbs/的
最后提示一下,如果你也是和我一樣的adsl,上傳只有悲劇性的512kbps的話,我給你的建議是,把論壇的Gzip開起來吧,想想一個用戶5kB總要的吧512kbps也就是64kb。其實根本到不了的,頂多10個用戶就卡死你了,出去的數(shù)據(jù)還是壓縮一下吧。雖然400mhz的cpu也很弱,但是看看路由器的系統(tǒng)占用率。10個用戶應(yīng)該還不至于把我的cpu弄死吧!^_^更何況實際情況下,我的路由器還要為我下pt,上傳電影呢^_^(夠黑的啊?。?/p>
所以你可以用WinSCP打開/mnt/www/bbs/config/目錄下的config_global.php文件,找到$_config['output']['gzip'] = '0';修改為1然后保存就是了~~~
// --------------------------??CONFIG OUTPUT??--------------------------- //
$_config['output']['charset'] = 'utf-8';
$_config['output']['forceheader'] = 1;
$_config['output']['gzip'] = '1';
$_config['output']['tplrefresh'] = 1;
$_config['output']['language'] = 'zh_cn';
$_config['output']['staticurl'] = 'static/';
$_config['output']['ajaxvalidate'] = '0';
$_config['output']['iecompatible'] = '0';
之后你送出去的數(shù)據(jù)就都有壓縮的了!
http://img.blog.pchome.net/album/02/81/01/73/ec2600eb9238f63d69739ea47dde23b7.gif之OpenWrt下PHP+Lighttpd+MySql+Discuz論壇架設(shè)指導(dǎo)?。。?#34; TITLE="人人都能有自己的論壇與博客?之OpenWrt下PHP+Lighttpd+MySql+Discuz論壇架設(shè)指導(dǎo)?。?!" />
看到論壇右下角Gzip on就是說明論壇壓縮啟動了^_^
寫在最后 為什么要做這份教程
可能細(xì)心的朋友就已經(jīng)發(fā)現(xiàn)了,我今天教大家架設(shè)的論壇,全部是基于開源軟件的,要知道過去ddwrt或者說tomato也可以架設(shè)自己的論壇,但是這兩款軟件都不是完全開源的軟件,我們并不可以編譯自己的WRT操作系統(tǒng),而openwrt不同,我們完全又能力做到這一點,創(chuàng)造出屬于自己的一片天來。


而且就現(xiàn)階段而言。如果僅僅是硬件,79元就能買到一臺全新的迅捷FW300R了(300m無線400mhz的cpu),如果自己還能有點動手能力的話,簡單焊接一個usb口,再刷一個4mb帶usb的openwrt版本,理論上就已經(jīng)足以架設(shè)論壇了,應(yīng)該說FW300R的cpu AR7241應(yīng)該還會比我的AR9132快這么一些些哦^_^
PS:京東商城FW300R 79元購買地址
PS:79元的FW300R添加usb刷openwrt教程
PS:當(dāng)然你也可以說我比較懶,那就買改好的路由器吧,也不貴200多元吧?中國openwrt論壇官方網(wǎng)店

試想一下,如果我們廣大網(wǎng)友人人都能輕松利用自己家中的網(wǎng)絡(luò)架設(shè)只屬于個人的網(wǎng)站與論壇。那就再也不用擔(dān)心自己在blog上的文章被刪除啦,自己在bbs上的評論第二天突然被和諧了。因為,當(dāng)我們?nèi)巳硕荚诼犩圎惥母璧臅r候,她就再也不淫穢與下流了^_^空氣是最好的殺蟲劑路燈是夜間最好的防盜手段,讓罪惡暴露在陽光之下,無處隱藏。那真正的自由與正義也就會來到我們身邊~~~~~

PS:最后的最后當(dāng)然是我辛辛苦苦架設(shè)的論壇地址咯,^_^小DC之家,希望大家喜歡?點擊我進(jìn)入
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ????沈潔
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???? ?2011年6月7日