下载:http://www.boa.org/boa-0.94.13.tar.gz
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 -Emake 编译
遇到问题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。根据你的需求选择适合的方案即可。
虚拟机