免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1616 | 回复: 0
打印 上一主题 下一主题

二探Cherokee:HTTPS主机及PHP支持设置 [09年2月刊] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-06 11:20 |只看该作者 |倒序浏览

ChinxUnix网友:eScaPedd  
     

    在第一期的Cherokee初探中,我们大概了解了Cherokee这个,web服务器新贵的一些基础知识,今天我们开始进一步的学习。

通过
Cherokeeweb管理端,你可以很方便的设置基于opensslhttps站点。有一个问题需要先说明一下,现在最新的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               
这里面进行第二步的时候需要回答一系列问题,比如你的国家代码、省份、城市、证书用在的域名等等。
下面打开Cherokeeweb管理端,选择左侧的“General”,在右侧最下方的“SecureHTTP”里面分别设置https的端口,以及后端的类库(也就是openssl/libssl),如下图:

然后选择左侧导航的“VirtualServers”,这里要注意了,cherokeehttps虚拟主机只能设置在默认的default主机内,以保证一个ip地址只有一个https主机:

进入虚拟主机详细设置,点击栏目“Security”,输入证书的路径,对于刚才生成的证书来说,证书和证书key文件的路径分别是:
                        1
2               
                        /usr/local/cherokee/etc/cherokee/ssl/server.pem
/usr/local/cherokee/etc/cherokee/ssl/server.key               
填写好以后,如下图:

好了,基本的设置就这么简单,下面启动虚拟主机,或者重启一下cherokeeworker进程即可。
可以点击左侧导航的“Save”按钮来完成Gracefulrestart,也可以回到“Status”菜单启动cherokee
最后,打开浏览器,输入https://172.16.236.248(这个ip是我的cherokeeip

cherokee下设置localremote方式的phpfastcgi
还是先假设一下服务器环境:
cherokee
ip地址是:172.16.236.191
cherokee
安装在/usr/local/cherokee
php
安装在/usr/local/php5,编译了fastcgi支持

  与zeuslighttpd一样,cherokee支持将php作为本地的fastcgi解释器运行,也支持将php作为Remote方式运行。
  默认情况下,cherokee选择Localinterpreter作为php的运行方式,并且已经附送了一个默认的php配置,如果你的php可执行文件位于PATH环境变量内,你甚至都不用做任何配置就可以直接使用。
下面我们来看看第一种情况如何进行配置:
  点击左侧导航栏的“InformationSources”,在右侧“Knownsources”下面列出了目前已知的信息源,点击默认的“php”,进入php设置:



其中的各项参数的解释:
Type:“LocalInterpreter”(就是本地解释器),一般用在fastcgi的可执行程序与cherokee运行在同一台服务器的情况。“RemoteHost”(就是远程主机),一般用在fastcgi的看执行程序与cherokee不在同一服务器的情况,或者为了保持cherokeefastcgi进程更好的独立性。
Nick
:这个“信息源”的名称,具体就随意了^^
Connection
:“信息源”提供的连接方式,可以设置为“IP地址:端口”的方式(比如:127.0.0.1:1234),也可以设置为Unixsocket(比如/tmp/php.sock)。
Interpreter
:“信息源”的解释器,也就是fastcgi的可执行文件以及其运行参数。这里我们将原有值改为:/usr/local/php5/bin/php-cgi-b 1234
Spawntimeout
:超时设置(单位:秒,默认是3秒),用于cherokeefastcgi进程通信时的超时阀值,这里采用系统默认值,不用填写即可。
  作为本地解释器运行的fastcgi进程,cherokee还支持为其设置特定的环境变量。可以通过下面的“Variable”(变量名)、“Value”(数值)来进行设置。默认情况下,cherokeephp设置两个环境变量:
                        1
2               
                        PHP_FCGI_MAX_REQUESTS   2000
PHP_FCGI_CHILDREN 5               
这两个变量的意思分别是“每个php进程在退出前能够相应的请求数目”、“php的进程数目”。这两个变量需要根据你的网站的负载量进行合理设置,默认情况下,这样就够用了。
下面来看看如何设置RemoteHost方式的fastcgi,还是以php为例。
在进行设置之前,我们需要先将phpfastcgi进程作为一个监听特定ip以及端口的守护进程运行起来,你可以借助cherokeespawn-fcgi(在/usr/local/cherokee/bin目录下)或者打过fpm补丁的php,或者直接使用php-cgi。下面我们以root用户来使用cherokeespawn-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/php-fcgi.pid -u nobody -g nobody               
简单解释一下cherokeespawn-fcgi的几个参数:
-ffastcgi可执行文件的位置(绝对路径)
-afastcgi
进程监听的ip
-pfastcgi
进程监听的端口
-C
子进程数目(该参数为php专用)
-Pfastcgi
进程的pid文件位置
-ufastcgi
进程所属的unix用户
-gfastcgi
进程所属的unix用户组
  为了确定remote方式的php运行成功,我们可以在命令行下输入telnet127.0.0.1 9000 来确认一下。然后我们还是进入cherokee的“InformationSources”设置,添加一个新的信息源:
Type:选择“RemoteHost”
Nick
PHP-Remote
Connection
127.0.0.1:9000
可以看到在cherokee设置中已经加入了这个以remote方式运行的phpfastcgi
设置好了信息源,网站怎么知道是用local方式的还是remote方式的php呢?不急,我们还需要进入cherokee的虚拟主机设置,选择具体的fastcgi解释器。其实cherokee已经为默认的虚拟主机配置好了phplocal方式),如果你也在之前正确配置好了php-cgi的路径,那么你可以直接使用默认的虚拟主机配置来运行php程序了。如果你希望在虚拟主机中使用remote方式的php,那么我们就一起来看看吧。为了明确整个虚拟主机中remote方式的php配置,我们将新建一个虚拟主机,从头开始php的配置。
点击左侧导航栏的“VirtualServers”,在“Addnew Virtual Server”下输入新的虚拟主机的名称和虚拟主机的根路径,并点击“Add”按钮:

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

选择“Behavior”栏:

在“Addnew rule”下新增一个规则:
RuleType: Extensions (新建一个“Extensions”的规则)
Extensions:php
(这个规则将作用于所有以php为扩展名的文件)
然后cherokee会自动进入规则的设置页面,接着我们选择“Handler”栏,在Handler的下拉菜单中选择“FastCGI”

在最下方的“AssignInformationSources”中,你可以选择对扩展名为php的文件的处理程序(也就是之前的信息源)。经过刚才的设置,这里面我们分别由phpphp-remote两个信息源,选择PHP-Remote

至于规则中的其他设置,如果你有兴趣可以自己去研究一下,对于我们之前的目的来说,其他的都使用默认设置就好了。
  为了测试的方便,我们先在该虚拟主机根目录下建立一个php测试文件:info.php,该文件只有一行代码:
                        1                                        <?php
phpinfo();?>               
好了,复杂的设置(其实也不复杂)已经做完了,下面来看看效果吧。
先点击左侧导航的“SaveChanges”保存虚拟主机设置,然后打开你的浏览器,输入虚拟主机的域名,以及文件名(我这里是:http://172.16.236.191/info.php),如果能看到一系列php的系统信息,那么恭喜你,你不要再去找那里配置错误了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP