mini_httpd 嵌入式的移植過程


1 mini_httpd簡介

mini_httpd是常用的嵌入web服務器,可以支持http,https。我就是因爲需要支持https,所以進行了移植。


2.安裝編譯

2.1.

  首先mini_httpd-1.19目錄下查看README,但是沒有編譯的流程說明,不按套路出牌,有makefile,那就直接make

2.2.

   make

   編譯可能報錯getline啥的....

   解決辦法:

   修改htpasswd.c,因爲getline與標準庫的getline重名,將 getline 改爲 lgetline 即可。


3.建立你存放的網頁和cgi

mkdir www

mkdir /www/cgi-bin/http.cgi



4.創建mini_httpd的配置文件(畫重點,能不能正常使用mini_httpd全靠配置)

配置文件內容大致如下:


#使用的端口

port=8080

#用戶的使用權限

user=root

#存放網頁的目錄

dir=/www

#存放cgi的目錄

cgipat=cgi-bin/http.cgi

pidfile=/var/mini_httpd.pid

#存放log的文件

logfile=/tmp/mini_httpd.log

#設置的格式

charset=UTF-8

#支持ssl

ssl

#存放ssl證書的目錄

certfile=/etc/mini_httpd.pem



增加支持ssl是爲了支持https,如果是使用http就不需要。

端口配置缺省http默認使用的80https默認使用的443


5.生成SSL的證書

mini_httpd-1.19目錄下

修改makefile

去掉17-20行的註釋


SSL_TREE= $(TOPDIR)/apps/openssl-1.0.1e/openssl-install

SSL_DEFS= -DUSE_SSL

SSL_INC= -I${SSL_TREE}/include

SSL_LIBS= -L${SSL_TREE}/lib -lssl -lcrypto


同時還需要修改使用證書的時間

77行左右將天數365改爲3650

opensslreq -new -x509 -days 3650 -nodes -config mini_httpd.cnf -outmini_httpd.pem -keyout mini_httpd.pem


生成證書:

make cert

即可生成mini_httpd.pem


6.測試,啓用mini_httpd

mini_httpd -C /etc/mini_httpd.conf


bind:Addiessalready in use
startedas root without requesting chroot(), warningonly

上面警告,但是mini_httpd已經啓動不用理會(具體警告原因,博主也沒有找出原因,有知道原因的還請告知)

啓用後如果在網頁上能正常打開https://localhost:8080

那就恭喜你OK了!


7.啓用mini_httpd後遇到的問題

在使用mini_httpd作爲服務器測試發現http.cgi調用不了一些應用程序,然後查看源代碼發現默認給出的bin路徑和lib庫路徑沒有完全包括使用的系統,需要修改mini_httpd.c裏面的

#defineCGI_PATH "/usr/local/bin:/usr/ucb:/bin:/usr/bin"

#endif/* CGI_PATH */

#ifndefCGI_LD_LIBRARY_PATH

#defineCGI_LD_LIBRARY_PATH "/usr/local/lib:/usr/lib"


改爲:

#ifndefCGI_PATH

#defineCGI_PATH "/usr/local/bin:/usr/ucb:/bin:/usr/bin:/usr/sbin:/sbin"

#endif/* CGI_PATH */

#ifndefCGI_LD_LIBRARY_PATH

#defineCGI_LD_LIBRARY_PATH "/usr/local/lib:/usr/lib:/lib"


修改後即可工作正常。


8.總結:

   以上都是在嵌入式的交叉編譯環境下調試,參考了不少其它博主的文章,也希望這篇博文可以帶給一些人幫助。這也是2017年我的第一篇博文,希望從此開始,每週一篇,記錄點點滴滴。也望讀者多多點贊,評論。




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