经过不断刷写、u盘挂载启动,到了要安装服务器时,发现opkg update的地址文件已经过期,回头看固件版本是2012年的,也就是不能安装服务器必须的软件,如果一个个找当然可以,但是效率低下。于是更换 /etc/opkg_conf的取包地址,找了若干个其它目录下的package.gz文件,运行opkg install php但依然找不到需要的软件,索性换个新版本尝试。于是经过一天折腾后再重新来过~~~
1. HG255d ttl线刷
固件: http://downloads.openwrt/PandoraBox/HuaWei_HG255D/PandoraBox-ralink-hg255d-r476-20140708.bin
TTL接口连线:Tx空Vcc地Rx(靠近边沿),连接时不用接Vcc,避免烧坏。(如果后续按2之后没反应,可以对调Tx与Rx即可)
将下载的固件重命名140708.bin(方便),放在tftpd32目录下,然后启动tftpd32。要保证计算机和路由在同一个子网下,设置之前先连接网线到路由器,如图
打开超级终端(hypertrm.ext),新建连接(这里命名HG)选择com口,波特率57600&&数据流控制为无;建立连接完成。
重启路由器,在超级终端迅速按下2,这里如图,选择Y即可
接下来是写地址和文件信息了,每一行写完回车即可,如图:
中间状态如下:
然后是这样的:
稍作等待,坐等刷机完成!!!用putty连接登录,上图:
2. 设置U盘启动OpenWrt
格式化U盘,直接在电脑上格式化,格式为NTFS,选择NTFS是因为之前刷的版本选用FAT格式的话u盘无法写数据,这个版本就不再尝试其它格式了。
查看u盘信息键入命令:fdisk -l
/dev/sda4是挂载设备名称;
/mnt/sda4也就是挂载点。
现在在这里把u 盘再格式化一次,先要卸载已经挂载的优盘才能格式化
接下来将openwrt拷贝到U盘:
首先创建两个临时目
挂载sda4到/tmp/sda4目录下,挂载根目录到/tmp/root目录下,复制/tmp/root文件夹下的所有内容到/tmp/sda4文件夹下,三条命令如下:
完成上面的操作后,卸载所挂载的设备:
修改/etc/banner,添加启动标识,方便知道是否是从U盘启动(非必要设置):
然后是对/etc/config/fstab的配置,改动之前的内容如下:
config global
option anon_swap '0'
option anon_mount '0'
option auto_swap '1'
option auto_mount '1'
option delay_root '5'
option check_fs '0':
config mount
option enabled '1'
option device '/dev/sda4'
option uuid '239de833-c63d-4b0c-87ce-a22f3e3213b4'
option target '/mnt/sda4'
option fstype 'ext2'
option options 'noatime'
更改之后
保存退出后,输入reboot命令,然后putty断开连接,此时路由器重新启动,再次打开putty连接到路由器,结果如下:
上图可以看到已经从U盘启动,再查看磁盘信息如下,可以看到u盘已经挂载到/overlay下了。
在完成上述步骤之后,拔掉优盘后是不能启动路由器的,如果想不带优盘重启路由器,可以reset一下。
3. 服务器搭建
首先得连上外网,由于实验室的ip和mac是静态绑定的,所以要设置路由的wan网络接口,通过PC访问192.168.1.1设置即可(注意这是针对静态ip而言),设置结果如下:
通过putty查看网络状态如下,说明已经连接到外网。
接下来就是更新搭建服务器必要的ipk了,之所以使用最新的openwrt,是因为一些旧的版本的opkg_conf(此文件位置是/etc/opkg_conf)已经过时了,先看看最新版本的opkg配置:
很多旧版本的 src/gz网址已经不复存在了,之前一直以为opkg update失败的原因是实验室网络问题(网络真的很有问题,登扣扣都经常掉的那种,还限制很多端口),花了好长一段时间查看配置信息,取了旧版本上面的网址,发现在浏览器中打不开~~~~于是豁然开朗了,就找了好多代替的packages,但是还是找不到所需。索性就换了。新版网址是可以ping通的。
在确定配置信息无误后update 一下:
下载的包在目录/var/opkg-lists/pandorabox下,用vi打开是乱码的(之前的版本并不是乱码,具体问题还不详),里面就有需要的ipk了。
这时候可以安装php5 试一下,咦?出现unknown package的错误,并没有提示是软件不合固件版本的错误,也就是这个包里面没有此软件。。。不同的版本由于下载包网址不同,包里的软件也不尽相同,所以有的版本是可以直接安装成功的(网上的教程大多都可以,所以可参考性不强~~)。
于是再看http://downloads.openwrt/下的各种package咯~~~由于在putty上查看文件/var/opkg-lists/pandorabox是乱码,所以直接在PC上下载各个package,然后用editplus查看,用记事本查看也可以,都不乱码,只不过记事本显示效果不好。尝试了两个网址的package如下:
http://downloads.openwrt/backfire/10.03.1/rb532/packages/
http://downloads.openwrt/PandoraBox/ralink/mt7620/packages/
打开两个package查找php5,都可以找到软件包的信息,使用默认网址下载的package找不到php的信息。Opkg update后,在使用第一个网址安装php(opkg install php5)会出现错误,提示软件与系统版本不符合,也就是使用此编译版本的openwrt不能使用该目录下的package。换作第二个网址,安装成功。
准备工作已经就绪,现在安装Nginx,PHP与MySQL软件,一次性安装下面所有软件:
opkg install php5php5-mod-gd php5-mod-session php5-mod-pdo php5-mod-pdo-mysql php5-mod-mysqlphp5-mod-mcrypt php5-mod-mbstring php5-fastcgi php5-cgi php5-mod-xmlphp5-mod-ctype php5-mod-curl php5-mod-exif php5-mod-ftp php5-mod-iconvphp5-mod-json php5-mod-sockets php5-mod-sqlite3 php5-mod-tokenizer php5-mod-zipmysql-server nginx spawn-fcgi zoneinfo-core zoneinfo-asia shadow-groupaddshadow-useradd
注:
1. Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。也有好多使用的是lighttpd,条条道路通罗马^_^。
2. mysql在这次light项目中并不需要,但是为以后拓展方便,安装无妨。
新建用户组www和用户www,以便特定用户(www)访问:
再建立light目录,安装light网页项目文件,然后更改该目录为www用户所有。
参考很多文档是这样写的:
OpenWRT设计的一个优点,它采用了一种叫Overlay透明挂载技术,首先将/rom(此时是U盘)挂载为/根文件,然后再用/overlay覆盖在/之上。
查看磁盘信息:df –h,并没有找到/mnt/sda4的挂载点,也就是说如果此时把网页项目放在此目录下,相当于存放在路由器的ROM中的,因为此时U盘的挂载点为/overlay
创建数据库文件目录,在/overlay下创建,也就是在U盘上创建。
修改/etc/myf信息,旧的dir被注释,新的dir为刚建立的两个目录。
创建默认数据库/usr/bin/mysql_install_db –force,会提示有各种操作,如图:
启动mysql:/etc/init.d/mysqld start
修改密码:/usr/bin/mysqladmin –u root password admin
登录mysql:mysql –u root –p 然后提示输入密码:admin
新建数据库:create databases(database也可) helloword,
显示数据库:show databases(database会出错),如图:
退出命令:quit
此时可以查看一下新建两个目录里面是否有数据,mysql目录应该有这几个数据库:
配置服务器Nginx:
/etc/nginx/nginx.conf更改如下:
在上图中http最后一句include的文件要新建一下:vi /etc/nginx/vhost.conf,配置如下:
注:在此固件下载的nginx配置文件nginx.conf包含有vhost.conf文件所包含的信息,中间调试有些错误,于是把原配置文件备份为nginx.conf.bak方便以后对照查找,源文件把include那句换成vhost.conf文件的内容。配置信息以现在说明的配置为准,因为已经在原来的配置文件基础上作了很多修改。
看vhost.conf文件最后一句include fastcgi_params,于是又要配置一下该文件的内容,该文件同样存在目录/etc/Nginx下。这里更改的较少。
最开头要检查文件名信息,要加入下面代码:
然后在SCRIPT_NAME处修改目录如下:(被注释的是默认的值)
修改php配置信息,vi /etc/php.ini修改信息如下,也可以把原来的配置文件删了重新写,因为默认php.ini很多不必要的信息,一条条找很麻烦。如果显示不了网页,可以注释第二句:
所以必备的配置信息已经更新完成。
在/overlay/www/light目录下新建index.php,写个hello world。
现在启动spawn-fcgi:
注:CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的 fork-and-execute 模式)。Spawn-FCGI是一个通用的FastCGI管理服务器。
再启动Nginx服务:
也可以开机自启,设置/etc/rc.local文件如下(注释掉exit 0):
启动后,访问网页192.168.1.1:8080/light/index.php,亲测成功!!!~~~
4. 后续补充~
后续补充也是与时俱进嘛~ 上面的东东搭载好了,接着就是实际运用咯:小组要做一个智能家居控制系统,现在要在服务器上搭建个特定应用,供移动端或PC端访问控制,也就涉及到TCP通信了。。。
把网站项目传到/overlay/www/下,重启服务器,在PC端输入网址,回车~~~bug来了,页面是有咯,但是php的TCP通信部分出现了语法错误,很显然,错误在于没有相应的库函数。其实从错误的结果来看就知道缺少了sockets.so这个共享库,只要在/etc/php.ini中加上extension=sockets.so就好了。修改完了,重启重新访问,依然有错~~~
回想当时配置php.ini的时候,写了一句比较幼稚的话:
错就错在把原来php.ini的删了,新建了短小精悍的配置文件,这样确实能初测通过,但是后续复杂的拓展错误会层出不穷咯。
运行opkg remove php5可以把php卸载了,由于软件存在依赖性,所以要输入:
然后再安装php5:opkg install php5,完了会看到/etc/php.ini有着好丰富的内容哦,根据系统配置改了就好,不要再把自以为没用的东东删了~~~
重启运行,现在就可以正常的TCP通信了,呼呼~~~~~~~
更多推荐
HG255d通过U盘搭载php服务器
发布评论