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默认使用的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.总结:


经验分享 程序员 微信小程序 职场和发展