999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

LAMP架構在嵌入式平臺上的移植與搭建

2018-10-24 04:39:04李小娜張釋如張雨珊趙榕
現代電子技術 2018年20期

李小娜 張釋如 張雨珊 趙榕

摘 要: 基于嵌入式的Web服務應用體系提出將通用服務器架構LAMP應用于嵌入式系統的設計思想。分析LAMP架構在嵌入式領域的應用優勢,設計嵌入式平臺上LAMP架構的具體實現方案,并給出LAMP中各個組件在移植、配置和優化中的具體方法。該架構為嵌入式系統的高級網絡應用提供了一種通用解決方案,其具體實現方法對嵌入式網絡服務及其監控系統的應用具有借鑒和參考價值。

關鍵詞: LAMP; MySQL; B/S架構; 嵌入式系統; Web服務; 網絡應用

中圖分類號: TN915?34; TP368.5 文獻標識碼: A 文章編號: 1004?373X(2018)20?0114?04

Abstract: A design idea of applying the general server architecture Linux?Apache?MySQL?PHP (LAMP) to the embedded system is proposed based on the embedded Web service application system. The advantages of applying the LAMP architecture in the embedded field are analyzed. The specific implementation scheme of the LAMP architecture on the embedded platform is designed. The specific methods for transplantation, configuration and optimization of every component in LAMP are presented. The architecture provides a general solution for the advanced network application of the embedded system. The specific implementation method of the architecture has a reference value for applications of embedded network service and its monitoring system.

Keywords: LAMP; MySQL; B/S architecture; embedded system; Web service; network application

0 引 言

隨著嵌入式系統對網絡功能需求的不斷提升,越來越多的嵌入式平臺移植了B/S架構的Web服務來提供網絡控制功能,在嵌入式網絡服務及其監控系統等方面有廣泛應用[1]。

目前,嵌入式平臺的Web服務做法基本是:以thttpd,boa,lighttpd等輕型服務器為主,配合移植SQLite,eXtremeDB等小型嵌入式數據庫,最后利用后臺CGI(Common Gateway Interface)服務程序,將采集的數據反映到Web頁面或存入數據庫。這些精簡架構雖然小巧靈活、結構簡單,但是其功能有限,也不具備普遍適用性,存在許多應用方面的問題。第一,在水質監測、農田信息檢測、糧倉監控等環境監控系統中,需要長期監測采集的信息,而大多數輕型嵌入式Web服務器穩定性不夠;第二,在智能家居、機房監控等場合,要求數據或系統能以動態模擬的方式呈現給用戶,僅靠CGI程序很難實現;第三,在工業控制領域中的預警處理、故障分析、安全監測等需要對數據庫表進行長期跟蹤與智能分析,而利用CGI操作大多數精簡型嵌入式數據庫不能實現完善的智能監測。

LAMP(Linux?Apache?MySQL?PHP)是指由 Linux 操作系統、Apache Web服務器、MySQL數據庫,以及超文本預處理器(Hypertext Pre?Proeessor,PHP)腳本語言組成的一種B/S服務架構,是當今能與 J2EE 和.Net 齊名的三大 Web 典型架構之一。由于J2EE中Oracle成本過高,而.Net移植性不好,所以LAMP成為目前唯一一個經過配置和優化能夠移植到嵌入式系統中的通用架構。LAMP架構基于Linux系統,Linux 作為一種 UNIX 操作系統,它是真正的多用戶、多任務、多平臺操作系統,具有穩定健壯、低成本、高性能、互操作性和開放源代碼等特點[2]。不同于傳統嵌入式精簡架構,Linux選用高穩定性的Apache服務器軟件,使用PHP動態頁面設計,并利用MySQL數據庫與PHP跨平臺連接的優勢,能夠實現具有普遍適用性的B/S服務系統,滿足信息監控對嵌入式系統的要求。

1 嵌入式LAMP系統的整體設計

LAMP 架構由4個組件構成,呈分層結構。每一層都提供了整個軟件的一個關鍵部分。

1) Linux:最底層,是整個架構的操作系統平臺。其穩定性很好,內核裁減配置方便,通用性好,支持絕大多數嵌入式硬件平臺;

2) Apache:次底層,是當今網站建設最常用的通用型Web服務器,具有良好的跨平臺和安全特性[3];

3) MySQL:代碼精簡的小型關系數據庫[4],與Apache服務器和PHP的兼容性好,通用性強,功能更加完善,其為深度嵌入,編程時需通過API接口進行訪問和操作,而不是直接使用SQL查詢命令;

4) PHP:簡單有效的動態Web頁面編程語言,與CGI和Perl相比,PHP動態頁面的執行效率更高,對MySQL提供的特殊接口能充分發揮PHP的數據處理優勢[5]。嵌入式環境下的LAMP采用PHP與CGI的配合共同完成服務程序的功能。

嵌入式的Web服務主要是在嵌入式設備中搭建Web服務架構軟件組,實現用戶與嵌入式設備之間的信息交流。在嵌入式系統中實現完整的B/S服務架構,需要根據嵌入式系統的特性做出相應調整,嵌入式的LAMP架構是以Apache服務器為服務核心;MySQL作為后臺數據庫支持;利用PHP實現Web前端網頁的高級動態顯示功能;并利用PHP實現與MySQL數據庫的交互;最后使用CGI與嵌入式系統其他數據采集或控制程序交互。圖1給出了嵌入式 LAMP在ARM平臺上的架構框圖。

在整個架構中,數據采集控制程序利用驅動程序提供的接口采集傳感器中的數據,將其傳給CGI服務程序且同時存入數據庫。CGI程序通過與服務器的標準接口將數據傳至服務器完成信息的實時顯示,同時接收從Web頁面表單傳入的請求信息,并將這些信息經過解碼重編后傳給控制程序,再由控制程序實現對設備的控制。PHP利用數據庫API對MySQL數據庫進行操作,經過分析處理之后,反映到由PHP設計的動態頁面上。

2 嵌入式Apache服務器的搭建

嵌入式Apache服務器是指在嵌入式系統中移植Apache服務器。服務器端軟件的守護程序始終在HTTP端口守候客戶的連接請求,當客戶端向服務器發起一個連接請求后,客戶和服務器之間建立起連接。守護程序在接收到客戶端HTTP請求消息后,對其進行解析,并將解析后的請求交給后臺處理程序。本文的后臺程序是PHP程序和CGI程序,待后臺程序處理完后,將客戶端需要的數據轉交給服務器,最后反映到Web頁面上。

2.1 Apache服務器的移植

Apache服務器在ARM?Linux系統上的移植主要步驟有[6]:

1) 添加Apache服務器的root權限

在編譯ARM源碼之前,由于PHP擴展了socket功能,需要用到socket的相關函數,而這類socket需要root權限,所以要讓Apache運行在root權限下。在Apache源碼包的include/http_config.h文件最開始添加下面語句:

然后在linux文件系統的/etc/目錄中建立兩個文件passwd,group,即添加一個用戶和用戶組,最后將Apache的配置文件httpd.conf中的user和group選項都改為root。

2) 移植Apache庫文件

Apache服務器的運行需要移植庫文件,可以在宿主機上直接編譯Apache源碼包,利用/user/local/目錄下生成的Apache庫文件,并將其移植到ARM平臺相同目錄下。

3) 配置Apache的PHP支持

配置Apache的PHP支持需要修改配置文件httpd.conf,將對應行改為對PHP的支持。

2.2 Apache服務器的配置與優化

對于嵌入式環境對服務器需求來看,一般同時訪問數量不會很大,訪問的請求類型比較固定,數據量也不會很大。如果每個請求都單獨開一個進程的話,就會占用太多的內存空間,但如果在單個進程中開太多線程處理請求,又會降低訪問成功率。

雖然Apache服務器相比其他輕型服務器需要消耗更多的系統資源,但是它可以工作在兩種模式下:prefork模式和worker模式。一般來說,Apache設定在prefork工作模式下,每個Apache進程只能同時服務于一個HTTP請求。這種模式的優勢在于每個進程不會互相干擾,穩定性較好,但每個進程需使用約2 000 kB內存,100個并發連接需用約200 MB的內存。當Apache服務器工作在worker模式下時,使用混合多線程多路處理模塊,讓每個子進程有多個處理線程,而每個線程服務于一個HTTP請求,這樣極大地削減了內存開銷,從而滿足高流量的服務場合。

利用Apache服務器MPM(Multi?Processing Module)多處理模塊的特點,通過對MPM配置,能夠優化多進程和多線程的操作,其中重要參數有[7]:

1) StartServers:設置httpd啟動時啟動的子進程數;

2) MinSpareServers:設置最小空閑進程數;

3) MaxSpareServers:設置最大空閑進程數;

4) MaxClients:設置Apache可同時處理的請求數;

5) MaxRequestsPerChild:設置每個子進程可處理的請求數。

這些參數對Apache服務器性能有很大影響,可以針對實際應用和板卡資源來設置Apache服務器;同時響應請求的個數、最多處理的進程數量以及每個進程開啟的線程數量,充分利用多進程與多線程的不同優勢。對于這些參數,可能需要經過反復調整試驗,使嵌入式服務器既能及時響應每個請求,又不至于因為負荷太大導致響應失敗。

3 嵌入式MySQL數據庫的搭建

嵌入式MySQL數據庫是一種為其宿主軟件或環境提供數據的模塊,通過對數據表合理的設計及數據存儲方式的科學選擇,使數據庫接到查詢指令后立即檢索信息并提交。

3.1 MySQL的移植

移植嵌入式MySQL數據庫的主要步驟有:

1) 添加ncurses支持

MySQL的交叉編譯過程需要ncurses庫的支持[8],所以首先要解壓安裝ncurses?5.9.tar.gz庫,并且需要修改configure文件,使編譯過程支持交叉編譯。即將文件中的if test "$cross_compiling"設置為yes;并注銷掉后面的錯誤打印語句。

2) 定義數據堆棧初值

需要在sql_parse.cc這個文件中添加對堆棧生長方面初值的定義,ARM平臺為1,所以添加定義語句:#define STACK_DIRECTION 1。

3) 安裝授權表

在運行數據庫之前,需要運行mysql_install_db ?u root安裝授權表,修改MySQLD的.cnf配置文件,并設置MySQL的安裝路徑basedir和data文件路徑datadir。

3.2 MySQL數據庫的配置與優化

嵌入式環境一般對數據的查詢時間要求并不是很高,且儲存的數據量也不會很大。因此需要配置MySQL數據庫,使其盡可能在保證查詢速率的同時減少內存開銷。通過在 my.cnf文件中添加以下代碼來配置慢查詢時間并啟動慢查詢:

log?slow?queries = /data/mysqldata/slowquery.log

然后根據需要設置慢查詢時間(例如long_query_time=4),經過一段時間使用之后找到比較慢的SQL查詢請求,并對它們進行針對性優化。另一方面,MySQL數據庫對相同查詢的反復執行會進行查詢緩處理,即利用內存暫存數據,這種方式不但增加了內存開銷,而且也無法存取到實時更新的數據。因此,可以在 MySQLD中強制加入一些限制來降低緩沖命中率,降低緩存空間,以保證有限的內存資源。

4 嵌入式動態交互方式的實現

目前的嵌入式Web頁面的開發模式是將界面不變的部分作為一個靜態頁面,以HTML格式存儲在ROM中,以方便嵌入式系統直接操作;利用標記替代法提供Web動態服務,對需要動態變化的內容作特殊標記,并將標記變量傳遞給CGI服務程序,由CGI完成與后臺數據的交互。本文中部分靜態和簡單動態的服務程序由CGI完成,而高級復雜的動態頁面通過PHP設計。

本文設計的CGI程序利用C語言編寫,能夠更方便地與底層驅動或嵌入式系統的其他應用層程序交互,主要CGI服務程序分為兩個模塊:

1) 程序交互模塊:CGI通過進程間通信的方式與底層控制程序、采集程序、驅動程序交互,實現對底層數據的獲取和控制命令的傳達。

2) 服務器交互模塊:CGI通過服務器提供的標準接口,接收表單的標記變量,并將從底層程序獲取的數據反饋給服務器。

在嵌入式Web頁面中實現高級動態功能需要用到PHP動態腳本或動態程序。由于PHP代碼是運行在服務器端的,利用服務器端的PHP程序實現對數據庫的操作,將數據庫中的數據動態地顯示到網頁上來。

實現PHP動態網頁[9],需要有PHP支持包,其移植需要先安裝移植zlib庫和libxml2庫。為了降低內存開銷,可以對PHP 配置文件php.ini中的一些參數進行配置:

1) max_execution_time:單一腳本占用CPU的時間(s);

2) max_input_time:單一腳本等待數據輸入的時間(s);

3) memory_limit:單一腳本運行時可占用的內存(B);

4) output_buffering :發送給客戶端的數據所占的緩存(B)。

根據具體應用情況,若用戶需要載入的數據不多,可適當減少max_input_time,并通過降低memory_limit值以降低單一腳本在運行中占用的內存。

5 結 語

嵌入式系統網絡化是嵌入式領域的市場發展方向,利用嵌入式LAMP能夠建立穩定性更好、數據處理能力更強、應用功能更加完善的監控系統。嵌入式設備成本低、體積小[10],這樣的監控系統一方面滿足了環境監測中對系統穩定性的要求,另一方面解決了照明控制、電源管理、閥門智能儀表中對數據的處理問題。筆者按照本文提出的設計方法,在ARM11開發板(核心芯片為S3C6410)上成功實現了一個嵌入式LAMP系統。該系統實現了服務器組件與嵌入式程序的交互,完成了數據的動態顯示與更新,可以對環境溫度和濕度進行實時監控。嵌入式的LAMP雖然功能強大,但系統開銷相對較大,這可通過PHP與AJAX,Java Applet等技術融合使客戶端與服務器的處理資源合理分配,并通過對LAMP各個組件的配置與優化,減小這種架構的運行開銷。隨著系統硬件性能的不斷提升,這種架構方案將會在圖書館嵌入式服務系統以及更多的嵌入式系統中得以應用。

參考文獻

[1] 劉風華,楊麗君.基于ARM的嵌入式煤礦視頻監控系統設計[J].現代電子技術,2014,37(16):8?10.

LIU Fenghua, YANG Lijun. Design of ARM?based embedded video monitoring system in coal mine [J]. Modern electronics technique, 2014, 37(16): 8?10.

[2] 雷文禮,任新成,高瑛.基于Linux平臺的通信軟件的設計與實現[J].現代電子技術,2015,38(17):30?33.

LEI Wenli, REN Xincheng, GAO Ying. Design and implementation of communication software based on Linux platform [J]. Modern electronics technique, 2015, 38(17): 30?33.

[3] 陸志烽.Linux下Apache服務器的搭建[J].數字技術與應用,2016(5):100.

LU Zhifeng. Construction of Apache server under Linux [J]. Digital technology and application, 2016(5): 100.

[4] NIXON R. Learning PHP, MySQL, JavaScript, CSS & HTML5 [M]. 3rd ed. Sebastopol: O′Reilly Media, 2014.

主站蜘蛛池模板: 亚洲va在线∨a天堂va欧美va| 国产高清在线丝袜精品一区| 伦精品一区二区三区视频| 狠狠v日韩v欧美v| 日韩av电影一区二区三区四区| 丁香六月激情婷婷| 欧美日韩一区二区三| 欧美一级99在线观看国产| 999国产精品| 国产精品私拍99pans大尺度| 国产欧美日韩综合一区在线播放| 99re66精品视频在线观看 | 国产女人18毛片水真多1| 国产亚洲精久久久久久无码AV| 欧美成人区| 亚洲久悠悠色悠在线播放| 国产精品香蕉| 黄色网在线| 超清无码一区二区三区| h网站在线播放| 国产亚洲视频在线观看| 美女高潮全身流白浆福利区| 国产香蕉在线视频| 国产又色又爽又黄| 国产精品免费电影| 久久大香伊蕉在人线观看热2| 欧美激情二区三区| 亚洲视频免费播放| 人妻免费无码不卡视频| 国产丝袜丝视频在线观看| 亚洲国产天堂久久综合226114| 国产成熟女人性满足视频| 欧美区国产区| 亚洲精品午夜天堂网页| 日韩在线播放中文字幕| 福利国产微拍广场一区视频在线 | 国产精品成人免费视频99| 99这里只有精品免费视频| 国产麻豆91网在线看| 精品国产三级在线观看| 国产精品浪潮Av| 欧美综合成人| 国内精品91| 26uuu国产精品视频| 国产精品亚欧美一区二区三区 | 伊在人亞洲香蕉精品區| 91国内在线观看| 99久久人妻精品免费二区| 秘书高跟黑色丝袜国产91在线 | 五月综合色婷婷| 国产成人精品日本亚洲| 国产成人免费视频精品一区二区| 91精选国产大片| 日韩欧美中文在线| 国产青榴视频在线观看网站| 国产在线麻豆波多野结衣 | 亚洲综合片| 欧美日本激情| 亚洲天堂.com| 无码国产伊人| 亚洲中文字幕日产无码2021| 亚洲美女一级毛片| 成人伊人色一区二区三区| 国产拍在线| 久无码久无码av无码| 2021国产精品自拍| 免费播放毛片| 亚洲经典在线中文字幕| a天堂视频在线| 一级福利视频| 欧美色视频日本| 99热最新在线| V一区无码内射国产| www.精品国产| 亚州AV秘 一区二区三区| 黑色丝袜高跟国产在线91| 一区二区三区国产精品视频| 精品久久久久久久久久久| 国产农村妇女精品一二区| 色香蕉影院| 三级国产在线观看| 国产一线在线|