交叉编译lighttpd并移植到tbox上,实现cgi调用
编程 C++ 部署应用 20

一、lighttpd

Home - Lighttpd - fly light

Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。

优点:

  • 虚机的配置处理方式比 apache 直观,比Apache轻量

  • 轻量级web服务器,cpu占用低,效能好,模块丰富,对fastcgi支持非常好。

  • 支持高并发,和Nginx差不多,比apache性能高很多。

  • 缺点:

    • 稳定性没有Apache和Nginx高,bug相对较多

二、编译环境准备

原先的系统中已经安装了交叉编译工具链,只需要export到环境变量中,如下:

# config.sh 

export STAGING_DIR=/home/wenke.xu/ql_crosstools/ql-ag35-1806e-gcc-8.4.0-glibc-v1-toolchain
export PATH=${PATH}:/home/wenke.xu/ql_crosstools/ql-ag35-1806e-gcc-8.4.0-glibc-v1-toolchain/bin
# 设置交叉编译工具前缀
CROSS_COMPILE=arm-openwrt-linux-gnueabi-
# 设置工具链路径
export CC=${CROSS_COMPILE}gcc
export CXX=${CROSS_COMPILE}g++
export AR=${CROSS_COMPILE}ar
export RANLIB=${CROSS_COMPILE}ranlib
export STRIP=${CROSS_COMPILE}strip


三、编译pcre

lighttpd的使用依赖于pcre,pcre是一个正则表达式的库,在lighttpd中用于解析路径。

下载路径:PCRE - Perl Compatible Regular Expressions

cd /home/wenke.xu/softs
source ./config.sh

mkdir -p install/pcre

tar -zxvf pcre-8.43.tar.gz 
cd pcre-8.43
./configure --prefix=/home/wenke.xu/softs/install/pcre --host=${HOST} CC=${CC}
make
make install
ls /home/wenke.xu/softs/install/pcre/

三、编译lighttpd

修改config.sh,添加pcre的安装路径

# config.sh 

export STAGING_DIR=/home/wenke.xu/ql_crosstools/ql-ag35-1806e-gcc-8.4.0-glibc-v1-toolchain
export PATH=${PATH}:/home/wenke.xu/ql_crosstools/ql-ag35-1806e-gcc-8.4.0-glibc-v1-toolchain/bin
# 设置交叉编译工具前缀
CROSS_COMPILE=arm-openwrt-linux-gnueabi-
# 设置工具链路径
export CC=${CROSS_COMPILE}gcc
export CXX=${CROSS_COMPILE}g++
export AR=${CROSS_COMPILE}ar
export RANLIB=${CROSS_COMPILE}ranlib
export STRIP=${CROSS_COMPILE}strip

export PATH=$PATH:/home/wenke.xu/softs/install/pcre/bin
export PATH=$PATH:/home/wenke.xu/softs/install/pcre/include
export PATH=$PATH:/home/wenke.xu/softs/install/pcre/lib


cd /home/wenke.xu/softs
source ./config.sh

tar -zxvf lighttpd-1.4.54.tar.gz 
cd lighttpd-1.4.54
# 可能原始系统中已经安装了pcre,这里没有链接上面安装的pcre,如果需要链接,使用
# PCRE_LIB=/home/wenke.xu/softs/install/pcre/lib/libpcre.a CPPFLAGS=-I/home/wenke.xu/softs/install/pcre/include
./configure --prefix=/home/wenke.xu/softs/install/lighttpd --host=${HOST} --with-pcre
make
make install
ls /home/wenke.xu/softs/install/lighttpd/

四、运行在tbox上

将编译好的lighttpd和pcre/lib拷贝到板端,比如pcre/lib放到 mydata/lib下

export LD_LIBRARY_PATH=/mydata/lib:${LD_LIBRARY_PATH}

图中标注的是编译好的lighttpd库和可执行文件

修改配置文件,路径要与自己的保持一致:

五、测试

首先启动lighttpd服务器(run_lighttpd.sh):

#!/bin/sh

# 检查lighttpd进程是否存在,如果存在则终止它
if ps | grep -v grep | grep lighttpd > /dev/null; then
    echo "停止现有的lighttpd进程..."
    killall lighttpd
    sleep 1  # 等待进程完全终止
fi

# 启动Lighttpd服务器
echo "启动Lighttpd服务器..."
/mnt/hirain_extdata/xwk/lighttpd_static/sbin/lighttpd \
  -f /mnt/hirain_extdata/xwk/lighttpd_static/config/lighttpd.conf \
  -m /mnt/hirain_extdata/xwk/lighttpd_static/lib/

# 检查是否成功启动
if ps | grep -v grep | grep lighttpd > /dev/null; then
    echo "Lighttpd已成功启动!"
else
    echo "Lighttpd启动失败!"
    echo "检查错误日志:"
    tail -n 10 /mnt/hirain_extdata/xwk/lighttpd_static/log/error.log  # 根据实际日志路径调整
fi

chmod +x run_lighttpd.sh
./run_lighttpd.sh

curl http://3.3.3.3:8778/test.html
curl http://3.3.3.3:8778/cgi-bin/demo.cgi

注:demo.cgi是c++程序编译的,只不过重命名为了.cgi

交叉编译lighttpd并移植到tbox上,实现cgi调用
http://47.92.222.121:8090/archives/WsD5OFYp
作者
禧语许
发布于
更新于
许可