标签为 php 的文章

Nginx+PHP(FastCGI)+MySQL在小内存VPS(t1.micro)上的安装配置与优化

参考资料:
http://blog.s135.com/nginx_php_v6/
http://blog.s135.com/post/375/

背景介绍:
以前,因为AWS EC2的价格比较昂贵而租用了其它国外小厂商的VPS,在使用了3年多之后,发现AWS EC2的价格居然比现在正在使用的VPS还要便宜。
全球线路与速度最理想的日本节点的t1.micro型号,选择3年长期合约的价格在3000元人民币左右,一年下来也不到1000元,所以就打算将Blog迁移到AWS EC2上。
ec2_tokyo_t1_micro

之前在部署VPS环境的时候,基本上是完整的参考了张宴的两篇文档,包括操作系统的选择也是相同的。
但这一次我想采用目前较新的CentOS 6.4 minimal x86_64
同时选择版本最新的Nginx,PHP以及MySQL,引入EPEL仓库来简化安装与部署过程中对额外的依赖软件的安装,优化一些原来的工作方式,比如创建服务管理脚本来启动/停止Nginx与MySQL,使用logrotate来切割日志等;
经过了一番折腾,在填了不少的坑之后,终于成功的完成了新环境的部署,感觉非常不错。

下面,就是此次的整个安装配置过程:
1. 安装常用工具
yum install -y vim wget unzip screen tree mlocate

2. 安装编译工具
yum install -y gcc gcc-c++ autoconf patch cmake automake

3. 安装EPEL仓库
yum install -y http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

4. 安装所有必需的软件包
yum install -y libjpeg-turbo libjpeg-turbo-devel libpng libpng-devel freetype freetype-devel
yum install -y libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel gmp gmp-devel
yum install -y bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel unixODBC unixODBC-devel
yum install -y krb5-libs krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel
yum install -y libgcrypt libgcrypt-devel libtool
yum install -y libmcrypt libmcrypt-devel mhash mhash-devel mcrypt pcre pcre-devel
yum install -y ImageMagick ImageMagick-devel

5. 下载所有必需的软件源码包
mkdir /root/packages
cd /root/packages
wget http://nginx.org/download/nginx-1.4.7.tar.gz
wget http://museum.php.net/php5/php-5.2.17.tar.gz
wget http://php-fpm.org/downloads/php-5.2.17-fpm-0.5.14.diff.gz
wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.36.tar.gz
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
wget http://pecl.php.net/get/imagick-3.2.0RC1.tgz
wget https://github.com/downloads/eaccelerator/eaccelerator/eaccelerator-0.9.6.1.tar.bz2

6. 编译安装iconv
cd /root/packages
tar xzvf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure
make
make install
阅读全文 »

, , , , , ,

2 Comments

在Ubuntu 10.10上安装ZendOptimizer (支持apt-get方式安装的PHP)

参考文档:
http://blog.csdn.net/kings6681988/article/details/6334087

Ubuntu 10.10 系统默认的apt-get方式的PHP版本为5.3,而目前ZendOptimizer所支持php版本最高为5.2。
因此,要想支持ZendOptimizer,必须将PHP版本降级到5.2,而apt包管理工具是支持针对特定包的版本降级的。

比如,我们发现Karmic Koala即Ubuntu 9.10版本的PHP默认就是5.2,于是我们可以通过以下方式将我们需要的 php5-cli libapache2-mod-php5 php5-gd php5-mysql php5-common 这5个软件包统一降级到5.2。

首先删除目前安装的所有php相关套件
$ sudo apt-get purge `dpkg -l | grep php| awk '{print $2}'

切换到root身份
$ sudo -i

创建依赖关系文件支持PHP降级
# echo -e "Package: php5/nPin: release a=karmic/nPin-Priority: 991/n" >> /etc/apt/preferences.d/php
# apt-cache search php5-| grep php5-| awk '{print "Package:", $1,"/nPin: release a=karmic/nPin-Priority: 991/n"}' >> /etc/apt/preferences.d/php
# apt-cache search -n libapache2-mod-php5 | awk '{print "Package:", $1,"/nPin: release a=karmic/nPin-Priority: 991/n"}' >> /etc/apt/preferences.d/php
# apt-cache search -n php5-mysql | awk '{print "Package:", $1,"/nPin: release a=karmic/nPin-Priority: 991/n"}' >> /etc/apt/preferences.d/php
# apt-cache search -n php5-gd | awk '{print "Package:", $1,"/nPin: release a=karmic/nPin-Priority: 991/n"}' >> /etc/apt/preferences.d/php

退出root身份
# exit

创建Karmic(Ubuntu 9.10版本)的APT Source
$ sudo vim /etc/apt/sources.list.d/karmic.list
deb http://old-releases.ubuntu.com/ubuntu karmic main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu karmic main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu karmic-updates main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu karmic-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu karmic-security main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu karmic-security main restricted universe multiverse

更新APT数据
$ sudo apt-get update

安装 php5-cli libapache2-mod-php5 php5-gd php5-mysql php5-common 这5个软件包
$ sudo apt-get install -t karmic php5-cli libapache2-mod-php5 php5-gd php5-mysql php5-common

查看PHP版本,可以看到已经成功降级到了5.2
$ sudo php --version
PHP 5.2.10-2ubuntu6.10 with Suhosin-Patch 0.9.7 (cli) (built: May 2 2011 23:24:44)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies

下载ZendOptimizer
$ wget "http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz"
$ tar xzvf ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz
$ cd ZendOptimizer-3.3.9-linux-glibc23-x86_64/

复制ZendOptimizer.so到系统lib目录
$ sudo cp data/5_2_x_comp/ZendOptimizer.so /usr/lib64/php5/libexec/

配置php.ini使PHP支持ZendOptimizer
$ sudo vim /etc/php5/apache2/php.ini
[ZendOptimizer]
zend_extension=/usr/lib64/php5/libexec/ZendOptimizer.so

重启Apache,即刻生效
$ sudo /etc/init.d/apache2 restart

,

No Comments

让SVN用户能够修改自身密码的PHP页面

在苦苦搜寻和反复实践之后,终于成功了,虽然该php程序的原作者已经无从知晓,但仍然要表示感谢,同时鄙视那些不经过实践就把文章转来转去的人。
因为那样做除了增加点可怜的PV,根本帮助不了任何人,只会浪费他人的时间。

源码安装SVN的过程请参考我的这篇文章:http://heylinux.com/archives/917.html

1.修改Apache配置文件
因为我在安装和配置SVN的时候,对Apache的配置文件进行过优化,将所有关于SVN的配置都写在了/opt/apache2/conf/extra/httpd-svn.conf中,然后再通过主配置文件/opt/apache2/conf/httpd.conf中Include conf/extra/httpd-svn.conf方式来调用。
因此,我这里需要修改的就是/opt/apache2/conf/extra/httpd-svn.conf文件,加入以下内容(其中第1,2,6行请根据实际情况进行修改):

Alias /svntools "/opt/apache2/htdocs/svntools"
<Directory "/opt/apache2/htdocs/svntools">
Require valid-user
AuthType Basic
AuthName "GridTeam`s subversion tools"
AuthUserFile "/opt/subversion/conf/svn_passwdfile"
</Directory>

2.创建修改自身密码的php页面
mkdir /opt/apache2/htdocs/svntools
cd /opt/apache2/htdocs/svntools

vim svnpass.php
输入以下内容(其中第135,136行请根据实际情况进行修改):
阅读全文 »

,

2 Comments

Nginx0.8.x+PHP5.2.14+Mysql5.5.3在小内存VPS服务器上的安装配置与优化

注:该文档大量参考了 张宴 的两篇原创文章,在此表示由衷的感谢。

两篇文章链接如下:
http://blog.s135.com/post/375/
http://blog.s135.com/nginx_php_v6/

但是,由于我所采用的Nginx,Php,Mysql的版本都要比张宴在第一篇文章中的版本高一些,所以在实际的安装过程中,并非一帆风顺,主要是在编译的参数和配置文件方面出现了一些问题,好在最后都得以解决。因此,我将整个过程记录了下来,以供大家参考。

阅读全文 »

, , , ,

4 Comments

Apache+Mysql+Php+ZendOptimizer+JDK+Tomcat 安装与配置[原创规范]

所需文件的下载地址:
Mysql:http://dev.mysql.com/downloads/mysql/
Apache:http://httpd.apache.org/download.cgi
Php:http://www.php.net/downloads.php
Zlib:http://www.zlib.net/zlib-1.2.3.tar.gz
Freetype:http://sourceforge.net/project/showfiles.php?group_id=3157
Libpng:http://sourceforge.net/search/?type_of_search=soft&type_of_search=soft&words=libpng
Jpeg-6b:http://www.ijg.org/files/jpegsrc.v6b.tar.gz
GD Library:http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
Zend Optimizer:http://www.zend.com/en/products/guard/downloads
JDK:http://java.sun.com/j2se/1.4.2/download.html
Tomcat:http://archive.apache.org/dist/jakarta/tomcat-5/
Tomcat-connectors:http://archive.apache.org/dist/jakarta/tomcat-connectors/jk2/source/

1)      安装配置Mysql (Mysql4.x.xx 与 Mysql5.x.xx 版本皆可)

打开并进入Mysql编译环境:
$ tar xzvf mysql-x.x.xx.tar.gz
$ cd mysql-x.x.xx/

修改编译所需配置文件sql/mysqld.cc 中的最大连接数:
搜索:&max_connections, 0, GET_ULONG, REQUIRED_ARG, 100, 1, 16384, 0, 1,
修改:&max_connections, 0, GET_ULONG, REQUIRED_ARG, 200, 1, 16384, 0, 1,

$ groupadd mysql
$ useradd -g mysql mysql

(如果是Debian或Ubuntu系统的话可能需要)
安装系统默认缺少的curses/termcap 库:
$ apt-cache search curses | grep lib
$ apt-get install libncurses5-dev

$ mkdir -p /opt/mysql/data
$ mkdir -p /opt/mysql/var

$ ./configure --prefix=/opt/mysql --with-mysqld-user=mysql --with-extra-charsets=all --with-unix-socket-path=/opt/mysql/var/mysql.sock --localstatedir=/opt/mysql/data --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler
注:--prefix=/opt/mysql 把mysql-x.x.xx指定安装到/opt/mysql目录中;
--with-extra-charsets=all 对多语言的支持;
--with-unix-socket-path=/opt/mysql/var/mysql.sock 这个是指定mysql服务器启动后,联机套接字文件所处的位置和文件名,避免mysql无法启动的情况发生;
--with-mysqld-user=username 这个是让mysql服务器也能让系统中普通用户username也能启动mysql服务器,避免死掉但无法推出的情况;
--localstatedir=/opt/mysql/data 指定数据库文件存放的目录;

$ make
$ make install

待MySQL安装完毕.剩下的就是配置了;
$ cp /opt/mysql/share/mysql/my-medium.cnf /etc/my.cnf

注:将配置文件拷贝到/etc目录下成为my.cnf,大家可以根据自己的需要选择配置文件(配置文件在/opt/mysql/share/mysql/目录下,有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf这些).

修改mysql各系统文件权限与属主,以避免启动时造成错误;
$ chmod 755 /opt/mysql/var/             设置/opt/mysql/var的目录权限为755
$ chown -R mysql:mysql /opt/mysql/      把/opt/mysql目录归属到mysql这个用户下

创建MySQL的授权表;
$ /opt/mysql/bin/mysql_install_db –user=mysql

配置并启动Mysql服务;
$ /opt/mysql/bin/mysqld_safe &
$ cp /opt/mysql/share/mysql/mysql.server /etc/init.d/mysqld
$ cd /opt/mysql/libexec
$ cp mysqld mysqld.old
$ strip mysqld
$ ln -s /opt/mysql/bin/mysql /usr/bin/mysql
$ ln -s /opt/mysql/bin/mysqladmin /usr/sbin/mysqladmin

$ netstat -atln                           查看3306端口是否打开
$ /etc/init.d/mysqld restart              如果重启mysql顺利则说明mysql安装成功
$ mysqladmin -u root password 123456      设置mysql的root密码

$ mysql -uroot –p123456                   使用root用户进入mysql命令行
mysql>use mysql;
mysql>delete from user where password="";删除用于本机匿名连接的空密码帐号
mysql>flush privileges;
mysql>quit;

进入/etc目录下的rc2.d rc3.d rc4.d rc5.d 目录建立开机自启动服务的软链接文件;
$ ln -s ../init.d/mysqld S20mysql
进入/etc目录下的rc0.d rc1.d rc6.d 目录建立关机自停止服务的软链接文件;
$ ln -s ../init.d/mysqld K20mysql

2)      安装配置Apache (Apache2.x.x 版本)

打开并进入Apache编译环境:
$ tar xzvf httpd-2.x.x.tar.gz
$ cd httpd-2.x.x/

$ ./configure --prefix=/opt/apache --enable-so --enable-rewrite --enable-cgi --with-config-file-path=/opt/apache/conf --enable-track-vars --with-mpm=worker
注:--prefix=/opt/apache 指定安装到/opt/apache目录中;
--enable-cgi 支持CGI;
--with-config-file-path=/opt/apache/conf 指定把配制文件放在/opt/apache/conf目录中;
--enable参数告诉设置脚本,我们需要启动so和rewrite模块,so模块是用来提供DSO支持的apache核心模块,而rewrite模块则是用意实现地址重写的模块,由于rewrite模块需要DBM支持,如果在初次安装时没有编译进apache,以后需要用到时需要重新编译整个apache才可以实现。

$ make
$ make install
修改配置文件/opt/apache/conf/httpd.conf:

ServerName 127.0.0.1:80

<IfModule dir_module>
DirectoryIndex index.html index.html.var index.htm index.php
</IfModule>

# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

$ cp /opt/apache/bin/apachectl /etc/init.d/apachectl
$ ln -s /opt/apache/bin/apachectl /usr/bin/apachectl

进入/etc目录下的rc2.d rc3.d rc4.d rc5.d 目录建立开机自启动服务的软链接文件;
$ ln -s ../init.d/apachectl S20apache
进入/etc目录下的rc0.d rc1.d rc6.d 目录建立关机自停止服务的软链接文件;
$ ln -s ../init.d/apachectl K20apache

$ apachectl start
在浏览器的地址栏中输入商用通IP,若看到“It works!”字样或 Apache羽毛页面则说明安装成功!

3)      安装Php以及相关常用组件 (Php4.x.x 与 Php5.x.x 版本皆可)

编译安装GD库相关套件:
zlib: 进入解压后的zlib目录并执行以下命令:
$ ./configure
$ make
$ make install
freetype:进入解压后的freetype目录并执行以下命令:
$ ./configure --prefix=/usr/local/freetype
$ make
$ make install
libpng:进入解压后的libpng目录并执行以下命令:
$ ./configure
$ make
$ make install
jpeg-6b:进入解压后的jpeg-6b目录并执行以下命令:
$ mkdir -p /usr/local/jpeg/bin
$ mkdir /usr/local/jpeg/lib
$ mkdir /usr/local/jpeg/include
$ mkdir -p /usr/local/jpeg/man/man1
$ ./configure --prefix=/usr/local/jpeg --enable-shared --enable-static
$ make
$ make install
GD Library:进入解压后的gd目录并执行以下命令:
$ ./configure --prefix=/usr/local/gd --with-jpeg=/usr/local/jpeg --with-freetype=/usr/local/freetype --with-png --with-zlib
$ make
$ make install

打开并进入Php编译环境:
$ tar xzvf php-x.x.x.tar.gz
$ cd php-x.x.x/

(如果是Debian或Ubuntu系统的话可能需要)
安装系统默认缺少的lex 组件:
$ apt-get install flex

编译并安装php:
$ ./configure --prefix=/opt/php --with-apxs2=/opt/apache/bin/apxs --with-gd=/usr/local/gd --enable-gd --enable-gd-native-ttf --with-jpeg-dir=/usr/local/jpeg --with-png --with-ttf --with-zlib --with-freetype-dir=/usr/local/freetype --enable-magic-quotes --with-mysql=/opt/mysql --with-mysql-sock=/opt/mysql/var/mysql.sock --with-iconv --with-mbstring --enable-mbstring --enable-track-vars --enable-force-cgi-redirect --enable-ftp --with-config-file-path=/opt/php/etc --with-pear=/opt/php/pear --enable-sockets --with-mail --with-xml

$ make
$ make install

$ cp php-x.x.x/php.ini-dist /opt/php/etc/php.ini

修改配置文件/opt/php/etc/php.ini:
register_globals = On

然后编写php测试页info.php:内容如下:
<?php
phpinfo();
?>

查看/opt/apache/conf/httpd.conf文件,看是否存在语句(如果安装的Php5):
LoadModule php5_module        modules/libphp5.so
如果存在,即说明apache已经成功加载了php模块;

$ apachectl restart
将info.php放置到/opt/apache/htdocs 目录下;
$ chmod 755 info.php
在浏览器中能在该页面中看到php的信息则说明安装成功!
注:启用了SELinux的FC或RedHat会提示权限问题并导致Php无法正常工作,禁用SELinux后重启系统即可解决问题。

4)      安装配置ZendOptimizer (各个版本皆可)
$ tar xzvf ZendOptimizer-x.x.x-linux-x-i386.tar.gz
$ cd ZendOptimizer-x.x.x/
$ ./install.sh
接着依照安装向导的提示信息完成整个安装配置过程;

此刻,LAMP环境已经安装完毕,不需要Tomcat服务的话到这里就算结束了。

5)      安装配置JDK ( j2sdk-1.4.2.xx 版本皆可)

$ chmod a+x j2sdk-1_4_2_09-linux-i586.bin (本文中安装的版本为 1.4.2_09)
$ ./j2sdk-1_4_2_09-linux-i586.bin
安装后会生成文件夹j2sdk1.4.2_09,将文件夹j2sdk1.4.2_09移动(或复制)到你想要存放的JDK的位置(本文中是/opt/j2sdk1.4.2_09/);
接下来编辑/etc/profile文件加入JDK环境变量,在文件末尾处加入以下内容:

$ vi /etc/profile

export JAVA_HOME=/opt/j2sdk1.4.2_09
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME/jre

$ source /etc/profile
这样可以使配置文件的内容立刻生效;

$ set
在这里你可以看见当前所有的环境变量;

$ java –version
如果JDK配置正确的话,运行上面的命令将会出现JDK的相应版本。

6)      安装配置Tomcat以及相关组件 (jakarta-tomcat-5.x.xx版本皆可)
$ tar xzfv jakarta-tomcat-5.0.28.tar.gz   (本文安装的版本是:jakarta-tomcat-5.0.28)

$ cp -rf jakarta-tomcat-5.0.28 /opt/tomcat
$ cd /opt/tomcat/

现在来测试一下tomcat是否安装成功:

$ ./bin/startup.sh      启动tomcat服务
访问http://127.0.0.1:8080/ 看能否看到tomcat的默认页面,能看到说明tomcat服务已经在运行了。

$ ./bin/shutdown.sh 停止tomcat服务
注意观察停止服务的时候有无报错信息。
开始安装jakarta-tomcat-connectors-jk2,用来整合apache和tomcat,编译生成的mod_jk2.so模块被apache加载之后,就能将不属于自己的请求转发给tomcat:
$ tar xzfv jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz

$ cd jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/

$ ./configure --with-apxs2=/home/www/apache/bin/apxs
$ make

$ cd ../build/jk2/apache2/
$ /opt/apache/bin/apxs -n jk2 -i mod_jk2.so   (将mod_jk2.so添加到apache2的modules中)

上面就完成了Tomcat和Connectors的安装.接下来进行与Apache的整合.

Tomcat与Apache的整合:
$ cd /opt/apache/conf/

vi httpd.conf

编辑配置文件在其中加入这个模块,保存退出;
LoadModule jk2_module modules/mod_jk2.so

然后在这个目录新建一文件workers2.properties
$ vi workers2.properties

[channel.socket: localhost:8009]
port=8009
host=localhost
[ajp13: localhost:8009]
channel=channel.socket: localhost:8009
[uri:/*.jsp]
worker=ajp13: localhost:8009
[uri:/examples/*.jsp]
worker=ajp13: localhost:8009

$ cd /opt/tomcat/conf/

vi server.xml
找到其中的<Host>中的<Contest>项,修改相关参数如下,保存退出;
<Context path="" docBase="/opt/apache/htdocs" debug="0" reloadable="true" crossContext="true"/>

$ /opt/tomcat/bin/startup.sh
$ apachectl restart
重启Apache和Tomcat后即可查看到整合后的效果。

参考资料:
《RedHatAS4下Apache2+MySQL+Php+Tomcat整合及虚拟主机配置》http://bbs.chinaunix.net/viewthread.php?tid=770898
《Linux+Apache+Mysql+PHP典型配置》 http://www.5ilinux.com/blog/archives/000013.html
《Debian+Apache2+MySQL5+PHP5+GD》http://www.pmal.net/viewthread.php?tid=8849

, , , , ,

No Comments

Linux服务器优化策略 之 PHP的加密与加速

首先,安装Zend Optimizer优化PHP程序:
Zend Optimizer是由PHP核心引擎“Zend” http://www.zend.com 创建者Zend技术公司所开的免费PHP优化软件。
据Zend公司透露使用这个软件某些情况下至少可以提高性能30%以上!现在我们来看看如何安装配置这套软件。
打开http://www.zend.com/downloads官方网站下载最新的Zend Optimizer。
1、执行tar命令解压该刚刚下载的Zend Optimizer;
2、进入解压后的程序目录,运行安装文件install.sh;
3、接下来很轻松的按照向导一步步执行:
   a.阅读许可协议并同意;
   b.安装向导会要求你确认当前使用的APACHE服务器;
   c.安装向导会提示您确认php.ini的位置,并提示备份php.ini;
   d.安装向导会提示你重新启动WEB服务;
   e.安装完毕后程序会自动根据你的选择来修改php.ini并帮助你启动这个引擎。
4、这个时候,你的php执行效率已经得到了优化,且经过zend加密的php程序也可以执行了。
其次,安装eAccelerator再度优化PHP程序并对其加密:
一、eAccelerator介绍
1、背景
eAccelerator 是一个免费开源的PHP加速、优化、编译和动态缓存的项目,它可以通过缓存PHP代码编译后的结果来提高PHP脚本的性能,使得一向很复杂和离我们很远的PHP脚本编译问题完全
得到解决。通过使用eAccelerator,可以优化你的PHP代码执行速度,降低服务器负载,可以提高PHP应用执行速度最高达10倍。
eAccelerator 项目诞生于2004年,当时它是作为 Turck MMCache 项目的一个分支提出并投入开发的。 Turck MMCache 由 Dmitry Stogov 开发,是个非常优秀的PHP内存缓存加速系统,如今
仍然有很大部分 eAccelerator 的代码应用到该项目中,目前该项目有很长时间没有更新了,对于最新的PHP5.x的支持还未推出。
2、原理
eAccelerator 通过把经过编译后的PHP代码缓存到共享内存中,并在用户访问的时候直接调用从而起到高效的加速作用。它的效率非常高,从创建共享内存到查找编译后的代码都在非常短的
时间内完成,对于不能缓存到共享内存中的文件和代码,eAccelerator还可以把他们缓存到系统磁盘上。
eAccelerator 同样还支持PHP代码的编译和解释执行,你可以通过encoder.php脚本来对php代码进行编译达到保护代码的目的,经过编译后的代码必须运行在安装了eAccelerator的环境
下。eAccelerator编译后的代码不能被反编译,它不象其他一些编译工具那样可以进行反编译,这将使得代码更加安全和高效。
二、eAccelerator安装配置
1、系统要求
php4 or php5
autoconf
automake
libtool
m4
eAccelerator 只支持使用 mod_php 或者 fastcgi mode 安装的PHP
2、安装
先去eAccelerator官方下载最新版的源码包如:eaccelerator-0.9.5-beta.tar.bz2
#tar -zxvf ./eaccelerator-0.9.5-beta2.tar.bz2
#cd eaccelerator-0.9.5-beta2
#export PHP_PREFIX="/usr/local/php/" (把PHP安装目录导入到环境变量,如产用的/usr/local/php)
#$PHP_PREFIX/bin/phpize
#./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
#make
#make install
3、ini文件配置
安装完成,下面开始配置php.ini文件
注:将以下代码加入到[Zend]标签之前,否则不能启动APACHE服务器。
[eAccelerator]
extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.log_file = "/var/log/httpd/eaccelerator_log"
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"
设置中需要注意的是:
a.extension="eaccelerator.so"这一项中的 eaccelerator.so 应该修改为实际的该文件的绝对路径;
b.接着在php.ini中搜寻extension_dir,并将 extension_dir = "./" 修改为 extension_dir = "/",即修改其为根目录;
4、完成安装配置后,我们最后要创建缓存目录:
#mkdir /tmp/eaccelerator
#chmod 777 /tmp/eaccelerator
5、重启apache使eaccelerator引擎生效
6、验证安装结果
通过浏览器访问您的phpinfo()页面或者运行 php -i 得到php配置信息,里面如果看到类似下面的信息就表示安装成功了。
This program makes use of the Zend Scripting Language Engine:
Zend Engine, Copyright (c) 1998-2006 Zend Technologies with eAccelerator v0.9.5-beta2, Copyright (c) 2004-2006 eAccelerator, by eAccelerator.
7、这个时候,我们已经完成了对eAccelerator的安装与配置,下面介绍如果使用该引擎对PHP进行加密:
将eaccelerator安装目录下的encoder.php文件提取出来,首先备份准备加密的网站程序怒路,然后用该文件进行加密(如我对/var/www/admincp/这个目录下的所有PHP程序进行加密);
$PHP_PREFIX/bin/php encoder.php -rf -sphp /var/www/admincp/  -o /var/www/admincp/
好了,一套完整的PHP优化与加密策略完成了!打开你的浏览器,体验其带来的暂新速度体验吧!

, ,

No Comments