openwrt+uhttp+php环境架设

来自: ttp://www.gwa2011.com/bbs/forum.php?mod=viewthread&tid=103


鄙人在江苏省南京市,通过淘宝知道全球无线联盟,购得AE-010002无线路由器(RT-NT13UB1主板)。因为平时工作生活的需要,比如帐号管理(现在各个网站、软件、卡类等帐号密码过多,容易混淆忘记,又不宜使用相同帐号密码)、常用加密解密(MD5、3DES等)、亲戚朋友生日备忘等还有一些其他平时自己用的工具,于是自己写了一个“个人事务辅助平台”,希望能够随时随地打开即用,但个人网站建设租用空间费用过高,专门弄个低功耗的电脑开着消耗也没必要,自己用的平台访问量自然不会大,反正家里平时电脑、手机等多终端要无线上网,路由器一般也不关,索性把它架设到路由器上吧。
首先因为路由器内存有限、CPU主频比较低,还要做路由功用,所以本网站多采用html+js富客户端方式制作尽量减少服务器端开销,部分动态内容使用大家熟悉的php程序,并且多使用ajax局部刷新技术尽量减少与服务器交互数据量,数据库采用占用资源非常低的轻型数据库SQLite,为减少系统开销web server就不再另装了,直接采用openwrt内置的uhttpd。下面就拿一个简单的测试页面来说明架设方法。
以uhttpd+php+sqllite组合架设网站,下面开始:
1、挂载磁盘 (U盘文件系统为ext4)
在路由器上插一个U盘用来存储要发布的网页,例如我的U盘识别为设备/dev/sda1,挂载的目录为/mnt/overlay,可以使用命令挂载也可以使用图形管理界面,在“菜单--管理界面--磁盘应用--挂载点”进行添加挂载。这是linux基本知识这里不细说了,不会的可以google一下,挂载后如图:

我这里是一个U盘分了两个区所以显示两个,我们只需要用第二个就好了。
挂载完之后在/mnt/overlay中(也就是U盘中)建立www目录用来放置网页。

2、安装程序
php5
php5-cgi
php5-mod-ctype
php5-mod-hash
php5-mod-pdo
php5-mod-pdo-sqlite
php5-mod-session
php5-mod-sqlite
php5-mod-sqlite3
php5-mod-tokenizer
php5-mod-xml

编辑/etc/opkg.conf,加入如下一行:
dest udisk /mnt/sda1

使用下面命令把软件安装到U盘:
opkg update
opkg install -d udisk php5 php5-cgi php5-mod-ctype php5-mod-hash php5-mod-pdo php5-mod-pdo-sqlite php5-mod-session php5-mod-sqlite php5-mod-sqlite3 php5-mod-tokenizer php5-mod-xml
建立软连接,不然会找不到对应的库和配置文件:
cd /etc
ln -s /mnt/sda1/etc/php.ini php.ini
ln -s /mnt/sda1/etc/php5 php5
cd /usr/lib
ln -s /mnt/sda1/usr/lib/libpcre.so.0.0.1 libpcre.so.0
ln -s /mnt/sda1/usr/lib/libpcreposix.so.0.0.0 libpcreposix.so.0
ln -s /mnt/sda1/usr/lib/libsqlite.so.0.8.6 libsqlite.so.0      
ln -s /mnt/sda1/usr/lib/libsqlite3.so.0.8.6 libsqlite3.so.0
ln -s /mnt/sda1/usr/lib/libxml2.so.2.7.8 libxml2.so.2      
ln -s /mnt/sda1/usr/lib/libz.so.1.2.3 libz.so        
ln -s /mnt/sda1/usr/lib/php php
cd /usr/bin
ln -s /mnt/sda1/usr/bin/php-cgi php-cgi

安装成功后在管理界面可以查找到对应包,位置在“菜单--管理界面--系统--软件包”如图:


3、配置php
修改/etc/php.ini。
去掉下面行前面注释:
extension=ctype.so
extension=hash.so
extension=pdo.so
extension=pdo_sqlite.so
extension=sqlite.so
extension=session.so
extension=tokenizer.so
extension=xml.so
extension=xmlreader.so
extension=xmlwriter.so
修改行:
short_open_tag = On
;doc_root = "/www" 
date.timezone = Asia/Shanghai

4、配置uhttpd
在/etc/config/uhttpd最后添加:
config uhttpd web
list listen_http 0.0.0.0:88
option home /mnt/overlay/www
option index_page index.php
list interpreter ".php=/usr/bin/php-cgi"
88为访问端口,/mnt/overlay/www为放置网页的目录,这些都可以修改。
然后重启uhttpd:
/etc/init.d/uhttpd restart

5、环境测试
先写个简单的index.php网页上传到/mnt/overlay/www测试部署情况。
index.php代码示例:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>WEB环境部署测试</title>
<style type="text/css">
<!--
BODY{text-align:center;} 
TABLE{BORDER-COLLAPSE:collapse;}
TD,TH {BORDER:1px solid #000000;}
TH{BACKGROUND-COLOR:yellowgreen;FONT-WEIGHT:bold;}
-->
</style>
</head>
<body>
<h2>Congratulations on your success.</h2>
<table width="700" cellspacing="1" cellpadding="3">
    <tr><th colspan="2">服务器信息</th></tr>
    <tr>
       <td>主机名</td>
       <td><?=$_SERVER['SERVER_NAME']?></td>
    </tr>
    <tr>
       <td>主机地址</td>
       <td><?=$_SERVER['SERVER_ADDR'].":".$_SERVER['SERVER_PORT']?></td>
    </tr>
    <tr>
       <td>服务器软件</td>
       <td><?=$_SERVER['SERVER_SOFTWARE']?></td>
    </tr>
    <tr>
       <td>网站主目录</td>
       <td><?=$_SERVER["DOCUMENT_ROOT"]?></td>
    </tr>
    <tr><th colspan="2">SQLite 连接测试</th></tr>
    <tr>
       <td>SQLite</td>
       <td><?=function_exists("sqlite_close")?YES." / ".sqlite_libversion():NO?></td>
    </tr>
    <tr>
       <td>连接数据库(内存)</td>
       <td><b><? $db = sqlite_open(":memory:");?><?=($db?"<font color=green>连接正常</font>":"<font color=red>连接失败</font>");?><? sqlite_close ($db);?></b></td>
    </tr>
</table>
</body>
</html>
在浏览器中输入:
http://192.168.1.1:88/
后回车
看到如下界面:


OK,到此我们的web环境已经部署完毕,可以放入正式的网站使用。鉴于路由器硬件资源配置情况,建议大家在写网站时多考虑性能问题,减少服务器开销,减少数据交互,以保证网站可以平稳运行流畅访问。如有不妥之处欢迎大家批评指正,有说的不清楚不完善的地方可以互相交流,谢谢。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值