NAP6官方旗舰店
搜索
发新帖
午饭无线 推广广告R7800 完胜 华硕路由器NETGEAR Vs ASUS T-Mobile定制版NETGEAR团购
开启左侧

OpenWrt搭建PHP+Lighttpd+MySql+Discuz的平台方案

[复制链接]
1706 0

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

Discuz是时下普及度最高的免费论坛程序,不过Discuz只不过是Comsenz旗下众多开源软件之一,基于其核心软件ucenter,Comsenz除论坛以外还有众多扩展应用软件。
第一
确定你的固件是那种类型的固件,常见的固件有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的安装教程,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
这是为了升级软件更新列表,从服务器端,下载服务器上最新更新的,可下载使用软件列表以及下载地址!!!这一步一定要做




这些就是你要架设论坛全部要装的软件了!!!
这里我要给大家解释一下这些软件的作用
  1. libexpat libgd libjpeg libmysqlclient libncurses libncursesw libopenssl libpcre libpng libpthread libreadline librt libsqlite3
复制代码
lib这个抬头已经把它的熟悉完全暴露无遗了。后台支持环境库!这些都不是我打命令安装的,而是我安装php啦 lighttpd这类软件被附带自动安装的!
  1. 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数据服务支持
  1. php5 php5-cgi php5-fastcgi php5-mod-apc php5-mod-gd php5-mod-mysql php5-mod-pdo php5-mod-pdo-mysql php5-mod-xml
  2. 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论坛的右下角看到 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的标准验证码式样!
  1. terminfo uclibcxx zlib
复制代码
这些也是附属安装包,其实有些也不是我自己安装的,嗨,都是附带“被”安装的,悲剧啊~~~~~说实话我也说不清楚具体他们是干嘛的~~~~
其实安装真的很简单
在SecureCRT中用opkg update更新完程序下载地址之后直接输入如下命令(Ctrl+C&Ctrl+V吧)
  1. 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
复制代码

然后软件就会全部慢慢下载完成之后自动安装了。当然如果你是一个狂热的键盘控,命令行高手,也可以学我一样,一条条的打入下面的命令
  1. opkg install php5 php5-cgi php5-fastcgi php5-mod-pdo php5-mod-pdo-mysql php5-mod-mysql php5-mod-gd php5-mod-xml
  2. opkg install lighttpd lighttpd-mod-access lighttpd-mod-alias lighttpd-mod-cgi lighttpd-mod-fastcgi
  3. opkg install zlib libmysqlclient uclibcxx libreadline libncursesw mysql-server libncurses
复制代码
大家是否发觉,实际我打入的安装包少了很多,我不是早就说了吗!!!lib等一些安装包都是连带一起“被”安装的,嗨~~~~~~~~~~
安装完这些之后
一般来说还要编辑一下php.ini和lighttpd.conf
比如说在lighttpd.conf
  1. server.modules = (
  2. "mod_access",
  3. "mod_fastcgi",
  4. "mod_alias"
  5. # "mod_rewrite",
  6. # "mod_redirect",
  7. # "mod_alias",
  8. # "mod_auth",
  9. # "mod_status",
  10. # "mod_setenv",
  11. # "mod_fastcgi",
  12. # "mod_proxy",
  13. # "mod_simple_vhost",
  14. # "mod_cgi",
  15. # "mod_ssi",
  16. # "mod_usertrack",
  17. # "mod_expire",
  18. # "mod_webdav"
  19. )
复制代码
修改这段,就是说启动fastcgi模块access模块alias模块
  1. server.document-root = "/mnt/www"
复制代码
你网页程序存放的根目录
  1. index-file.names = ( "index.php","index.html", "default.html", "index.htm", "default.htm" )
复制代码
根目录下主页可能存在的名字!!!
server.port = 88
服务器端口号,默认是80,不过现在一般都改88,那是因为一般我们adsl都被万恶的中国电信屏蔽了80端口,而80端口是一般web网站默认的对外网访问端口
在比如php.ini中的一些配置参数
  1. <span style="box-sizing: border-box;">[</span>APC]
  2. apc.enabled = 1
  3. apc.shm_segments = 1 ;The number of shared memory segments to allocate for the compiler cache.
  4. apc.shm_size = 4 ;The size of each shared memory segment in MB.
  5. 别怀疑之前说的apc加速缓存服务支持
  6. file_uploads = On
  7. upload_tmp_dir = "/tmp"
  8. upload_max_filesize = 200M
  9. max_file_uploads = 200
复制代码
上传缓存目录,是否允许上传。最大上传文件尺寸最大上传文件个数
  1. doc_root = "/mnt/www"
  2. user_dir =
  3. extension_dir = "/usr/lib/php"
  4. enable_dl = On
复制代码
一些特定目录的位置,其实里面的鸟语还是比较简单的,大家自己看看改改不会有太大难度的
向路由器里面复制文件的正确做法是,首先在windows里面安装WinSCP(放心其实有中文版的,只是我实在懒的弄了)然后新建登录,按下面的提示输入
WinSCP下载地址




新建连接,切忌下面要选SCP哦




点Login登录吧




右边就是路由器的文件系统了,你可以随意的复制pc中的文件到路由器里面去,也可以方便的把路由器里面的文件复制到pc里来
php.ini在/ect目录下
lighttpd.conf文件在/etc/lighttpd目录下!覆盖源文件就好了
之后我们安装discuz 的论坛文件依然还要用到它的!
最后输入如下命令
  1. /etc/init.d/lighttpd start
复制代码
就可以启动lighttpd服务了!!!启动这个,你用php代码写的一般web网页就已经能访问了!!!!
比如你在www目录下放入随意一个index.php文件,就可以在web页面中输入http://192.168.1.1:88/index.php访问了
MySQL配置
接下来再来折腾,mysql,也就是让openwrt论坛众多高手都头疼的东西!!!!
首先输入
  1. /usr/bin/mysql_install_db --force
复制代码
这是创建默认的数据库,数据文件默认的地址是/mnt/data/mysql这个文件夹下
可能会报错
  1. root@OpenWrt:~# /usr/bin/mysql_install_db --force
  2. Installing MySQL system tables...
  3. ERROR: 1049 Unknown database 'mysql'
  4. 110507 15:01:36 <span style="box-sizing: border-box;">[</span>ERROR] Aborting
  5. 110507 15:01:36 <span style="box-sizing: border-box;">[</span>Note] /usr/bin/mysqld: Shutdown complete

  6. Installation of system tables failed! Examine the logs in
  7. /mnt/data/mysql/ for more information.
  8. You can try to start the mysqld daemon with:
  9. shell> /usr/bin/mysqld --skip-grant &
  10. and use the command line tool /usr/bin/mysql
  11. to connect to the mysql database and look at the grant tables:
  12. shell> /usr/bin/mysql -u root mysql
  13. mysql> show tables
  14. Try 'mysqld --help' if you have problems with paths. Using --log
  15. gives you a log in /mnt/data/mysql/ that may be helpful.
  16. Please consult the MySQL manual section
  17. 'Problems running mysql_install_db', and the manual section that
  18. describes problems on your OS. Another information source are the
  19. MySQL email archives available at <a href="http://lists.mysql.com/" rel="nofollow" target="_blank" style="box-sizing: border-box; cursor: pointer; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0px 0px; background-repeat: initial;">http://lists.mysql.com/.</a>
  20. Please check all of the above before mailing us! And remember, if
  21. you do mail us, you MUST use the /usr/scripts/mysqlbug script!
复制代码
没有报错最好,如果有报错,那就把我最新刚刚生成好的新数据库文件复制进去吧,替换那些生成的数据库文件就好了点击我下载
之后再输入如下命令就可以正常启动mysql了
  1. root@OpenWrt:~# /etc/init.d/mysqld start
  2. Starting MySQL daemon... done
复制代码
可以看到mysql已经成功启动了
当然我们也可以输入
  1. /etc/init.d/mysqld stop
复制代码
来关闭mysql,只是现在千万别输入这个命令关闭mysql!!!
输入如下命令创建mysql的密码
  1. /usr/bin/mysqladmin -u root password 123456
复制代码
或者
  1. /usr/bin/mysqladmin -u root password '123456'
复制代码
密码别学我也真的是123456哦
登陆数据库
  1. mysql -u root -p
复制代码
这个时候会提示你要密码。输入密码是没有任何提示符的。连*都没有哦。全看不见,盲操作之后成功进入数据库
如果一切正确你会看到的是
  1. root@OpenWrt:~# mysql -u root -p
  2. Enter password:
  3. Welcome to the MySQL monitor. Commands end with ; or \g.
  4. Your MySQL connection id is 877
  5. Server version: 5.1.53 Source distribution
  6. Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
  7. This software comes with ABSOLUTELY NO WARRANTY. This is free software,
  8. and you are welcome to modify and redistribute it under the GPL v2 license
  9. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  10. mysql>
复制代码
创建一个xxxx数据库
  1. mysql> create database ucenter
  2. -> \g
复制代码
记住这里一定要以\g结束,这个命令的意思就是传送你刚才输入的字符到数据库
查看数据库
  1. mysql> show databases
  2. -> \g
  3. +--------------------+
  4. | Database |
  5. +--------------------+
  6. | information_schema |
  7. | mysql |
  8. | test |
  9. | ucenter |
  10. +--------------------+
  11. 4 rows in set (0.17 sec)
复制代码
这个其实是可以不用做的输入如下命令
  1. mysql> \s
  2. --------------
  3. mysql Ver 14.14 Distrib 5.1.53, for openwrt-linux-gnu (mips) using readline 5.2
  4. Connection id: 879
  5. Current database:
  6. Current user: root@localhost
  7. SSL: Not in use
  8. Current pager: stdout
  9. Using outfile: ''
  10. Using delimiter: ;
  11. Server version: 5.1.53 Source distribution
  12. Protocol version: 10
  13. Connection: Localhost via UNIX socket
  14. Server characterset: latin1
  15. Db characterset: latin1
  16. Client characterset: latin1
  17. Conn. characterset: latin1
  18. UNIX socket: /var/run/mysqld.sock
  19. Uptime: 23 hours 8 min 53 sec
  20. 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的安装界面了!!!!




首先是协议确认,当然是只能同意咯




然后是安装环境检查。如果你有部分不支持,都会有所提示的,不让你安装的。可以作为服务器检测用




如果一切稳妥,就进入了第二步,设置运行环境,如果你之前有装过ucenter的话,那就选仅安装discuz。如果不是,那就点全新安装discuz吧。点全新安装discuz会连同ucenter一同帮你装到服务器上去!!!!建议全新安装,因为discuz X2附带的是最新版的ucenter。ucenter是discuz的核心程序。




这里我选的全新安装,老样子输入帐户密码。这里注意数据库服务器选择127.0.0.1否则连不上数据库。数据库名就是刚才你刚才 create database xxxx 创建的那个,数据库用户名,就是你的路由器顶级账户root,至于数据库密码吗
  1. /usr/bin/mysqladmin -u root password 123456
复制代码
如果那个时候是123456那么现在就依然是123456 管理员密码是可以自己设置的,无所谓多少的,别告诉我就可以了




一切顺利就会自动安装了,可能有时候会有点点卡!但是一定能安装好




之后基本你就可以访问自己的bbs了。只要输入地址http://192.168.1.1:88/bbs/就可以了




别高兴的太早,我那个bbs已经是经过我调试之后的结果了,你如果也想要有一个个性化的bbs的话,快点输入http://192.168.1.1:88/bbs/admin.php访问discuz的web管理页面吧




这里有太多的选项需要你选择了。我已经快崩溃了,架这个bbs如果只是说操作的话,顶多一个小时。设置这个bbs,我可真花了一天时间啊!!!我的天呢,尤其是对我这种新人,每一项都得仔细看,那个叫累啊!!!这里我就不指导大家了,大家自己自由发挥吧,实在不行顶多从装discuz吗^_^
别高兴的太早,你的discuz确实是可以用了,但是,如何让它每次都跟随路由器一同启动呢!!!




到openwrt的系统--启动--自定义脚本中,添加入
  1. /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上面输入http://你的IP地址/ 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然后保存就是了~~~
  1. // -------------------------- CONFIG OUTPUT --------------------------- //
  2. $_config<span style="box-sizing: border-box;">[</span>'output']<span style="box-sizing: border-box;">[</span>'charset'] = 'utf-8';
  3. $_config<span style="box-sizing: border-box;">[</span>'output']<span style="box-sizing: border-box;">[</span>'forceheader'] = 1;
  4. $_config<span style="box-sizing: border-box;">[</span>'output']<span style="box-sizing: border-box;">[</span>'gzip'] = '1';
  5. $_config<span style="box-sizing: border-box;">[</span>'output']<span style="box-sizing: border-box;">[</span>'tplrefresh'] = 1;
  6. $_config<span style="box-sizing: border-box;">[</span>'output']<span style="box-sizing: border-box;">[</span>'language'] = 'zh_cn';
  7. $_config<span style="box-sizing: border-box;">[</span>'output']<span style="box-sizing: border-box;">[</span>'staticurl'] = 'static/';
  8. $_config<span style="box-sizing: border-box;">[</span>'output']<span style="box-sizing: border-box;">[</span>'ajaxvalidate'] = '0';
  9. $_config<span style="box-sizing: border-box;">[</span>'output']<span style="box-sizing: border-box;">[</span>'iecompatible'] = '0';
复制代码
之后你送出去的数据就都有压缩的了!




看到论坛右下角Gzip on就是说明论坛压缩启动了^_^
写在最后 为什么要做这份教程
可能细心的朋友就已经发现了,我今天教大家架设的论坛,全部是基于开源软件的,要知道过去ddwrt或者说tomato也可以架设自己的论坛,但是这两款软件都不是完全开源的软件,我们并不可以编译自己的WRT操作系统,而openwrt不同,我们完全又能力做到这一点,创造出属于自己的一片天来。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表