Chinaunix首页 | 论坛 | 博客
  • 博客访问: 389448
  • 博文数量: 105
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1145
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-01 09:01
文章分类

全部博文(105)

文章存档

2010年(3)

2009年(93)

2008年(9)

我的朋友

分类: BSD

2009-01-15 16:28:02

本文来自http://onmp.cublog.cn,欢迎转载!

本文的实验环境为:
OpenBSD 4.4-current
eAccelerator 0.9.5.3

一、系统环境的准备
 
OpenBSD的安装就不说了,需要的软件都使用pkg_add的方式安装,注意设定正确的PKG_PATH。

这里只介绍后面安装必须的软件环境(红色为输入的命令蓝色为输入的文本内容棕色表示要删除的内容)。

为了避免权限的问题,下面所有的操作都在root环境下进行。对安全特别重视的朋友或者远程安装的朋友请使用维护帐号登录,sudo执行。
 
pkg_add wget autoconf-2.59p3 unzip libtool m4 php5-core php5-fastcgi
(注意上面autoconf的版本,请根据packages中的情况自行修改)

(PHP装好后有个提示,请按提示做下连接并创建PHP工作目录):
ln -s /var/www/conf/modules.sample/php5.conf /var/www/conf/modules
mkdir /var/www/tmp
chown www /var/www/tmp
chgrp www /var/www/tmp
chmod 0755 /var/www/tmp
 
说明一下:上面的软件环境是最基本的,如果在你的服务器上还需要其他软件,请自行安装.
 
至此,软件环境已经准备好了,测试一下:
 
vi /var/www/htdocs/info.php
 
输入下面的内容:
 
phpinfo();
?>
 
保存退出,apachectl start启动web server,用浏览器访问:应该可以看到PHP信息 (xxx.xxx.xxx.xxx是你服务器的IP地址).如果看不到,说明你前面没做对,请仔细对照本文档核对.
 
二、修改eAccelerator 0.9.5.3源码,适应OpenBSD环境
 
cd /tmp
 
wget
 
unzip eaccelerator-0.9.5.3.zip
 
cd eaccelerator-0.9.5.3
 
vi +110 eaccelerator.h
 
敲入2dd删除110和111两行内容,删除的内容在下面:
 
        typedef intptr_t;
        #define _INTPTR_T_DEFINED
 
删完后插入下面的内容:
 
  typedef int intptr_t;
  #define _INTPTR_T_DEFINED
#else
#  ifdef HAVE_STDINT_H
#    include
#  elif HAVE_INTTYPES_H
#    include
#  endif
 
完成后这段的内容应该是:
 
if !defined(_INTPTR_T_DEFINED) && ZEND_WIN32
  typedef int intptr_t;
  #define _INTPTR_T_DEFINED
#else
#  ifdef HAVE_STDINT_H
#    include
#  elif HAVE_INTTYPES_H
#    include
#  endif
#endif
 
保存退出.
 
vi +2094 eaccelerator.c
 
敲入16dd将这行及接下来的16行删除,删除的内容在下面:
        }
  
        /*
         * Initialization on first call, comes from eaccelerator_zend_startup().
         */
        if (eaccelerator_global_function_table.nTableSize == 0) {
                zend_function tmp_func;
                zend_class_entry tmp_class;
  
                zend_hash_init_ex(&eaccelerator_global_function_table, 100, NULL, NULL, 1, 0);
                zend_hash_copy(&eaccelerator_global_function_table, CG(function_table), NULL,
                        &tmp_func, sizeof(zend_function));
  
                zend_hash_init_ex(&eaccelerator_global_class_table, 10, NULL, NULL, 1, 0);
                zend_hash_copy(&eaccelerator_global_class_table, CG(class_table), NULL,
                        &tmp_class, sizeof(zend_class_entry));
 
 
删完后跳到2516行,敲入8dd将这行及接下来的8行删除,删除的内容在下面:
 
  /*
   * HOESH: on apache restart there was some
   * problem with CG(class_table) in the latest PHP
   * versions. Initialization moved to eaccelerator_compile_file()
   * depends on the value below.
   */
  eaccelerator_global_function_table.nTableSize = 0;
 
保存退出.
 
至此,对代码的修改已经完成.

三、编译环境的修改和设定
 
vi /usr/local/bin/php-config
 
将第16行:php_cli_binary=NONE这行后面的NONE改成php-fastcgi,完成后是:
php_cli_binary=php-fastcgi


将第17行:php_cgi_binary=NONE这行后面的NONE改成php-fastcgi,完成后是:
php_cgi_binary=php-fastcgi

将第19行:php_sapis="cli apache"这行改成:
php_sapis="cgi apache"

将第28行:php_cgi_binary="${exec_prefix}/bin/${program_prefix}php-cgi${program_suffix}${exe_extension}"这行改成:

php_cgi_binary="${exec_prefix}/bin/${program_prefix}php-fastcgi${program_suffix}${exe_extension}"
(其实就是加入了fast四个字母)
 
保存退出.
 
mkdir /var/www/pear
mkdir /var/www/pear/bin
cp /usr/local/bin/php-fastcgi /var/www/pear/bin
 
上面的步骤其实是强制使php工作在fastcgi模式下(eAccelerator这个软件要求必须是mod_php或者fastcgi环境),并把php-fastcgi拷贝到chroot环境下(安全因素).
 
vi +103 /usr/local/bin/phpize
 
为autoconf加入版本号,将这两行改成:
 
  test -z "$PHP_AUTOCONF" && PHP_AUTOCONF=autoconf-2.59
  test -z "$PHP_AUTOHEADER" && PHP_AUTOHEADER=autoheader-2.59

注意此处为开始准备环境时安装的autoconf版本号,请根据系统情况自行修改。

保存退出.
 
好了,eAccelerator所需的编译环境已经全部妥当。

四、安装eAccelerator

接下来的过程就是官方的过程了,很简单.
 
phpize
./configure
make && make install
 
等到上面的步骤完成,然后要修改php.ini文件,将eAccelerator的设置加进去.
 
vi /var/www/conf/php.ini
 
跳到最后,加入下面的内容:
 
extension="eaccelerator.so"
eaccelerator.shm_size="2"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
 
注意:上面eaccelerator.shm_size="2"这行是指定eAccelerator所用缓存的大小,我这里只指定了2M,你可以根据你的情况自行修改.这个缓存最大可以设置到128M.
 
保存退出.然后建立eAccelerator工作目录:
 
mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator
 
完成后用下面的命令验证安装是否成功:
 
php -v
php-fastcgi -v
 
如果在输出的部分能够看到包含eAccelerator的内容,就表示eAccelerator的安装基本成功.
 
 
然后手动重启web server,用浏览器访问:应该同样可以看到eAccelerator的提示信息.
 
 
OK!eAccelerator安装顺利完成!

五、一点提示

上面将eAccelerator的工作目录建立在/tmp中,而OpenBSD默认启动的时候会清空/tmp中的内容。

所以,请在/etc/rc.local启动脚本中加入创建目录的命令,确保eAccelerator可以正常工作!

mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator

Have enjoy!

相关博文:

OpenBSD环境下安装Zend Optimizer的通用万能方法![原创]

OpenBSD 4.4环境下安装Zend Optimizer需要手动做些连接

list(,$temp) leak with eacc+suhosin

OpenBSD4.3+eAccelerator0.9.5.3+ZendOptimizer3.3.0a

阅读(1787) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~