使用Cygwin在Windows中以服务方式安装Lighttpd

使用Cygwin在Windows中以服务方式安装Lighttpd

缘起

自从前段时间对服务器进行了从Apache到Lighttp 的转换之后,服务器运行异常的稳定。Lighttpd占用内存非常小,配置文件也很简单,这让我萌生了把所有服务器都从 Apache 转到 Lighttpd 的想法。

但这毕竟是个浩大的工程,而且运行正稳定的服务器也不必这么折腾。于是先从我的本机开刀。

我的每台工作电脑都会安装 XAMPP 套件,主要是用于开发和共享,以及存放一些html格式的文档以方便浏览。

而现在XAMPP可以退休了。

系统需求

Lighttpd并没有官方的Windows版本,本文基于Cygwin 来安装 Lighttpd。

本文假设你了解Cygwin的基本用法和配置,了解如何使用Cygwin的setup来安装新的包。

如果你不喜欢setup.exe那个界面,可以试试 apt-cyg

安装cygserver

cygserver 是为Cygwin作为后台服务运行而设计的,默认安装Cygwin的时候并没有启动它。我们需要打开它,并将它作为Windows的标准服务来安装。

在Cygwin中输入命令:

1cygserver-config

按照界面提示进行cygserver的安装,并同意将其安装为服务。

运行该服务:

1cygrunsrv --start cygserver

cygrunsrv其实是启动的Windows标准服务cygserver,这个命令也可以在Cmd下这样做:

1net start cygserver

或者也可以按下按键 Windows+R ,键入 services.msc 回车,找到 CYGWI cygwerver服务,并启动之。

这三种启动服务的方法的作用都一样,下面统一使用 cygrunsrv 的方法。

查看cygserver服务的状态:

1cygrunsrv --qurey cygserver
2
3# 显示
4Service             : cygserver
5Display name        : CYGWIN cygserver
6Current State       : Running
7Controls Accepted   : Stop
8Command             : /usr/sbin/cygserver

测试Lighttpd

安装Lighttpd包,由于 系统需求 中提到的假设,安装过程略。

测试Lighttpd的运行:

1/usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf

如果出现下面这样的报错,需要调整lighttpd.conf中的某些和网络相关的配置。因为Lighttpd是运行在Linux下的,默认的配置在Windows下面是不受支持的。

12013-01-11 11:01:59: (/usr/src/ports/lighttpd/lighttpd-1.4.32-2/src/lighttpd-1.4.32/src/configfile.c.1339) the selected event-handler in unknown or not supported: linux-sysepoll 
22013-01-11 11:01:59: (/usr/src/ports/lighttpd/lighttpd-1.4.32-2/src/lighttpd-1.4.32/src/server.c.646) setting default values failed 
32013-01-11 11:07:36: (/usr/src/ports/lighttpd/lighttpd-1.4.32-2/src/lighttpd-1.4.32/src/network.c.260) warning: please use server.use-ipv6 only for hostnames, not without server.bind / empty address; your config will break if the kernel default for IPV6_V6ONLY changes 
42013-01-11 11:07:36: (/usr/src/ports/lighttpd/lighttpd-1.4.32-2/src/lighttpd-1.4.32/src/network.c.802) server.network-backend has a unknown value: linux-sendfile 
52013-01-11 11:11:34: (/usr/src/ports/lighttpd/lighttpd-1.4.32-2/src/lighttpd-1.4.32/src/server.c.915) can't have more connections than fds/2:  1024 256 

涉及的配置项如下,将他们全部注释:

  • server.event-handler 约在181行
  • server.use-ipv6 约在93行
  • server.network-backend 约在191行
  • server.max-fds 约在207行
  • server.max-connections 约在245行

如果在运行的时候提示目录权限之类问题,则可以修改 Lighttpd.conf 中的 16~20 行配置,设置正确的目录和权限。

如果执行正常,那么不会输出任何信息,Lighttpd会一直在前台运行。

此时可以去浏览器中输入 http://localhost 测试一下,当然,要看到内容,需要确保你的Lighttpd.conf中的主页地址配置正确,即使你看到的是404错误,其实也说明你的服务器配置成功了,只是没有默认的页面而已。

将Lighttpd安装成服务

使用cygrunsrv可以将Lighttpd安装成Windows系统服务

1cygrunsrv -I lighttpd -d 'CYGWIN lighttpd' -p '/usr/sbin/lighttpd' -a '-D -f /etc/lighttpd/lighttpd.conf'

然后运行它

1cygrunsrv --start lighttpd

查询运行状态

1cygrunsrv --query lighttpd
2
3Service             : lighttpd
4Display name        : CYGWIN lighttpd
5Current State       : Running
6Controls Accepted   : Stop
7Command             : /usr/sbin/lighttpd -D -f /etc/lighttpd/lighttpd.conf

参考