灌溉梦想,记录脚步
« »
2009 年 09 月 28 日技术合集

cherokee

cherokee的官方网址是:http://www.cherokee-project.com,你可以从这里下载到最新的

源代码,找到它详细的说明文档。

下面这段文字简单翻译自官方的说明文档

cherokee是一个高效的、轻量级的、高稳定性的、容易配置的web服务器 …

cherokee支持很多技术:FastCGI , SCGI , PHP, CGI , X-Sendfile , TLS , SSL …

cherokee支持虚拟主机、权限认证、负载均衡 …

cherokee的日志格式与apache是兼容的 …

cherokee可以在不中断服务的前提下进行升级更新(nginx也有这个功能)…

到今天为止,cherokee的最新版本是0.11.6了。

说明:以下所有操作都是在我用VMWare虚拟的一个CentOS下以root用户进行的。

下载了最新的源代码过后,照常,编译安装:

./configure –prefix=/usr/local/cherokee

make

make install

编译过程非常简单,也非常顺利。cherokee的configure脚本可以传入一个PHPCGI的环境

变量,用来设置php-cgi的路径,比如这样:

PHPCGI=/usr/local/php5/bin/php-cgi ./configure –prefix=/usr/local/Cherokee

当然,如果你的php-cgi在系统PATH环境变量下,也就不用设置了,或者编译好以后再去修

改配置文件也来得及。

cherokee另外一个让人兴奋的特性是,它自己带了一个图形化的web管理端,就像zeus一

样。通过这个图形化的管理端,你可以对cherokee进行几乎所有的日常配置、管理操作,非常非

常方便。

你可以通过下面的步骤启动cherokee的图形化管理端:

cd /usr/local/cherokee/sbin

./cherokee-admin -b 172.16.236.248

其中cherokee-admin的-b参数是用来控制管理端监听的端口的,默认只监听127.0.0.1,你

要想通过局域网中的其他计算机访问这个管理端,那么就把我写的 172.16.236.248 换成cherokee

所在服务器的局域网IP地址。

从命令行启动cherokee管理端以后,你会在命令行看到类似这样的信息:

Login:

User: admin

One-time Password: mXvZEUYfpupeR9o3

Cherokee Web Server 0.11.4 (Dec 18 2008): Listening on port 9090, TLS disabled,

IPv6 disabled, using epoll, 1024 fds system limit, max. 505 connections,

single thread

上面的信息告诉你:

1、cherokee的管理端监听在服务器的9090端口(和zeus默认的一样)

2、每次启动cherokee-admin,系统都会生成一个一次性的登录密码,你只有使用这个密码通过

管理端的http auth basic以后才能进行相关操作

3、其他的服务器信息,比如版本号、最多允许的连接数等等

在局域网的另外一台计算机中打开一个浏览器,输入 http://172.16.236.248:9090 ,你将会看

到cherokee-admin的登录认证窗口,输入刚才命令行提示的一次性密码,你就可以看到这个让人

兴奋的图形化管理界面了。

在第一期的Cherokee初探中,我们大概了解了Cherokee这个,web服务器新贵的一些基

础知识,今天我们开始进一步的学习。

通过Cherokee的web管理端,你可以很方便的设置基于openssl的https站点。有一个问题

需要先说明一下,现在最新的Cherokee版本是0.11.6,在0.11.5版本之前,Cherokee在加载

ca证书的时候有一个bug,具体表现就是在启动https主机的时候,你会看到类似这样的错误:

cryptor_libssl.c:204: ERROR: OpenSSL: Can not use certificate file ‘/etc/ssl/cherokee.crt’:

error:2606A074:engine routines:ENGINE_by_id:no such engine

假设你的Cherokee安装在/usr/local/cherokee,我们先来建立自签名的https证书,以

root用户在命令行下依次输入如下命令:

1

2

3

cd /usr/local/cherokee/etc/cherokee/ssl

openssl req -new -x509 -nodes -out server.crt -keyout server.key

cat server.crt server.key > server.pem

这里面进行第二步的时候需要回答一系列问题,比如你的国家代码、省份、城市、证书用在的

域名等等。

下面打开Cherokee的web管理端,选择左侧的“General”,在右侧最下方的“Secure

HTTP”里面分别设置https的端口,以及后端的类库(也就是openssl/libssl)

然后选择左侧导航的“Virtual Servers”,这里要注意了,cherokee的https虚拟主机只能设

置在默认的default主机内,以保证一个ip地址只有一个https主机:

进入虚拟主机详细设置,点击栏目“Security”,输入证书的路径,对于刚才生成的证书来说,

证书和证书key文件的路径分别是:

1

2

/usr/local/cherokee/etc/cherokee/ssl/server.pem

/usr/local/cherokee/etc/cherokee/ssl/server.key

好了,基本的设置就这么简单,下面启动虚拟主机,或者重启一下cherokee的worker进程即可。

可以点击左侧导航的“Save”按钮来完成Graceful restart,也可以回到“Status”菜单启动

cherokee。

最后,打开浏览器,输入https://172.16.236.248 (这个ip是我的cherokee的ip)

cherokee下设置local与remote方式的php fastcgi

还是先假设一下服务器环境:

cherokee的ip地址是:172.16.236.191

cherokee安装在/usr/local/cherokee

php安装在/usr/local/php5,编译了fastcgi支持

与zeus、lighttpd一样,cherokee支持将php作为本地的fastcgi解释器运行,也支持将

php作为Remote方式运行。

默认情况下,cherokee选择Local interpreter作为php的运行方式,并且已经附送了一个默

认的php配置,如果你的php可执行文件位于PATH环境变量内,你甚至都不用做任何配置就可以

直接使用。

下面我们来看看第一种情况如何进行配置:

点击左侧导航栏的“Information Sources”,在右侧“Known sources”下面列出了目前已知

的信息源,点击默认的“php”,进入php设置:

其中的各项参数的解释:

Type: “Local Interpreter”(就是本地解释器),一般用在fastcgi的可执行程序与

cherokee运行在同一台服务器的情况。“Remote Host”(就是远程主机),一般用在

fastcgi的看执行程序与cherokee不在同一服务器的情况,或者为了保持cherokee和

fastcgi进程更好的独立性。

Nick: 这个“信息源”的名称,具体就随意了^^

Connection: “信息源”提供的连接方式,可以设置为“IP地址:端口”的方式(比如:

127.0.0.1:1234),也可以设置为Unix的socket(比如/tmp/php.sock)。

Interpreter: “信息源”的解释器,也就是fastcgi的可执行文件以及其运行参数。这里我们

将原有值改为:/usr/local/php5/bin/php-cgi -b 1234。

Spawn timeout: 超时设置(单位:秒,默认是3秒),用于cherokee与fastcgi进程通信

时的超时阀值,这里采用系统默认值,不用填写即可。

作为本地解释器运行的fastcgi进程,cherokee还支持为其设置特定的环境变量。可以通过下

面的“Variable”(变量名)、“Value”(数值)来进行设置。默认情况下,cherokee为php

设置两个环境变量:

1

2

PHP_FCGI_MAX_REQUESTS 2000

PHP_FCGI_CHILDREN 5

这两个变量的意思分别是“每个php进程在退出前能够相应的请求数目”、“php的进程数目

”。这两个变量需要根据你的网站的负载量进行合理设置,默认情况下,这样就够用了。

下面来看看如何设置Remote Host方式的fastcgi,还是以php为例。

在进行设置之前,我们需要先将php的fastcgi进程作为一个监听特定ip以及端口的守护进程运行

起来,你可以借助cherokee的spawn- fcgi(在/usr/local/cherokee/bin目录下)或者打过fpm

补丁的php,或者直接使用php-cgi。下面我们以root 用户 来使用cherokee的spawn-fcgi来启

动php:

1 /usr/local/cherokee/bin/spawn-fcgi -f /usr/local/php5/bin/php-cgi -a 127.0.0.1 -p 9000 -C 5 -P /tmp/

简单解释一下cherokee的spawn-fcgi的几个参数:

-f fastcgi可执行文件的位置(绝对路径)

-a fastcgi进程监听的ip

-p fastcgi进程监听的端口

-C 子进程数目(该参数为php专用)

-P fastcgi进程的pid文件位置

-u fastcgi进程所属的unix用户

-g fastcgi进程所属的unix用户组

为了确定remote方式的php运行成功,我们可以在命令行下输入 telnet 127.0.0.1 9000 来确

认一下。然后我们还是进入cherokee的“Information Sources”设置,添加一个新的信息源:

Type: 选择“Remote Host”

Nick: PHP-Remote

Connection: 127.0.0.1:9000

可以看到在cherokee设置中已经加入了这个以remote方式运行的php fastcgi。

设置好了信息源,网站怎么知道是用local方式的还是remote方式的php呢?不急,我们还

需要进入cherokee的虚拟主机设置,选择具体的fastcgi解释器。其实cherokee已经为默认的虚

拟主机配置好了php(local方式),如果你也在之前正确配置好了php-cgi的路径,那么你可以

直接使用默认的虚拟主机配置来运行php程序了。如果你希望在虚拟主机中使用remote方式的

php,那么我们就一起来看看吧。为了明确整个虚拟主机中remote方式的php配置,我们将新建

一个虚拟主机,从头开始php的配置。

点击左侧导航栏的“Virtual Servers”,在“Add new Virtual Server”下输入新的虚拟主机的

名称和虚拟主机的根路径,并点击“Add”按钮:

点击虚拟主机名称,进入虚拟主机详细设置

选择“Behavior”栏:

在“Add new rule”下新增一个规则:

Rule Type: Extensions (新建一个“Extensions”的规则)

Extensions: php (这个规则将作用于所有以php为扩展名的文件)

然后cherokee会自动进入规则的设置页面,接着我们选择“Handler”栏,在Handler的下

拉菜单中选择“FastCGI”

开源时代 2009年2 月刊 – 54 – 投稿邮箱:rmzhou@staff.chinaunix.net

在最下方的“Assign Information Sources”中,你可以选择对扩展名为php的文件的处理程

序(也就是之前的信息源)。经过刚才的设置,这里面我们分别由php和php-remote两个信息源,

选择PHP-Remote。

至于规则中的其他设置,如果你有兴趣可以自己去研究一下,对于我们之前的目的来说,其他

的都使用默认设置就好了。

为了测试的方便,我们先在该虚拟主机根目录下建立一个php测试文件:info.php,该文件只

有一行代码:

1 <?php phpinfo();?>

好了,复杂的设置(其实也不复杂)已经做完了,下面来看看效果吧。

先点击左侧导航的“Save Changes”保存虚拟主机设置,然后打开你的浏览器,输入虚拟主

机的域名,以及文件名(我这里是:http://172.16.236.191/info.php),如果能看到一系列php

的系统信息,那么恭喜你,你不要再去找那里配置错误了。

日志信息 »

该日志于2009-09-28 09:16由 kevin 发表在技术合集分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

没有评论

发表评论 »