在著名的第三方路由器固件ddwrt与tomato下面已经都有完整的discuz论坛架设标准教程了,有的还有所谓的论坛架设镜像包。也就是只要将ghost包导入优盘,或者移动硬盘。插入路由器基本就可以用了。但是,悲惨的是,由于openwrt的开源性,与自编译性,openwrt的固件一直存在着不同的差异性。以至于,很难通过一个统一的ghost包来完成论坛的架设等操作!!!!甚至在openwrt上都没有一分完整的discuz论坛架设教程。可怜啊~~~~但是不要紧,经过我几个月的不懈努力,终于成功把自己的discuz论坛架设成功了。所以,今天,我就把我的论坛架设教程奉献上来,还请大家喜欢~~~~
第一
确定你的固件是那种类型的固件,常见的固件有Trunk与backfire两种,这里我使用的是老鹰同学提供的版权专供版Trunk固件。总的来说还是Trunk版本的。backfire固件的可能操作就会有所不同了,还请包含~~~~
进入openwrt第一页就能看到自己是什么版本的openwrt了^_^比如我这里的Trunk^_^
第二
由于本人路由器的flash,容量有限,准确点说应该是8mb,肯定是装不下mysql了。可能有人会说我的flash比较大是16mb或者更大的!!!应该还是有机会能装入mysql的。但是我依然还是建议你学习我一样使用block-extroot把自己的优盘挂到系统根目录!!!那是因为,只要你用的是usb2.0 high speed接口的话!那就怎么也比你路由器内的串行flash要来的快多了!!!!
最好是用有集成block-extroot的固件,否则就真的得自己用opkg自己安装block-extroot咯,这里有block-extroot的安装教程,
把优盘挂到根目录之后,openwrt安装软件就再也不会容量不够了!!!^_^当然有条件的,还可以像我一样多挂一个1GB的优盘划分为SWAP交换分区,(其实也就是虚拟内存啦)来加快路由器的运行性能^_^
第三
架设discuz论坛到底要装多少软件呢!!!我的答案是PHP+lighttpd+mysql
PHP是“PHP:Hypertext Preprocessor”的缩写,即“超文本预处理器”。PHP PHP
是一种功能强大,并且简便易用的脚本语言。
简单的说,php是和微软asp语言相对于的一种web2.0动态网络编程语言。不过php是一种开源的语言。我们常见的discuz论坛就是基于php语言开发的一种程序!!
Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。
什么虚拟主机,php支持,文件断点续传,网页文件压缩传输,虚拟文件系统支持都少不了它。这就是Lighttpd 。它是一种Linux web服务器的后台环境支持就对了!
MySQL是一个小型关系型数据库管理系统
数据库,和微软的SQL Server相对应的linux下的免费的,开源的SQL数据库软件。discuz论坛大家都知道的。我们要注册用户,输入性别,昵称,邮箱,三围等等的,这些都要有数据需要登记管理,这就是discuz为什么一定要装SQL数据库了~~~~~~
说了这么多,还没有说具体咋干呢!!!
现在就来说具体的吧,
实战操作!!
首先启动SecureCRT 去和路由器用SSH加密链接!
SecureCRT下载地址
首先路由器要开启SSH服务,这是必须的,否则连不上别怪我哦
开启SecureCRT
首先创建一个快速链接。ip地址是路由器的地址
点击链接后,会提示密码输入,路由器的密码用户名啦!
之后就就如命令行界面了。这个命令行和windows的cmd命令行不同,是用来控制你远端的路由器的!
openwrt下的软件按装是依托于Opkg。Opkg 是一个轻量快速的套件管理系统,目前已成为 Opensource 界嵌入式系统标准。常用于路由、交换机等嵌入式设备中,用来管理软件包的安装升级与下载。
首先我们在路由器命令行下输入
opkg update
这是为了升级软件更新列表,从服务器端,下载服务器上最新更新的,可下载使用软件列表以及下载地址!!!这一步一定要做
这些就是你要架设论坛全部要装的软件了!!!
这里我要给大家解释一下这些软件的作用
libexpat libgd libjpeg libmysqlclient libncurses libncursesw libopenssl libpcre libpng libpthread libreadline librt libsqlite3
lib这个抬头已经把它的熟悉完全暴露无遗了。后台支持环境库!这些都不是我打命令安装的,而是我安装php啦 lighttpd这类软件被附带自动安装的!
lighttpd lighttpd-mod-access lighttpd-mod-alias lighttpd-mod-cgi lighttpd-mod-fastcgi
cgi和fastcgi是关键
CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。
FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。
mysql-server
这个不用我再解释了吧,重头戏mysql数据服务支持
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数据库
php5-mod-xml
XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
这是discuz论坛内部核心软件ucenter的安装界面,discuz的程序会自动检测你服务器的环境支持情况 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论坛的访问速度,尤其是当我们的路由器cpu性能还比较烂的时候。强烈建议安装!!!
安装完成之后,就能在discuz论坛的右下角看到 GMT+8, 2011-6-5 23:05 , Processed in 0.191815 second(s), 6 queries , Gzip On, Apc On.的标志!!!
512kbps的上传400mhz的mips处理器,如果apc不开,刷新时间是无论如何都要0.5秒以上的!!!
php5-mod-gd
PHP的附属支持安装包,非必要安装程序,如果你不需要discuz论坛的验证码是彩色的,甚至动态的,那就可以不用安装!!!安装它会导致连带安装非常多的lib例如libgd libjpeg libpng等lib(请原谅我实在已经快记不住了)都是因为安装了它而连带安装的!!!!
如果你的论坛只需要如此式样的验证码,那就可以不用安装,这可以降低cpu负担,减少内存使用量
这个是安装完之后,discuz的标准验证码式样!
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
然后软件就会全部慢慢下载完成之后自动安装了。当然如果你是一个狂热的键盘控,命令行高手,也可以学我一样,一条条的打入下面的命令
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
大家是否发觉,实际我打入的安装包少了很多,我不是早就说了吗!!!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"
你网页程序存放的根目录
index-file.names = ( "index.php","index.html", "default.html", "index.htm", "default.htm" )
根目录下主页可能存在的名字!!!
server.port = 88
服务器端口号,默认是80,不过现在一般都改88,那是因为一般我们adsl都被万恶的中国电信屏蔽了80端口,而80端口是一般web网站默认的对外网访问端口
在比如php.ini中的一些配置参数
[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加速缓存服务支持
file_uploads = On
upload_tmp_dir = "/tmp"
upload_max_filesize = 200M
max_file_uploads = 200
上传缓存目录,是否允许上传。最大上传文件尺寸最大上传文件个数
doc_root = "/mnt/www"
user_dir =
extension_dir = "/usr/lib/php"
enable_dl = On
一些特定目录的位置,其实里面的鸟语还是比较简单的,大家自己看看改改不会有太大难度的
当然,也有捷径,那就是下载我已经修改好的那个版本。直接覆盖源文件就是了!!!^_^
向路由器里面复制文件的正确做法是,首先在windows里面安装WinSCP(放心其实有中文版的,只是我实在懒的弄了)然后新建登录,按下面的提示输入
WinSCP下载地址
新建连接,切忌下面要选SCP哦
点Login登录吧
右边就是路由器的文件系统了,你可以随意的复制pc中的文件到路由器里面去,也可以方便的把路由器里面的文件复制到pc里来
php.ini在/ect目录下
lighttpd.conf文件在/etc/lighttpd目录下!覆盖源文件就好了
之后我们安装discuz 的论坛文件依然还要用到它的!
最后输入如下命令
/etc/init.d/lighttpd start
就可以启动lighttpd服务了!!!启动这个,你用php代码写的一般web网页就已经能访问了!!!!
比如你在www目录下放入随意一个index.php文件,就可以在web页面中输入访问了
MySQL配置
接下来再来折腾,mysql,也就是让openwrt论坛众多高手都头疼的东西!!!!
首先输入
/usr/bin/mysql_install_db --force
这是创建默认的数据库,数据文件默认的地址是/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 .
Please check all of the above before mailing us! And remember, if
you do mail us, you MUST use the /usr/scripts/mysqlbug script!
没有报错最好,如果有报错,那就把我最新刚刚生成好的新数据库文件复制进去吧,替换那些生成的数据库文件就好了
之后再输入如下命令就可以正常启动mysql了
root@OpenWrt:~# /etc/init.d/mysqld start
Starting MySQL daemon... done
可以看到mysql已经成功启动了
当然我们也可以输入
/etc/init.d/mysqld stop
来关闭mysql,只是现在千万别输入这个命令关闭mysql!!!
输入如下命令创建mysql的密码
/usr/bin/mysqladmin -u root password 123456
或者
/usr/bin/mysqladmin -u root password '123456'
密码别学我也真的是123456哦
登陆数据库
mysql -u root -p
这个时候会提示你要密码。输入密码是没有任何提示符的。连*都没有哦。全看不见,盲操作之后成功进入数据库
如果一切正确你会看到的是
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>
创建一个xxxx数据库
mysql> create database ucenter
-> \g
记住这里一定要以\g结束,这个命令的意思就是传送你刚才输入的字符到数据库
查看数据库
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
--------------
你会看到当前数据库的一些状况!!!!
当然这个也不是必须做的,只有那个创建数据库的操作是必须的!!!!
论坛架设指导
上面的工作做完之后,linux服务器的架设算是彻底的完成了,现在要做的就是安装discuz的论坛了。当然我们首先是要下载discuz的源程序,这里建议下载的是dixcuzX2的最新版程序。下载地址如下,
大家点我啊 一般来说是下Discuz_X2_SC_UTF8.zip。 UTF8 GBK BIG5是几种不同的汉字编码一般选UIF8因为它比较新支持的字比较多 SC是简体TC是繁体,各取所需下载吧!!!
把下载下来的文件解压,把文件夹内的upload目录复制到路由器的www目录下改名为bbs(当然用的还是WinSCP咯)
复制还是要一段时间的。好慢啊
在地址栏输入
就会进入discuz的安装界面了!!!!
首先是协议确认,当然是只能同意咯
然后是安装环境检查。如果你有部分不支持,都会有所提示的,不让你安装的。可以作为服务器检测用
如果一切稳妥,就进入了第二步,设置运行环境,如果你之前有装过ucenter的话,那就选仅安装discuz。如果不是,那就点全新安装discuz吧。点全新安装discuz会连同ucenter一同帮你装到服务器上去!!!!建议全新安装,因为discuz X2附带的是最新版的ucenter。ucenter是discuz的核心程序。
这里我选的全新安装,老样子输入帐户密码。这里注意数据库服务器选择127.0.0.1否则连不上数据库。数据库名就是刚才你刚才 create database xxxx 创建的那个,数据库用户名,就是你的路由器顶级账户root,至于数据库密码吗 /usr/bin/mysqladmin -u root password 123456 如果那个时候是123456那么现在就依然是123456 管理员密码是可以自己设置的,无所谓多少的,别告诉我就可以了
一切顺利就会自动安装了,可能有时候会有点点卡!但是一定能安装好
之后基本你就可以访问自己的bbs了。只要输入地址就可以了
别高兴的太早,我那个bbs已经是经过我调试之后的结果了,你如果也想要有一个个性化的bbs的话,快点输入访问discuz的web管理页面吧
这里有太多的选项需要你选择了。我已经快崩溃了,架这个bbs如果只是说操作的话,顶多一个小时。设置这个bbs,我可真花了一天时间啊!!!我的天呢,尤其是对我这种新人,每一项都得仔细看,那个叫累啊!!!这里我就不指导大家了,大家自己自由发挥吧,实在不行顶多从装discuz吗^_^
别高兴的太早,你的discuz确实是可以用了,但是,如何让它每次都跟随路由器一同启动呢!!!
到openwrt的系统--启动--自定义脚本中,添加入/etc/init.d/lighttpd start /etc/init.d/mysqld start这两条命令,如果你刚才都仔细学我的教程了,应该对此不会陌生吧,这个就是启动lighttpd的web服务与mysql数据库的启动。让路由器每次开机都做一次,就ok了吗^_^
我们之前的discuz论坛都还是内网访问,这个多无聊啊~~~要外网访问才给力吗。动态dns,也就是花生壳这个正好可以满足你的这个小小愿望^_^
自己注册吧,这个不用我教了吧,其实动态dns就是帮助你每次拨号都变换ip地址的adsl,自动域名映射^_^。就怎么简单
但是问题依然麻烦,由于中国某巨大邪恶组织的关系,我们的80端口被封掉,要访问adsl用户架设的web网站,访问者必须输入端口号。比如说我这里的“:88 ”这显然不是广大网友所习惯的网址,不要着急,这里我们可以巧妙的使用域名跳转功能,绕过这一麻烦问题。大家自己去3322的账户设置里面看看吧,很方便的。简单的说,按照我上面的设置。只要你在web上面输入 DDNS就会自动帮你转向 注意上面的指向地址是要有/bbs/的
最后提示一下,如果你也是和我一样的adsl,上传只有悲剧性的512kbps的话,我给你的建议是,把论坛的Gzip开起来吧,想想一个用户5kB总要的吧512kbps也就是64kb。其实根本到不了的,顶多10个用户就卡死你了,出去的数据还是压缩一下吧。虽然400mhz的cpu也很弱,但是看看路由器的系统占用率。10个用户应该还不至于把我的cpu弄死吧!^_^更何况实际情况下,我的路由器还要为我下pt,上传电影呢^_^(够黑的啊!)
所以你可以用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';
之后你送出去的数据就都有压缩的了!
看到论坛右下角Gzip on就是说明论坛压缩启动了^_^
写在最后 为什么要做这份教程
可能细心的朋友就已经发现了,我今天教大家架设的论坛,全部是基于开源软件的,要知道过去ddwrt或者说tomato也可以架设自己的论坛,但是这两款软件都不是完全开源的软件,我们并不可以编译自己的WRT操作系统,而openwrt不同,我们完全又能力做到这一点,创造出属于自己的一片天来。
让开放的精神来的更猛烈一点吧~~~~