其他分享
首页 > 其他分享> > 2021-01-01

2021-01-01

作者:互联网

Goahead作为一个跨平台的微型web服务程序,完全开源代码,官方网站为www.embedthis.com。官网中包含wabapp个goahead两个web服务器源码。本文主要针对goahead在ubuntu系统中的使用测试。本文中使用的是goahead5.1.1版本(2020年5月22日下载时的最新版本)官网中只有goahead的一个网页版本说明,不得不说这个网页版的说明写的犹如天书,你必须通过阅读+推测+尝试+蒙圈+重新猜测+百度+尝试等等等等,才有可能找到最终可行的方法,而且goahead目前的源码中还有几处明显的bug,居然没有人修复,真怀疑这么好的开源东东,现在到底还有没有人在维护。经过多方尝试,终于跑通了goahead5.1.1版本的源码编译、安装、及test例子程序的测试,现将过程记录下来,为以后在使用时查阅,也方便准备使用的少侠们提前参考少走弯路。

本人使用的是make方法编译的,按照官网说明还可以使用makeme方法,也可在windows中使用make.bat脚本编译(这个本人未跑通),还可以通过windows中的visualstudio编译。

建议使用时多阅读goahead的源码来理解其过程,也可参考其源码中的各个readme.dat的文本说明(但不能全信,要自己验证)。重点参考test目录下的test.c源码,及route.txt配置文件。

Goahead源码目录如下,install文件夹为安装相关目录,可安装linux macos和windows;paks文件夹是goahead的一些相关组件;projects文件夹为一些支持操作系统或编译工具的工程文件make工具、makeme工具、vs工具;src目录下为goahead源码用于生产goahead可执行程序;test为测试工程源码,用于生产goahead-test可执行程序。

 

可执行文件安装目录:

Goahead快捷方式安装目录

网页根目录安装位置:

配置文件安装目录:

--home /etc/goahead指定goahead运行时加载配置文件的地址;

/var/www/goahead 为网页的跟目录;

:8008为服务器端口号,不输入的话默认为8080端口;

启动服务器时出现如下错误:()

goahead: 0: Unable to read key self.key

goahead: 0: Cannot initialize server. Exiting.

此时执行:

# cd src

# sudo cp self.crt self.key /etc/goahead/

将self.crt和self.key文件拷贝到/etc/goahead目录。

这个错误是因为makefile中存在bug所致,将650行的内容修改为651行内容也可解决这个bug。

 

 

Goahead源码的test目录下存放的是goahead开发例子程序,程序文件test.c是包含main函数程序文件,用于替换原来的goahead.c文件。

在系统可访问目录中创建一个goahead-test可执行文件的链接,如下图:

sudo goahead-test -v --home /etc/goahead /home/lph/DevelopTools/goahead/goahead-5.1.1/test/web :8008:

 

 

需要在rout.txt配置文件中增加配置:route uri=/ extensions=jst,asp handler=jst,说明.jst后缀和.asp后缀的网页使用jst句柄。

CGI测试时按照官方介绍输入网址127.0.0.1:8008/cgi-bin/cgitest一直报错goahead: 0: Cannot find CGI program:。是因为找不到cgitest文件路径所致。但报错没有更多提示到底是怎么找不到路径的,经过查找cig.c源码中报这条错误的地方发现源码中存在一个bug,如下图所示,源码中的107行要打印路径时少些了%s,图片中已经加上,打印出路径后发现程序自动将你在route.txt中配置的路径后面加了个/cgi-bin/,如你在route.txt中配置的路径为/home/lph/DevelopTools/goahead/goahead-5.1.1/test,实际你要存放cgitest文件的目录必须为/home/lph/DevelopTools/goahead/goahead-5.1.1/test/cgi-bin/。

还有一点要注意,cgitest文件的存放路径在route.txt文件中配置时,要么指定绝对存放路径,要么不指定是默认为/etc/goahead/cig-bin/。可以在指定路径/etc/goahead/cig-bin/下创建一个cgi-bin文件夹的链接,通过指令“sudo ln -s /home/lph/DevelopTools/goahead/goahead-5.1.1/test/cgi-bin/ /etc/goahead/cgi-bin”在文件夹创建链接文件/etc/goahead/下创建cgi-bin的链接文件。

通过浏览器访问127.0.0.1:8008/cgi-bin/cgitest:

 

 

 

标签:bin,01,etc,源码,2021,test,目录,goahead
来源: https://blog.csdn.net/lipenghui0804/article/details/112062145