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默認使用的80,https默認使用的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年我的第一篇博文,希望從此開始,每週一篇,記錄點點滴滴。也望讀者多多點贊,評論。