摘要:

这两天闲来无事,把手底下的两个小内存的vps翻了出来,一个128另一个256内存.小是小了点,不过安装个nginx用来跑静态页应该还行。

其中256内存的我想用于跑伪静态的程序,坑爹的是我想跑的网站程序是由Zend optimizer加密的,由于Zend optimizer只支持php5.2和之前版本,于是只能安装php5.2.17,但是,在最新版本的系统里面安装这个老东西,有点点痛苦。

本人装的dedian7-32位Minimal最小化安装的版本,web服务器方面由于不想用nginx,网上找了一圈,发现一个新的东东openlitespeed,是由litespeed出的一个开源版本,既然是开源版本,当然是免费的了,只不过,功能方面就有区别,不过最大的好处就是openlitespeed不限制线程,litespeed免费版限制150线程。缺点是不能读取apache配置文件,litespeed可以读取,另外不能直接支持.htaccess,但可以在后台控制面版本添加规则。

因此就有了这个debian7手动编译安装openlitespeed+php5.2.17+mysql5.5+eaccelerator+Zend Optimizer,低版本php5.2的组合,下面简单的说说过程,边写边安装,其中可能漏掉一些细节,请自行脑补。

首先,自行精简不必要的服务,然后安装一些需要的软件包:

这两天闲来无事,把手底下的两个小内存的vps翻了出来,一个128另一个256内存.小是小了点,不过安装个nginx用来跑静态页应该还行。

其中256内存的我想用于跑伪静态的程序,坑爹的是我想跑的网站程序是由Zend optimizer加密的,由于Zend optimizer只支持php5.2和之前版本,于是只能安装php5.2.17,但是,在最新版本的系统里面安装这个老东西,有点点痛苦。

本人装的dedian7-32位Minimal最小化安装的版本,web服务器方面由于不想用nginx,网上找了一圈,发现一个新的东东openlitespeed,是由litespeed出的一个开源版本,既然是开源版本,当然是免费的了,只不过,功能方面就有区别,不过最大的好处就是openlitespeed不限制线程,litespeed免费版限制150线程。缺点是不能读取apache配置文件,litespeed可以读取,另外不能直接支持.htaccess,但可以在后台控制面版本添加规则。

因此就有了这个debian7手动编译安装openlitespeed+php5.2.17+mysql5.5+eaccelerator+Zend Optimizer,低版本php5.2的组合,下面简单的说说过程,边写边安装,其中可能漏掉一些细节,请自行脑补。

首先,自行精简不必要的服务,然后安装一些需要的软件包:

apt-get -y update apt-get -fy install apt-get install -y build-essential 
libncurses5 libncurses5-dev libc6 libc6-dev wget flex re2c unzip bison 
gcc g++ autoconf patch make automake cmake expect ruby file bzip2 
libmhash-dev libtool libjpeg8 libjpeg8-dev libpng12-0 libpng12-dev libxml2 
libxml2-dev libmcrypt-dev curl libcurl3 libcurl4-openssl-dev libfreetype6 
libfreetype6-dev libpcre3 libpcre3-dev libexpat1-dev libssl-dev libgeoip-dev 
zlib1g-dev libpng-dev openssl e2fsprogs libsasl2-dev libidn11 libidn11-dev 
libevent-dev ntpdate apt-get install -y ia32-libs apt-get -y autoremove

wget --no-check-certificate http://github.com/lowendbox/lowendscript/raw/master/setup-debian.sh
bash setup-debian.sh system bash setup-debian.sh exim4

1. 第一步,因为要安装php5.2版本,所以先要安装好mysql数据库,如果是php5.3版本以上可以之后再装(php5.3以上版本提供mysqlnd驱动内置于PHP源代码在编译安装php时就需要预先安装MySQL server也可以提供MySQL client API),mysql版本也可选mriadb,但我这个是小内存机子,我认为还是mysql较为节省内存。选择版本为5.5,可安装jemalloc等优化,如事先安装了jemalloc,可在下面cmake参数里面加上-DCMAKE_EXE_LINKER_FLAGS='-ljemalloc'  ,其他配置视个人而定

wget -c http://cdn.mysql.com/Downloads/MySQL-5.5/mysql-5.5.39.tar.gz
tar zxf mysql-5.5.39.tar.gz
cd mysql-5.5.39
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   #mysql安装目录
-DMYSQL_DATADIR=/data/mysql \                             # 数据库存放目录   
-DSYSCONFDIR=/etc \                                                # 配置文件目录   (my.cnf)
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EMBEDDED_SERVER=OFF \
make & make install

cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
update-rc.d mysqld defaults     //使mysql默认启动-debian系统 
rm -f /etc/my.cnf                   //新建my.cnf配置文件,某些系统默认会有些文件,先删除
cp support-files/my-medium.cnf  /etc/my.cnf   //复制一样本my.cnf,小内存机子,里面配置需要调节和优化,具体为缓存优化,禁用InnoDB,使用MyISAM为默认,添加skip-external-locking skip-innodb 等等,
mkdir -p /data/mysql                //建立数据库文件夹
cat /etc/passwd //查看用户列表
cat /etc/group  //查看用户组列表
useradd -M -s /sbin/nologin mysql  //如没有相关用户,手动添加

//初始化mysql
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

//给予mysql用户权限
chown mysql.mysql -R /data/mysql
chgrp -R mysql /usr/local/mysql/.

//建立相关库链接
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
ln -s /usr/local/mysql/include/mysql /usr/include/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql/bin/mysqldump /usr/bin/mysqldump
ln -s /usr/local/mysql/bin/myisamchk /usr/bin/myisamchk
ln -s /usr/local/mysql/bin/mysqld_safe /usr/bin/mysqld_safe

//启动mysql
service mysqld start

//修改MYSQL密码,原始密码为空
mysql -uroot  
mysql> SET PASSWORD = PASSWORD('新密码');

//链接相关脚本文件
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/
service mysqld restart

至此,mysql安装完毕,确实很麻烦,所以还是推荐使用apt-get install mysql 直接安装后修改配置文件,省事多了。

2.安装OpenLiteSpeed

OpenLiteSpeed的安装过程相对来说很简单,跟LiteSpeed几乎是一样的,但debian下无法直接安装,centos可使用yum安装相应版本。

http://open.litespeedtech.com/mediawiki/    其官方网站上有详细的文档说明,编译安装时,可加入一些参数,如后台控制面板的账号和密码,启动SPDY支持等等,下面是打开SPDY支持的安装。要注意的是,目前版本为止,SPDY 是运行在 HTTPS 上,非HTTPS 流量并不会受到spdy 影响。

首先要支持SPDY,需要安装一个较新版本的OpenSSL

wget http://www.openssl.org/source/openssl-1.0.1i.tar.gz
tar zxvf openssl-1.0.1i.tar.gz
cd openssl-1.0.1i
./config --prefix=/usr/local/ --openssldir=/usr/local/openssl //注意记得安装路径,下面要用到
make && make install

然后安装openlitespeed,我安装的是最新版本的1.4.1版,与以往版本最大的区别在于配置文件的格式方面不一样,不过新版本有转换旧配置文件的工具。

另外,以下为官方要求debian所需安装的依赖包,请确认是否安装

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install libpcre3-dev libexpat1-dev libssl-dev libgeoip-dev zlib1g-dev libxml2 libxml2-dev libpng-dev openssl
wget http://open.litespeedtech.com/packages/openlitespeed-1.4.1.tgz
tar zxvf openlitespeed-1.4.1.tgz
cd openlitespeed-1.4.1
./configure --with-openssl=/usr/local/ --enable-spdy --with-admin=控制面板账号 --with-password=控制面板密码 --with-email=管理员邮箱 --enable-adminssl=no
make && make install
service lsws restart

就这样就安装完毕,默认安装的路径是/usr/local/lsws/lsphp5 ,上面的参数如不指定账号密码,默认为"admin" and "123456"。enable-adminssl=no为关闭后台使用ssl访问,如没有ssl证书就关闭吧。安装完其自带了php5.3版本,默认安装的PHP编译进去的东西很少,建议就算使用php5.3版本,最好就加上编译参数重装安装一次php,且安装完后并不会自动创建php.ini,需要自行建立。

3.下面安装php5.2.17 for openlitespeed, openlitespeed提供后台控制面板界面安装php不同版本的切换,访问地址为http://ip:7080,输入账号密码后,登录界面 

选择Actions-Compile PHP,进入步骤一可看到有PHP各个版本选择安装,为PHP5.2 5.3 5.4 5.5的最新版本,因为本人需要用到php5.2,选择php5.2.17,

点NEXT,进入步骤二,在Configure Parameters里面添加编译PHP的参数,其中mysql部分需要指定目录路径,其他的如GD库等,通过

apt-get 形式安装的,最好不要指定路径,以免出错,以下为本人使用的参数(如出错,请根据错误提示检查参数,一般为路径问题)。

./configure --with-pdo-mysql=/usr/local/mysql --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-mysqli=/usr/local/mysql/bin/mysql_config --with-zlib --with-gd --enable-shmop --enable-exif --enable-sockets --enable-sysvsem --enable-sysvshm --enable-magic-quotes --enable-mbstring --with-iconv --with-curl --with-curlwrappers --with-mcrypt --with-mhash --with-openssl --with-freetype --with-jpeg --with-png --with-libxml --enable-xml --disable-rpath --enable-bcmath --enable-mbregex --enable-gd-native-ttf --enable-pcntl --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-inline-optimization --enable-soap --disable-ipv6 --enable-ftp --disable-debug --with-gettext

另下面的Add-on Modules选项,可选一些扩展和PHP加速缓存插件,我一般选PHP Mail Header Patch和eAccelerator (由于是PHP5.2.版本,只好选这个了)附加安装。

点击Build PHP 5.2.17进入下一步,脚本会自动下载好要安装的源码等解压并准备安装,

再点击Next进入最后一步,出现一句脚本命令提示,要在root权限下运行

# /usr/local/lsws/phpbuild/buildphp_manual_run.sh

运行上述脚本命令后,后台会实时显示安装过程,如出错中断安装,请查看安装过程日志。

我安装的时候,很快就提示出错了,原因是由于PHP5.2.17版本太经典了-0-,要使用经典版本的autoconf2.13,由于apt-get安装的版本为2.69太过于新,没办法,解决方法一是删除新版本替换2.13版本;第二种方法是直接安装一个旧版本autoconf2.13,编译时指定使用autoconf2.13。这里我使用第二种方法。直接安装autoconf-2.13

wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.13.tar.gz
tar zxvf autoconf-2.13
./configure --prefix=/usr/local/autoconf-2.13
make && make install

安装完后,通过查看上述脚本的内容 cat /usr/local/lsws/phpbuild/buildphp_manual_run.sh,查找出另一个安装脚本类似名字为buildphp_1409341112.1.install.sh,接下来,修改执行脚本的内容,

vi /usr/local/lsws/phpbuild/buildphp_1409341112.1.install.sh

可看到这正是编译安装PHP的过程,到到./buildconf --force,在这一行上面,添加两行代码:

export PHP_AUTOCONF=/usr/local/autoconf-2.13/bin/autoconf
export PHP_AUTOHEADER=/usr/local/autoconf-2.13/bin/autoheader
然后保存,退出。

再次运行

# /usr/local/lsws/phpbuild/buildphp_manual_run.sh

这次顺利安装,安装完毕后会出现提示安装完成,并且提示你要将eAccelerator扩展代码添加到php.ini,这个要手动添加。因此,先创建php.ini.

cp -rf /usr/local/lsws/phpbuild/php-5.3.29/php.ini-production /usr/local/lsws/lsphp5/lib/php.ini

打开和配置部分参数:

sed -i 's/post_max_size = 8M/post_max_size = 50M/g' /usr/local/lsws/lsphp5/lib/php.ini
sed -i 's/short_open_tag = Off/short_open_tag = On/g' /usr/local/lsws/lsphp5/lib/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 50M/g' /usr/local/lsws/lsphp5/lib/php.ini
sed -i 's/;date.timezone =/date.timezone = Asia\/Shanghai/g' /usr/local/lsws/lsphp5/lib/php.ini
sed -i 's/disable_functions =.*/disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server/g' /usr/local/lsws/lsphp5/lib/php.ini
sed -i 's/display_errors = On/display_errors = Off/g' /usr/local/lsws/lsphp5/lib/php.ini
sed -i 's/expose_php = On/expose_php = Off/g' /usr/local/lsws/lsphp5/lib/php.ini

创建缓存目录

在php.ini 末尾再增加[eaccelerator]参数,
[eaccelerator]
zend_extension="/usr/local/lsws/lsphp5/lib/php/extensions/no-debug-non-zts-20090626/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.filter=" "
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9" //上面各参数请自行调节 //自行查找生成的eaccelerator.so位置来设置路径

保存后,使用

/usr/local/lsws/lsphp5/bin/php -v

查看php.ini加载是否正确,无误后,重启openlitespeed:service lsws restart

至此,安装部分完毕,最后没有讲到的就是安装Zend Optimizer,请自行百度安装。Zend Optimizer要安装在最后,即php.ini里面的eaccelerator配置参数要在Zend Optimizer的前面 ,并且将Zend Optimizer的压缩级别参数调到0。