没志青年
发布于 2025-09-08 / 14 阅读
0

boa 服务器搭建

官网:Boa Webserver

下载:http://www.boa.org/boa-0.94.13.tar.gz

boa交叉编译(移植到arm)-CSDN博客

boa(web服务器)之交叉编译、移植、cgi、文件上传篇_boa cgi-CSDN博客

zhege

web服务器boa的交叉编译_arm交叉编译boa-CSDN博客

ARM 交叉编译

src 目录下

./configure

修改 Makefile

CC = arm-linux-gnueabihf-gcc
CPP = arm-linux-gnueabihf-gcc -E

make 编译

遇到问题1

util.c:100:39: error: pasting "t" and "->" does not give a valid preprocessing token
         time_offset = TIMEZONE_OFFSET(t);
                                       ^
compat.h:120:30: note: in definition of macro ‘TIMEZONE_OFFSET’
 #define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
                              ^~~

修改 compat.h 第 120 行

#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff

改为

#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

遇到问题2

/usr/bin/ld: log.o:/Embbed_WorkSpace/lib/boa-0.94.13/src/log.c:29: multiple definition of `error_log_name'; config.o:/home/hltj/Desktop/Embbed_WorkSpace/lib/boa-0.94.13/src/config.c:61: first defined here
/usr/bin/ld: log.o:/Embbed_WorkSpace/lib/boa-0.94.13/src/log.c:30: multiple definition of `access_log_name'; config.o:/home/hltj/Desktop/Embbed_WorkSpace/lib/boa-0.94.13/src/config.c:62: first defined here
/usr/bin/ld: log.o:/Embbed_WorkSpace/lib/boa-0.94.13/src/log.c:31: multiple definition of `cgi_log_name'; config.o:/home/hltj/Desktop/Embbed_WorkSpace/lib/boa-0.94.13/src/config.c:63: first defined here
collect2: error: ld returned 1 exit status

修改 log.c 29 ~ 31 行

extern char *error_log_name;
extern char *access_log_name;
extern char *cgi_log_name;

一定要把 boa.c 225 ~ 227 三行注释掉,否则启动失败!!!

     //   if (setuid(0) != -1) {
    //       DIE("icky Linux kernel bug!");
     //  }

可执行文件瘦身

arm-linux-gnueabihf-strip boa

开发板创建必要的目录和文件

# 1)将boa可执行程序、boa.conf拷贝至以下目录
mkdir -p /etc/boa
cd /etc/boa/
chmod 755 boa
chmod 755 boa.conf
 
# 2)# html文件目录
mkdir -p /var/www
chmod 755 /var/www/ -R
 
# 3)cgi文件目录
mkdir -p /var/www/cgi-bin
chmod 755 /var/www/cgi-bin/ -R
 
# 4)日志
mkdir -p /var/log/boa
touch /var/log/boa/error_log
touch /var/log/boa/access_log
chmod 755 /var/log/boa/ -R

一定要在开发板上创建,否则会找不到文件或目录,

配置文件中修改

User root
Group root

运行

/etc/boa/boa

运行报错

Could not open mime.types file, "/etc/mime.types", for reading

把 Ubuntu 虚拟机中的 /etc/mime.types 文件拷贝过去

配置文件:

# 1024 以下必须root运行
Port 8088
Listen 0.0.0.0

User 0
Group 0

ErrorLog /var/log/boa/error_log
AccessLog /var/log/boa/access_log

DocumentRoot /var/www
UserDir public_html
DirectoryIndex index.html
DirectoryMaker /etc/boa/boa_indexer

KeepAliveMax 1000
KeepAliveTimeout 10
MimeTypes /etc/mime.types
DefaultType text/plain

# 保持默认
Alias /doc /usr/doc

# CGI程序的环境变量,要不然cgi程序无法使用哪些系统库或是第三方库
CGIPath /bin:/usr/bin:/usr/local/bin

# 前面是访问cgi的别名,后面是cgi程序所在目录
ScriptAlias /cgi/ /var/www/cgi-bin/

注意,cgi的路径最后一定要有 / ,不能是/var/www/cgi-bin,这个错误我找了好久!!!

在运行 Boa 服务器时遇到 No such group: nogroup 错误,通常是因为 Boa 尝试以一个名为 nogroup 的组身份运行,但系统中没有这个组。这个问题可以通过以下几种方式解决:

1. 检查系统中是否存在 nogroup

在大多数 Linux 发行版中,nogroup 是一个默认的组,用于那些不需要特定权限的进程。你可以使用以下命令检查 nogroup 是否存在:

bash

复制代码

grep nogroup /etc/group

如果没有输出,说明系统中没有这个组。

2. 创建 nogroup 组

如果系统中没有 nogroup 组,可以手动创建:

bash

复制代码

sudo groupadd nogroup

3. 修改 Boa 的配置文件

如果你不想使用 nogroup,可以修改 Boa 的配置文件 /etc/boa/boa.conf,将 nogroup 改为系统中已有的一个组。例如,使用 nobody 组:

打开配置文件:

bash

复制代码

sudo nano /etc/boa/boa.conf

找到类似于以下内容的行:

bash

复制代码

Group nogroup

将 nogroup 改为 nobody 或其他已有的组:

bash

复制代码

Group nobody

保存并退出,然后重启 Boa 服务器。

4. 使用默认组运行 Boa

你也可以修改 Boa 的启动命令,直接以默认的用户和组运行,而不使用配置文件中的 Group 设置。例如,以 root 身份运行 Boa:

bash

复制代码

sudo boa -c /etc/boa/boa.conf

这种方法不推荐用于生产环境,因为以 root 身份运行可能存在安全风险。

总结

No such group: nogroup 错误的解决方案主要包括创建 nogroup 组、修改配置文件以使用其他组,或者以默认用户和组运行 Boa。根据你的需求选择适合的方案即可。

虚拟机