交叉编译lighttpd并移植到tbox上,实现cgi调用
一、lighttpd
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