Lighttpd交叉编译及使用

/

软硬件环境

  • ubuntu kylin
  • lighttpd-1.4.35
  • mips toolchain
  • broadcom 7581

概述

Web服务器的主要功能是提供网上信息浏览服务。目前主流的Web Server有apache、nginx和kangle等,不过上述这些都体能齐全、体积庞大,如果想要在嵌入式设备上使用它们,显然是不现实的。本文介绍一种轻量级的web server,它能够很好地满足你的要求并且表现出色,它就是lighttpd。

交叉编译

下载源码,本文使用的是1.4.35版本

​ 下载地址: http://www.lighttpd.net/download/

编译(安装目录可以自行修改/home/djstava/Downloads/lighttpd-1.4.35/install)

  1. tar xvf lighttpd-1.4.35.tar.gz
  2. cd lighttpd-1.4.35
  3. ./configure --prefix=/home/djstava/Downloads/lighttpd-1.4.35/install --host=mipsel-linux-gnu --disable-lfs --disable-ipv6 --without-openssl --without-kerberos5 --without-pcre --without-zlib --without-bzip2 --without-lua "CC=mipsel-linux-gcc -EL" "CFLAGS=-EL" "LDFLAGS=-EL"
  4. make
  5. make install

配置

  1. cd /home/djstava/Downloads/lighttpd-1.4.35/install
  2. mkdir -p cache cgi-bin config log sockets vhosts webpages
  3. cp -rf lighttpd-1.4.35/doc/config/config.d lighttpd-1.4.35/doc/config/lighttpd.conf lighttpd-1.4.35/doc/config/modules.conf config/

修改config/lighttpd.conf

  1. var.log_root = "/home/djstava/Downloads/lighttpd-1.4.35/install/log"
  2. var.server_root = "/home/djstava/Downloads/lighttpd-1.4.35/install"
  3. var.state_dir = "/home/djstava/Downloads/lighttpd-1.4.35/install"
  4. var.home_dir = "/home/djstava/Downloads/lighttpd-1.4.35/install"
  5. var.conf_dir = "/home/djstava/Downloads/lighttpd-1.4.35/install/config"
  6. server.document-root = server_root + "/webpages"
  7. #server.username = "lighttpd"
  8. #server.groupname = "lighttpd"

启动服务

  1. ./sbin/lighttpd -f conf/lighttpd.conf

测试页面,将下面代码保存到webpages/index.html

  1. <html>
  2. <head>
  3. <title>lighttpd test</title>
  4. </head>
  5. <body>
  6. <p>lighttpd for mips-linux</p>
  7. </body>
  8. </html>

CGI配置

首先创建一个存放cgi程序的目录

  1. mkdir -p /home/djstava/Downloads/lighttpd-1.4.35/install/webpages/cgi-bin

修改config/conf.d/cgi.conf

  1. server.modules += ( "mod_cgi" ,
  2. "mod_access"
  3. )
  4. ##
  5. ## Plain old CGI handling
  6. ##
  7. ## For PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini.
  8. ##
  9. cgi.assign = ( ".pl" => "/usr/bin/perl",
  10. ".cgi" => "",
  11. ".rb" => "/usr/bin/ruby",
  12. ".erb" => "/usr/bin/eruby",
  13. ".py" => "/usr/bin/python" )

如上所写,以pl为扩展名的cgi程序会被perl来解析,其它的类似.

最后一步,修改conf/modules.conf

  1. ##
  2. ## plain old CGI (mod_cgi)
  3. ## 将cgi的配置文件包含进来
  4. include "conf.d/cgi.conf"

准备一个用C语言编写的CGI程序

  1. #include "stdio.h"
  2. int main()
  3. {
  4. printf("Content-Type: text/plain\n\n");
  5. printf("Hello CGI!\n");
  6. return 0;
  7. }

编译一下

  1. gcc hello.c -o hello.cgi

将生成的hello.cgi放到上面创建好的cgi-bin文件夹下,重启下lighttpd

  1. killall lighttpd
  2. ./sbin/lighttpd -f conf/lighttpd.conf

一切就绪,在浏览器中访问下这个cgi

lighttpd_cgi

在嵌入式设备上部署lighttpd(broadcom 7581)

参考文献

1 http://www.lighttpd.net/

2 http://buffon.pixnet.net/blog/post/40142785-%5Bubuntu%5D-lighttpd-%2B-cgi

转载请注明作者和出处,并添加本页链接。
原文链接: blog.xugaoxiang.com/65

给我留言