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
的系统信息,那么恭喜你,你不要再去找那里配置错误了。