准备工作
1. 将 VPS Reinstall为 CentOS 6.5 64bit 纯净版
2. 更新系统内核到最新
yum -y update
3. 安装wget
yum -y install wget
获得LAMP一键安装包
因为时间久远,这个LAMP包诸多链接已失效,需要不断更正替换。
下载:http://centos.googlecode.com/files/lamp0.4.tar.gz
下载:http://down.51cto.com/data/500332
下载:链接:http://pan.baidu.com/s/1o8uGIzK 密码:3q79
tar xf lamp0.4.tar.gz && cd lamp0.4
注意:可以分析各个BASH命令,发现会首先判断系统中是否已经安装此程序,如果没有,才会下载安装。所以可以用这个规律进行排错。
安装LAMP
执行BASH命令:
chmod +x lamp.sh && ./lamp.sh
下载:http://download.csdn.net/download/woshinanjinren/4912990
下载:https://archive.apache.org/dist/httpd/httpd-2.2.22.tar.gz
下载:https://files.phpmyadmin.net/phpMyAdmin/3.5.1/phpMyAdmin-3.5.1-all-languages.tar.gz
下载:http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
下载:http://downloads.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz
下载:http://downloads.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz
下载:http://downloads.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
设置MySQL密码;选择第一种方案PHP 5.2.17(只有这个方案可以搭配ZendOptimizer 3.3.9)。
Please input the root password of mysql: (Default password: root):dPC5FV4Mk^12z%8U mysql password: #################################### select which version of php you'll install 1) php-5.2.17 with httpd-2.2.22 2) php-5.3.13 with httpd-2.4.2 Please input 1 or 2:1 Your choice:php-5.2.17 #################################### select the mpm of apache 1) prefork (Recommend) 2) worker (Multi-threaded) 3) event (Multi-threaded,not support ssl.) Please input 1,2,3:1 Your choice:prefork #################################### Please input the mysql data location: (leave blank for /usr/local/mysql/data): mysql data location:/usr/local/mysql/data Press any key to start...
报错:
checking for iconv support... yes configure: warning: bison versions supported for regeneration of the Zend/PHP parsers: 1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 (found: 2.7). configure: warning: flex versions supported for regeneration of the Zend/PHP parsers: 2.5.4 (found: 2.5.37) configure: warning: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. configure: error: Please reinstall the iconv library.
所以需要卸载/新安装相应程序:
1. bison版本过高:卸载当前bison 2.7,编译安装bison 2.4.1:
2. flex版本太低:卸载当前flex 2.5.37,编译安装 flex 2.6.3:
3. re2c没安装,那么yum安装:
yum install re2c
4. libiconv编译安装出错,早知道方法:
重新执行BASH命令,发现PHP编译报错:
/root/lamp0.4/untar/php-5.2.17/ext/dom/node.c:1955:5: note: in expansion of macro ‘RETVAL_STRINGL’ RETVAL_STRINGL((char *) buf->buffer->content, ret, 1); ^ make: *** [ext/dom/node.lo] Error 1
参考:http://blog.csdn.net/moqiang02/article/details/19699557
有一个补丁可以解决问题:
cd /root/lamp0.4/untar/php-5.2.17 curl -o php-5.x.x.patch https://mail.gnome.org/archives/xml/2012-August/txtbgxGXAvz4N.txt patch -p0 -b < php-5.x.x.patch
再手动编译安装php-5.2.17:
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc make ZEND_EXTRA_LIBS='-liconv' make install
创建软连接:
ln -s /usr/local/php/bin/php /usr/local/bin/ ln -s /usr/local/php/bin/phpize /usr/local/bin/ ln -s /usr/local/php/bin/php-config /usr/local/bin/
重新执行BASH命令,发现启动httpd报错:
将Apache设成系统服务:
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
编辑 /etc/init.d/httpd,在第二行加入:
# chkconfig: 2345 85 15 # description: httpd is web server
把Apache添加到系统的启动服务组里:
chkconfig --add httpd && chkconfig --level 35 httpd on
设为开机启动:
chkconfig httpd on
重新执行BASH命令,发现启动httpd时找不到libphp5.so:
httpd: Syntax error on line 56 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot open shared object file: No such file or directory
那么重新编译安装PHP,让安装程序把libphp5.so放到这个目录。
cd /root/lamp0.4/ && tar zxvf php-5.2.17.tar.gz && cd php-5.2.17 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-iconv-dir=/usr/local -with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-mysql-sock --with-pdo-mysql curl -o php-5.x.x.patch https://mail.gnome.org/archives/xml/2012-August/txtbgxGXAvz4N.txt patch -p0 -b < php-5.x.x.patch make ZEND_EXTRA_LIBS='-liconv' make install
如果报错:
参考:http://www.cnblogs.com/zhanghw0354/archive/2012/09/23/2698951
这样在编译完成时看见:
Installing PHP SAPI module: apache2handler /usr/local/apache/build/instdso.sh SH_LIBTOOL='/usr/local/apache/build/libtool' libphp5.la /usr/local/apache/modules /usr/local/apache/build/libtool --mode=install cp libphp5.la /usr/local/apache/modules/ cp .libs/libphp5.so /usr/local/apache/modules/libphp5.so cp .libs/libphp5.lai /usr/local/apache/modules/libphp5.la libtool: install: warning: remember to run `libtool --finish /root/lamp0.4/php-5.2.17/libs' chmod 755 /usr/local/apache/modules/libphp5.so ...
重新执行BASH命令,看见成功信息:
... PHP had been installed ============================phpmyadmin install============================================ mv: cannot move ‘untar/phpMyAdmin-3.5.1-all-languages’ to ‘/home/www/default/phpmyadmin/phpMyAdmin-3.5.1-all-languages’: Directory not empty httpd: Could not reliably determine the server's fully qualified domain name, using ::1 for ServerName httpd (pid 3227) already running ============================phpmyadmin install completed============================================ ============================LAMP install completed============================================ mysql root password:dPC5FV4Mk^12z%8U default web root:/home/www/default
中间httpd提示没有设置域名,下一步设置httpd.conf。
如果外网IP不能被访问,可能是因为iptables的原因。
如果是CentOS 7.0之后的系统:
输入:
service iptables stop
输出报错:
Redirecting to /bin/systemctl stop iptables.service Failed to stop iptables.service: Unit iptables.service not loaded.
原因是CentOS从7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。所以你只要停止firewalld服务即可。
参考:《CentOS 7.2 (mini) 里iptables防火墙怎么关闭? 》
先停止服务,禁用服务:
systemctl stop firewalld.service && systemctl disable firewalld.service
输出:
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
查看状态:
systemctl list-unit-files | grep firewalld
输出:
firewalld.service disabled
安装ZendOptimizer
chmod +x zend.sh && ./zend.sh
参考:http://www.cnblogs.com/lpfuture/p/6014827
32位:http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
64位:http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz
报错:
ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz [found] ============================ZendOptimizer install============================================ cp: cannot create regular file ‘/etc/php.d/zend.ini’: No such file or directory ============================ZendOptimizer install completed============================================
那么创建它:
cd /etc && mkdir php.d
然后运行BASH命令:
发现已经生成zend.ini文件,内容:
[zend] zend_optimizer.optimization_level=15 zend_extension=/usr/local/Zend/lib/ZendOptimizer.so
把 php.ini 拷贝到
7. 安装XCache
chmod +x xcache.sh && ./xcache.sh
PHP5.3以上的版本不再支持Zend Optimizer,已经被全新的 Zend Guard Loader 取代。
Zend Optimizer的最终可自动安装的版本是 3.3.3。一路YES,OK和回车,安装就完成了。不需要另外编辑php.ini文件就可以正常工作了。
Zend Optimizer的最终版本是 3.3.9,但有改动,不需要安装。但是需要直接在php.ini文件里面引用.so文件。
安装Zend Optimizer 3.3.3
在命令行中执行命令(支持32位、64位):
wget http://wiki.diahosting.com/down/kloxo/zend.sh sh ./zend.sh
zend.sh 源代码:
#!/bin/bash mkdir /root/hostwiki_zend cd /root/hostwiki_zend wget http://wiki.diahosting.com/down/lnmp/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz for FILE in ./*.tar.gz; do tar xvf $FILE; done cd ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp mkdir -p /usr/local/ZendOptimizer/ cp ZendOptimizer.so /usr/local/ZendOptimizer/ZendOptimizer.so rm -rf /root/hostwiki_zend for DOMAIN in /home/httpd/*; do sed -i 's/zend_/;zend_/g' $DOMAIN/php.ini 2>/dev/null cat 2>/dev/null >> "$DOMAIN/php.ini" << EOF zend_optimizer.optimization_level=1 zend_extension="/usr/local/ZendOptimizer/ZendOptimizer.so" EOF echo "$DOMAIN/php.ini update!"; done sed -i 's/zend_/;zend_/g' /etc/php.ini cat >> /etc/php.ini << EOF zend_optimizer.optimization_level=1 zend_extension="/usr/local/ZendOptimizer/ZendOptimizer.so" EOF echo "/etc/php.ini update!"; service lighttpd restart service httpd restart
然后一路YES,OK和回车,安装完成。
如果你的服务器连接Zend.com官方下载服务器有问题,可以先用代理下载相应的安装包放在自己的服务器上;然后下载zend.sh,修改为新的路径后放在自己的服务器上。然后访问zend.sh即可。
注意,使用zend.sh时会下载到服务器上,改变安装包路径后,需要在下载目录那把早先的zend.sh删除。或者新版本增加版本号以区别。
安装Zend Optimizer 3.3.9
ZendOptimizer3.3.9 64位版
http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz
ZendOptimizer3.3.9 32位版
http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
1. 解压缩 Zend Optimizer安装包
tar -zxvf ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz cd ZendOptimizer-3.3.9-linux-glibc23-x86_64
2. 在data文件夹中找到对应你的服务器上PHP版本(4.3.x, 4.4.x, 5.0.x, 5.1.x, 5.2.x)的ZendOptimizer.so。并把 ZendOptimizer.so 文件拷贝到 /usr/local/Zend/lib 。
3. 修改/usr/local/etc/php.ini 文件(从PHPINFO查看)
将zend.ze1_compatibility_mode设置成 On仅在PHP4下,如果您只安装了PHP5,建议不要修改,仍保持zend.ze1_compatibility_mode为Off状态,
找到:
zend.ze1_compatibility_mode = Off
修改为:
zend.ze1_compatibility_mode = On
添加2行:
zend_optimizer.optimization_level=15 zend_extension="/usr/local/Zend/lib/ZendOptimizer.so"
4. 重启Apache
service httpd restart
5. 查看PHPINFO
Zend logo This program makes use of the Zend Scripting Language Engine: Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies
Zend Optimizer配置文件中相关内容的含义:
例子:
[Zend] zend_optimizer.optimization_level=15 zend_extension_ts="C:\Program Files\Zend\lib\ZendExtensionManager.dll" zend_extension_manager.optimizer_ts="C:\Program Files\Zend\lib\Optimizer-2.5.5" ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ [Zend] zend_optimizer.optimization_level=1023 zend_optimizer.encoder_loader=0 zend_extension_ts="C:\Program Files\Zend\lib\ZendOptimizer.dll"
zend_optimizer.optimization_level 《== 优化程度,这里定义启动多少个优化过程。 zend_optimizer.encoder_loader 《== 是否允许处理由Zend Encoder加密的PHP文件。 zend_extension_ts 《== 优化器所在目录。 zend_extension_manager.optimizer_ts 《== 优化器管理所在目录。
优化程度 zend_optimizer.optimization_level 详细解释
Zend Optimizer总共有10个优化过程,从理论上说开的越多性能越好。当然,理论和实际永远都存在着差距。优化过程开启的越多对性能消耗也相对也越大,Zend Optimizer的10个优化过程并不相同也就是说效果不是平均的。Zend公司定义的最高值(High模式)为15,这里15指的是开启1-4号优化程度。当然,很多朋友并不满足于此,毕竟最高也只开启4个优化过程连总数的一半都没有。各个优化过程的对应的数字代码(值)如下:
不使用 0 < = 如果这样不如不装,还能节约点内存说!
优化过程1(PASS1) 1
优化过程2(PASS2) 2
优化过程3(PASS3) 4
优化过程4(PASS4) 8
优化过程5(PASS5) 16
优化过程6(PASS6) 32
优化过程7(PASS7) 64
优化过程8(PASS8) 128
优化过程9(PASS9) 256
优化过程10(PASS10) 512
以何种方式开启优化过程是通过这些数字代码(值)相加所得的和作为此参数的参数值来控制的。例如配置文件中zend_optimizer.optimization_level = 1023 , 这里的1023是优化过程1到优化过程10全部数字代码(值)相加得到的和,表示开启全部10个优化过程。刚才所提到的Zend公司定义的High模式值为15,15表示同时开启优化过程1-4。
加密代码支持 zend_optimizer.encoder_loader 详细解释
这个参数用来告诉Zend Optimizer是否去支持被Zend Encoder加密过的代码。默认情况下Zend Optimizer将支持加密过的代码。如果不使用被加密过的代码可以关闭此选项。这个功能牵扯到解包反码的过程,会导致系统负荷的加重。
这个参数的值只有两个 0 关闭, 1 开启。默认为1,推荐设置为0。
模块定位 zend_extension_ts 、zend_extension_manager.optimizer_ts 的参数就是Zend Optimizer相关模块在硬盘上的安装路径。
参考资料:
参考:http://www.ctohome.com/FuWuQi/f2/192
参考:http://www.linuxidc.com/Linux/2009-04/19260.htm
参考:http://baike.eepw.com.cn/baike/showedition/id/4544