1、下载boa源码
可以直接访问官网的连接去下载 。http://www.boa.org/
官网发布了一个Released Version 0.94.13和一个Development Version 0.94.14rc21。
一般情况下使用发布版本,所以使用boa-0.94.13.tar.gz。
但实际在使用时发现,0.94.13版本是无法直接编译通过的需要修改部分源码,而 0.94.14rc21是可以的。
2、拷贝压缩包到ubuntu本地,并进行解压
tar -xvf boa-0.94.13.tar.gz
解压后得到以下文件夹和文件:
boa.conf是boa服务器的配置文件,src目录里是boa服务器的源码。
3、编译生成boa可执行文件
进入src目录:cd src/
执行configure脚本:./configure,生成Makefile文件。
有了Makefile 文件后直接make进行编译
编译过程中产生的错误。
错误1:
原因:缺少bison或flex库。
解决: 直接安装这两个库:sudo apt-get install bison flex
重新make,产生如下错误。
修该源文件src/compat.h
line120:
#ifdef HAVE_TM_GMTOFF
//#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
#else
#define TIMEZONE_OFFSET(foo) timezone
#endif
重新make,编译结束后生成了可执行文件boa。查看boa文件大小:
ls -lh boa
-rwxr-xr-x 1 root root 304K 1月 14 11:01 boa
可以通过strip命令较小boa文件大小。
gcc-strip boa
运行boa
./boa执行程序。
执行报错1:Could not chdir to “/etc/boa”: aborting
解决:创建/etc/boa目录
关于该目录的定义在 defines.h中。
执行报错2:Could not open boa.conf for reading.
解决:拷贝boa-0.94.13/boa.conf文件到/etc/boa目录下。
执行报错3:[14/Jan/2021:03:19:55 +0000] log.c:73 - unable to dup2 the error log: Bad file descriptor
解决方案a:在系统中创建log文件夹,文件夹路径和文件参考boa.conf中的设置。
解决方案b:
找到log.c中此处代码位置,将出错代码注释掉。
if (dup2(error_log, STDERR_FILENO) == -1) {
DIE("unable to dup2 the error log");
}
推荐方案a解决。
执行报错4:Cannot open /var/log/boa/access_log for logging: logfile open: No such file or directory
解决:
在/var/log/ 下建立boa文件夹,并创建acccess_log文件和error_log文件 或 修改boa.confg中的设置。
重新运行boa,此时boa已经可以启动了。
ps -ef 查看boa进程号。