人人都能有自己的论坛与博客 之OpenWrt下PHP+Lighttpd+MySql+Discuz论坛架设指导!!

在著名的第三方路由器固件ddwrt与tomato下面已经都有完整的discuz论坛架设标准教程了,有的还有所谓的论坛架设镜像包。也就是只要将ghost包导入优盘,或者移动硬盘。插入路由器基本就可以用了。但是,悲惨的是,由于openwrt的开源性,与自编译性,openwrt的固件一直存在着不同的差异性。以至于,很难通过一个统一的ghost包来完成论坛的架设等操作!!!!甚至在openwrt上都没有一分完整的discuz论坛架设教程。可怜啊~~~~但是不要紧,经过我几个月的不懈努力,终于成功把自己的discuz论坛架设成功了。所以,今天,我就把我的论坛架设教程奉献上来,还请大家喜欢~~~~

第一
确定你的固件是那种类型的固件,常见的固件有Trunk与backfire两种,这里我使用的是老鹰同学提供的版权专供版Trunk固件。总的来说还是Trunk版本的。backfire固件的可能操作就会有所不同了,还请包含~~~~

第二
由于本人路由器的flash,容量有限,准确点说应该是8mb,肯定是装不下mysql了。可能有人会说我的flash比较大是16mb或者更大的!!!应该还是有机会能装入mysql的。但是我依然还是建议你学习我一样使用block-extroot把自己的优盘挂到系统根目录!!!那是因为,只要你用的是usb2.0 high speed接口的话!那就怎么也比你路由器内的串行flash要来的快多了!!!!

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

第三
架设discuz论坛到底要装多少软件呢!!!我的答案是PHP+lighttpd+mysql

是一种功能强大,并且简便易用的脚本语言。
简单的说,php是和微软asp语言相对于的一种web2.0动态网络编程语言。不过php是一种开源的语言。我们常见的discuz论坛就是基于php语言开发的一种程序!!

什么虚拟主机,php支持,文件断点续传,网页文件压缩传输,虚拟文件系统支持都少不了它。这就是Lighttpd 。它是一种Linux web服务器的后台环境支持就对了!

数据库,和微软的SQL Server相对应的linux下的免费的,开源的SQL数据库软件。discuz论坛大家都知道的。我们要注册用户,输入性别,昵称,邮箱,三围等等的,这些都要有数据需要登记管理,这就是discuz为什么一定要装SQL数据库了~~~~~~
说了这么多,还没有说具体咋干呢!!!
现在就来说具体的吧,
实战操作!!
首先启动SecureCRT 去和路由器用SSH加密链接!
SecureCRT下载地址 http://soft.onlinedown.net/soft/4768.htm

开启SecureCRT



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的程序会自动检测你服务器的环境支持情况 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.的标志!!!

php5-mod-gd
PHP的附属支持安装包,非必要安装程序,如果你不需要discuz论坛的验证码是彩色的,甚至动态的,那就可以不用安装!!!安装它会导致连带安装非常多的lib例如libgd libjpeg libpng等lib(请原谅我实在已经快记不住了)都是因为安装了它而连带安装的!!!!


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下载地址 https://www.onlinedown.net/soft/20088.htm


点Login登录吧

php.ini在/ect目录下
lighttpd.conf文件在/etc/lighttpd目录下!覆盖源文件就好了
之后我们安装discuz 的论坛文件依然还要用到它的!
最后输入如下命令
/etc/init.d/lighttpd start
就可以启动lighttpd服务了!!!启动这个,你用php代码写的一般web网页就已经能访问了!!!!
比如你在www目录下放入随意一个index.php文件,就可以在web页面中输入http://192.168.1.1:88/index.php访问了
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 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!
没有报错最好,如果有报错,那就把我最新刚刚生成好的新数据库文件复制进去吧,替换那些生成的数据库文件就好了
点击我下载
之后再输入如下命令就可以正常启动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咯)

在地址栏输入http://192.168.1.1:88/bbs/install/index.php
就会进入discuz的安装界面了!!!!








别高兴的太早,你的discuz确实是可以用了,但是,如何让它每次都跟随路由器一同启动呢!!!




但是问题依然麻烦,由于中国某巨大邪恶组织的关系,我们的80端口被封掉,要访问adsl用户架设的web网站,访问者必须输入端口号。比如说我这里的“:88 ”这显然不是广大网友所习惯的网址,不要着急,这里我们可以巧妙的使用域名跳转功能,绕过这一麻烦问题。大家自己去3322的账户设置里面看看吧,很方便的。简单的说,按照我上面的设置。只要你在web上面输入http://kokorobbs.go.3322.org/ DDNS就会自动帮你转向http://192.168.1.1:88/bbs/ 注意上面的指向地址是要有/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';
之后你送出去的数据就都有压缩的了!
http://img.blog.pchome.net/album/02/81/01/73/ec2600eb9238f63d69739ea47dde23b7.gif之OpenWrt下PHP+Lighttpd+MySql+Discuz论坛架设指导!!!" TITLE="人人都能有自己的论坛与博客 之OpenWrt下PHP+Lighttpd+MySql+Discuz论坛架设指导!!!" />
看到论坛右下角Gzip on就是说明论坛压缩启动了^_^
写在最后 为什么要做这份教程
可能细心的朋友就已经发现了,我今天教大家架设的论坛,全部是基于开源软件的,要知道过去ddwrt或者说tomato也可以架设自己的论坛,但是这两款软件都不是完全开源的软件,我们并不可以编译自己的WRT操作系统,而openwrt不同,我们完全又能力做到这一点,创造出属于自己的一片天来。


而且就现阶段而言。如果仅仅是硬件,79元就能买到一台全新的迅捷FW300R了(300m无线400mhz的cpu),如果自己还能有点动手能力的话,简单焊接一个usb口,再刷一个4mb带usb的openwrt版本,理论上就已经足以架设论坛了,应该说FW300R的cpu AR7241应该还会比我的AR9132快这么一些些哦^_^
PS:京东商城FW300R 79元购买地址
PS:79元的FW300R添加usb刷openwrt教程
PS:当然你也可以说我比较懒,那就买改好的路由器吧,也不贵200多元吧 中国openwrt论坛官方网店

试想一下,如果我们广大网友人人都能轻松利用自己家中的网络架设只属于个人的网站与论坛。那就再也不用担心自己在blog上的文章被删除啦,自己在bbs上的评论第二天突然被和谐了。因为,当我们人人都在听邓丽君的歌的时候,她就再也不淫秽与下流了^_^空气是最好的杀虫剂路灯是夜间最好的防盗手段,让罪恶暴露在阳光之下,无处隐藏。那真正的自由与正义也就会来到我们身边~~~~~

PS:最后的最后当然是我辛辛苦苦架设的论坛地址咯,^_^小DC之家,希望大家喜欢 点击我进入
沈洁
2011年6月7日