嵌入式web服务器goahead搭建并部署cgi程序

**

goahead Linux搭建

**
Ubuntu 22.04
goahead 5.2.1

下载源码

可以从官网下载:https://www.embedthis.com/goahead/
可以从GitHub或者码云下载,我是从码云下载的:https://gitee.com/mirrors/GoAhead?_from=gitee_search


我是在window端下载的,所以在window端解压了,随后使用虚拟机共享文件夹传到虚拟机中。也可以直接在Linux里下载解压


解压完之后

1、在goahead目录下执行./configure
在这里插入图片描述

2、执行make
在这里插入图片描述

3、编译完成之后,拷贝goahead/src目录下的self.crt和self.key文件到etc/goahead目录下
在这里插入图片描述
执行以下代码拷贝
在这里插入图片描述
拷贝self.key文件同理以上。
执行完成后
在这里插入图片描述
4、在goahead目录下执行sudo make install进行安装,并自动创建相关文件
在这里插入图片描述
5、进入goahead-5.2.1/build/linux-x64-default/bin目录下,启动goahead,执行代码./goahead -v --home /etc/goahead /var/www/goahead 0.0.0.0:1122
在这里插入图片描述
运行后,访问0.0.0.0:1122地址
在这里插入图片描述

cgi程序例子

goahead配置文件:在/etc/goahead下
goahead默认文档目录:/var/www/goahead

1、修改etc/goahead目录下的route.txt文件,文件显示只读,我是在终端执行代码sudo gedit route.txt进入修改的。进入之后,修改dir后的路径,这是存放cgi文件的根路径,比如说,我修改dir路径为/home/lyy/program/GoAhead/cgi,那么代码需要的cgi文件就应该存放在这个路径下的cgi-bin文件下
在这里插入图片描述
在这里插入图片描述
2、编写html,命名为login.html。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用户登陆验证</title>
</head>
<body>
<form name="form1" action="/cgi-bin/main.cgi" method="POST">
<table align="center">
<tr><td align="center" colspan="2"></td></tr>
<tr>
<td align="right">用户名</td>
<td><input type="text" name="Username"></td>
</tr>
<tr>
<td align="right">密 码</td>
<td><input type="password" name="Password"></td>
</tr>
<tr>
<td><input type="submit" value="登 录"></td>
<td><input type="reset" value="取 消"></td>
</tr>
</table>
</form>
</body>
</html>

3、编程main.c文件

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>

int main(void)
{
	//printf("Content-type:text/html\n\n"); //这句一定要加上
	fprintf(stdout, "Content-Type: text/html\r\n\r\n");
	
	char name[128];
	char passward[128];
	char buf[128];
	char *data;
	int len,i,m,n;
	char *method;
	
	
	method = getenv("REQUEST_METHOD");
	printf("method = %s\n",method);
	
	memset(name , 0 , sizeof(name));
	memset(passward , 0 , sizeof(passward));
	
	fscanf(stdin, "Username=%[^&]&Password=%s",name,passward);
	if(name[0] == '\0' || passward[0] == '\0')
		printf("name or passward error!");
	else
		printf("name=%s passward=%s\n",name , passward );
	fprintf(stderr, "passward = %s\n",passward);
	fprintf(stderr, "name = %s\n",name);
	len = atoi(getenv("CONTENT_LENGTH"));
	fprintf(stderr, "len = %d\n",len);
	fprintf(stdout, "$STATE$=1");
	return 0;
}

编写完成后进行编译,执行代码为 gcc main.c -o main.cgi
随后把编译成功后的cgi文件拷贝到存放cgi的路径,参考上面步骤1

4、启动goahead。在 /goahead-5.2.1/build/linux-x64-default/bin 目录下执行代码 ./goahead -v --home /etc/goahead /home/lyy/program/GoAhead/web 0.0.0.0:2233
(我写的html页面存放在/etc/goahead /home/lyy/program/GoAhead/web路径下)

说明:./goahead -v --home 配置文件路径 文档路径 绑定IP:监听端口

在这里插入图片描述
5、goahead启动之后,在浏览器浏览器打开0.0.0.0:2233/login.html
在这里插入图片描述
输入账号密码,点击登录后
在这里插入图片描述
在这里插入图片描述

说明,xxx.xxx.xxx.xxx:2233 这个相当于文件夹 web ,index是web中的默认访问文件名,可以省略,如果是其他文件名则不能省略。例如我上面用的是login,所以在打开浏览器输入的是 0.0.0.0:2233/login.html

参考文章

https://blog.csdn.net/weixin_40732273/article/details/107835028
https://blog.csdn.net/qq_38307618/article/details/81319358?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-1-81319358-blog-126393505.235v38pc_relevant_yljh&spm=1001.2101.3001.4242.2&utm_relevant_index=4

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值