網路伺服器設計

2021-07-13 14:55:58 字數 4114 閱讀 4033

資訊家電網路伺服器設計

2016 年  6  月

目     錄

第三章 嵌入式平台開發環境

3.2 軟體開發環境

3.2.1 交叉編譯開發環境的建立

第二步 安裝交叉工具鏈

2.解壓arm-linux-gcc-3.4.1.tar.bz2

#tar -jxvf arm-linux-gcc-3.4.1.tar.bz2

3.進入該資料夾,將arm資料夾拷貝到/usr/local/下

# cd usr/local/ 

#cp -rv arm /usr/local/現在交叉編譯程式集都在/usr/local/arm/3.4.1/bin下面了

3.修改環境變數,把交叉編譯器的路徑加入到path。修改/etc/bash.bashrc檔案 #vim /etc/bash.bashrc

在最後加上:export path=$path:/usr/local/arm/3.4.1/bin

4.立即使新的環境變數生效,不用重啟電腦:

#source /root/.bashrc

5.檢查是否將路徑加入到path:

# echo $path 顯示的內容中有/usr/local/arm/bin,說明已經將交叉編譯器的路徑加入path。至此,交叉編譯環境安裝完成。

6.測試是否安裝成功

# arm-linux-gcc –v 

7.編譯hello world程式,測試交叉工具鏈

寫下下面的hello world程式,儲存為hello.c

#include

intmain()

執行下面的命令:

# arm-linux-gcc -o hello hello.c

第四章 嵌入式web伺服器的移植與實現

4.3  boa伺服器的移植

4.3.1  boa的編譯 

2. 解壓:tar xzfboa-0.94.13.tar.gz

3. 進入解壓後的資料夾boa-0.94.13內部的 src資料夾,對原始檔進行如下修改

1     由於arm-linux-gcc 編譯器版本過高,對語法的支援有一些改變,所以需要修改compat.h中的
2      #define timezone_offset(foo) foo##->tm_gmtoff
3 為:
4
5      #define timezone_offset(foo) foo->tm_gmtoff
4. 然後生成makefile:./configure

5. 修改生成的makefile:預設生成的makefile針對x86平台,我們的目標是針對嵌入式平台,所以需要修改編譯器.

1 更改makefile的31行和32行:
2 cc = gcc
3 cpp = gcc -e
4 更改為
5 cc = arm-linux-gcc
6 cpp = arm-linux-gcc –e
6. 在當前目錄下編譯boa原始檔:make

7. 將生成好的boa可執行檔案去掉冗餘資訊: arm-linux-strip boa.

4.3.2  boa移植到ok6410中

1 (1) 修改25行的port埠,用來設定伺服器監聽的埠:
2 # port: the port boa runs on.  the default port for http servers is 80.
3 # if it is less than 1024, the server must be started as root.
4
5 port 80
7 #listen 192.68.0.5
8 (3) 修改53、54行的user和group 啟動的uid和gid,使其以root身份啟動
9 #  user: the name or uid the server should run as.
10 # group: the group name or gid the server should run as.
11
12 user root
13 group root
14 (4) 修改116行的documentroot位址,即客戶端要顯示的html頁面存放位置
15 # documentroot: the root directory of the html documents.
16 # comment out to disable server non user files.
17
18 documentroot /usr/local/boa
19 (5) 修改輸入網頁輸入主機ip時要顯示的頁面:這裡設為index.html
20  # directoryindex: name of the file to use as a pre-written html
21 # directory index.  please make and use these files.  on the
22 # fly creation of directory indexes can be _slow_.
23 # comment out to always use directorymaker
24
25 directoryindex index.html
26 (6) 修改cgi程式存放的位置:以http://ip/cgi-bin/cginame 的方式執行cgi 程式時將在/usr/local/boa/cgi-bin 目錄下尋找該程式
27 # scriptalias: maps a virtual path to a directory for serving scripts
28 # example: scriptalias /htbin/ /www/htbin/
29
30 scriptalias /cgi-bin/ /usr/local/boa/cgi-bin/
2. 將配置檔案boa.conf 移動到ok6410的 /etc/boa/ 目錄下。
3. 建立/var/log/boa/ 目錄,這樣boa伺服器啟動時會在該目錄下建立日誌檔案。
4. 將linux系統上/etc/mime.types 檔案複製到ok6410的/etc 目錄下,否則boa伺服器啟動不起來。
4.3.3  測試boa伺服器

1.    靜態頁面測試:

2.      cgi 

程式測試:

#include
int  main()
4.4 sqlite資料庫的移植

4.4.1  sqlite的編譯

2.解壓#tarxvfz sqlite-3.5.6.tar.gz

3.     #./configure--prefix=/home/user_name/sqlite/sqlite-arm --disable-tcl --host=arm-linux--prefix=/home/sqlite-3.6.18/sqlite-arm-linux/

4.編譯並安裝 #make && make install

6.為了減小執行檔案大小,去掉其中的除錯資訊#arm-linux-strip sqlite3

4.4.2  sqlite移植到ok6410中

1.將bin目錄下的sqlite3拷貝到根檔案系統的bin目錄下。

2.將lib目錄下的.so系列檔案和pkgconfig目錄拷貝到根檔案系統的usr/lib目錄下

第五章 armlinux下實現動態頁面的cgi技術

5.2  登入實現

index.html

請登入

$flag3s

led燈的配置檔案

config.ini

led1=0,led2=1,led3=0,led4=1

顯示結果如下:

關於網路伺服器

假如我有數千萬甚至是上億的使用者資料,我想把使用者自增id和使用者名稱username放到快取裡。我的需求是,當要查詢使用者的資訊時,我想先從快取裡根據使用者名稱username獲取到使用者的id,然後再通過id在資料庫裡查詢使用者的資訊。我想當乙個使用者表達到上億的數量級別時,用自增id來查詢肯定...

網路伺服器宕機

1.伺服器程序終止 當伺服器程序終止時,伺服器傳送fin給客戶端,客戶端回以ack,客戶端進入close wait狀態,但還沒有結束連線。此時客戶端阻塞於fgets,客戶端繼續傳送buffer,伺服器傳送rst,客戶端readline返回0。而如果客戶端不理睬readline返回的rst,繼續wri...

linux網路伺服器

在本次中,學習了乙個簡單的基於tcp ip的伺服器 客戶端。在例子中,利用的是af inet域。在linux下,最常用就是af inet,af unix.af unix是linux檔案系統實現的本地要借字。後面的是可以用於包括英特網在內的tcp ip網路通訊的程式。下面來看乙個簡單的基於tcp ip...