HG255d通過U盤搭載php服務器

經過不斷刷寫、u盤掛載啓動,到了要安裝服務器時,發現opkg update的地址文件已經過期,回頭看固件版本是2012年的,也就是不能安裝服務器必須的軟件,如果一個個找當然可以,但是效率低下。於是更換 /etc/opkg_conf的取包地址,找了若干個其它目錄下的package.gz文件,運行opkg install php但依然找不到需要的軟件,索性換個新版本嘗試。於是經過一天折騰後再重新來過~~~

1.   HG255d ttl線刷

固件: http://downloads.openwrt.org.cn/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.org.cn/下的各種package咯~~~由於在putty上查看文件/var/opkg-lists/pandorabox是亂碼,所以直接在PC上下載各個package,然後用editplus查看,用記事本查看也可以,都不亂碼,只不過記事本顯示效果不好。嘗試了兩個網址的package如下:

http://downloads.openwrt.org.cn/backfire/10.03.1/rb532/packages/

http://downloads.openwrt.org.cn/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/my.cnf信息,舊的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通信了,呼呼~~~~~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章