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源码目录
Goahead源码目录如下,install文件夹为安装相关目录,可安装linux macos和windows;paks文件夹是goahead的一些相关组件;projects文件夹为一些支持操作系统或编译工具的工程文件make工具、makeme工具、vs工具;src目录下为goahead源码用于生产goahead可执行程序;test为测试工程源码,用于生产goahead-test可执行程序。
-
Ubuntu运行goahead入门
-
解压源码,cmd进入goahead主目录,运行make指令,显示如下:
-
编译后在build目录下生成linux-x64-default文件夹,然后运行sudo make install,执行安装到本机(主要执行一些拷贝动作,将编译后的可执行文件和库拷贝到指定目录);
可执行文件安装目录:
Goahead快捷方式安装目录
网页根目录安装位置:
配置文件安装目录:
-
然后运行goahead,执行命令sudo goahead -v --home /etc/goahead /var/www/goahead :8008。
--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启动成功
-
Ubuntu运行goahead的test例子程序
Goahead源码的test目录下存放的是goahead开发例子程序,程序文件test.c是包含main函数程序文件,用于替换原来的goahead.c文件。
-
在主目录下执行make编译指令时test程序也已经编译,生成的目标文件为下图中test相关的文件,如目标程序为goahead-test(可执行程序)。
-
test程序编译后,sudo make install命令没有执行goahead-test文件的拷贝工作,因此需要手动将goahead-test拷贝到系统可执行目录下面,在goahead-test文件根目录中执行命令:sudo cp goahead-test /usr/local/lib/goahead/5.1.1/bin/将目标文件拷贝到安装目录中。
-
执行命令:sudo ln -s /usr/local/lib/goahead/5.1.1/bin/goahead-test /usr/local/bin/goahead-test
在系统可访问目录中创建一个goahead-test可执行文件的链接,如下图:
-
启动goahead-test程序,执行以下命令,网站根目录设置为源码中test文件夹下的web文件夹,其中/home/lph/DevelopTools/goahead/为作者goahead源码的存放目录。
sudo goahead-test -v --home /etc/goahead /home/lph/DevelopTools/goahead/goahead-5.1.1/test/web :8008:
-
静态网页测试:
-
Action网页测试
-
Asp网页测试
需要在rout.txt配置文件中增加配置:route uri=/ extensions=jst,asp handler=jst,说明.jst后缀和.asp后缀的网页使用jst句柄。
-
表单测试
-
CGI测试
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