goahead如何使用cgi服务_嵌入式web server——Goahead移植要点

本文介绍了如何在嵌入式Linux系统中移植Goahead Web Server,并配置CGI服务。主要步骤包括删除不必要的目录,修改配置文件me.h,编译生成可执行文件,设置目录结构,以及启动和验证Web Server的成功运行。此外,还提及了Goahead在VxWorks平台上的移植注意事项。
摘要由CSDN通过智能技术生成

前言

在嵌入式设备中,在没有液晶显示的情况下,可以使用web来访问设备,查看设备的运行状态以及进行参数设置,类似于路由器设置。网上有很多关于各种web server的优劣的评论,在此不讨论,只是介绍其中的Goahead在linux下移植的一些要点。

移植环境

goahead-3.4.9

arm + linux 2.6,交叉编译器arm-uclibc-gcc

移植要点

1、把src目录下的certs、utils、goahead-openssl目录都删除掉。

2、把osdep里面的osdep.h移到外层src去。

3、把goahead-linux-default-me.h拷到src目录,改名为me.h。

4、配置me.h,在开头添加两行,表示运行的环境。

#define __arm__ 1

#define __linux__ 1

5、不需要SSL,把me.h中两个宏都置为0。

#define ME_COM_OPENSSL 0

#define ME_COM_SSL 0

6、需要打印更多运行信息,把me.h中把宏ME_GOAHEAD_LOGFILE由stderr:0改为stderr:2。

#define ME_GOAHEAD_LOGFILE "stderr:0"

#define ME_GOAHEAD_LOGFILE "stderr:2"

7、setLocalHost中调用gethostbyname可能是失败的,导致运行不起来,直接不调用了。

8、route.txt需要改一下,把route uri=/cgi-bin handler=cgi 改为route uri=/cgi-bin dir=./web handler=cgi,表示cgi-bin目录在web目录下。

9、cgiHandler中要注释掉chdir(dir);,要不找不到cgi-bin下的程序,这样查找cgi程序时使用相对路径。

10、编写makefile,编译出来可执行文件goahead。

CC=arm-uclibc-gcc

#CC=gcc

#-Werror

FLAGS = -Wall -fPIC -g -O2 -s -ldl -lm -o

SOURCE_FILE = *.c

goahead: $(SOURCE_FILE)

$(CC) $(FLAGS) $@ $(SOURCE_FILE)

clean:

rm -rf goahead

.PHONY: clean

11、布署,创建目录/mnt/goahead,把编译出来的可执行程序goahead放在此目录下,goahead目录下再创建web目录,此目录存放一些网页相关的内容(如index.html,css,image等),在web目录下再创建cgi-bin目录,用于存放cgi程序。

12、./goahead执行可看到如下信息表示运行成功

goahead: 1: This system does not have IPv6 support

goahead: 2: Configuration for Embedthis GoAhead

goahead: 2: ---------------------------------------------

goahead: 2: Version: 3.4.9

goahead: 2: BuildType: Debug

goahead: 2: CPU: arm

goahead: 2: OS: linux

goahead: 2: Host: 0.0.0.0

goahead: 2: Directory: /mnt/goahead

goahead: 2: Documents: web

goahead: 2: Configure: me -d -q -platform linux-x86-default -configure . -with openssl -gen make

goahead: 2: ---------------------------------------------

goahead: 2: Started http://*:80

goahead: 2:

^^^^^^^^^^^ web start successful ^^^^^^^^^^^

13、在浏览器中输入ip即可看到,请求goahead的cgitest程序时,可见服务器的打印信息goahead: 2: GET /cgi-bin/cgitest HTTP/1.1,浏览器上显示的页面如下图所示。

附移植到vxworks

由于产品中还有vxworks平台,所以也曾移植到vxworks平台,移植的要点和linux下差不多,把goahead-vxworks-default-me.h复制到src目录下,改为me.h,并加上几个关键的宏定义即可。

#ifndef VXWORKS

#define VXWORKS 1

#endif

#ifndef OS

#define OS "VXWORKS"

#endif

#ifndef WEBS

#define WEBS 1

#endif

#ifndef UEMF

#define UEMF 1

#endif

#ifndef __mips__

#define __mips__ 1

#endif

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值