**
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