折腾:vps上php环境升级为php5.5

php5.5出来很久了,一直没应用,vps上还是5.3,折腾一番尝试一下看5.5效果如何。

查阅了官方的升级说明,从5.3到5.5变化不大,而且vps上主要跑的wordpress,drupal,phpmyadmin等应用,它们的开发理论是是比较规范的,估计问题不大。

原环境,php-fpm, nginx, 其中php安装了apc, memcache两个附加模块。

下载php5.3源码,解压,参考5.3的配置参数,改了下安装目录到/usr/local/php55,编译安装,很顺利。

不过启动php-fpm进程时,还得加 -c参数指定php.ini目录才行,指定该参数重新配置编译了几次,都还是不行。那就带参数也无所谓了。

在一个测试站点上,修改nginx里fast-cgi端口为9005, 新开启一下fpm进程,php-fpm端口设置为9005,(php5.3工作在9000端口)这样不影响php5.3的正常工作。打开phpinfo页面,检查没有发现异常,打开phpMyAdmin,也正常。

编译附加模块apc,但编译失败,google到雪鸟(雪候鸟)的文章,说php5.5里集成了zend O+加速模块,这样就可以不要apc了。

到以前的memcache目录里,重新配置编译安装,正常。

加载,因为是偷懒从php5.3的php.ini里拷来加载模块的两行代码,没有改,在运行php-fpm时报错了,说是模块跟php的api版本不一致,一个是2009xxx版,一个是2012xxx版,以为编译错了。重新下载新版本memcache也一样。

纳闷中,突然意识到php.ini里最后加的加载memcache模块是以绝对路径调用的,这个路径没改,还是加载的php5.3目录下的,这不报错就没天理了。删掉路径,只保留文件名,杀死php-fpm进程,重新开启,正常了。这次安装模块是安装到extension_dir指定的目录下的,这样更简单。

运行wordpress站点,报错了:

syntax error, unexpected end of file

想起php.ini里没有开启short_open_tag, 以前安装5.3时也报了这个错误,一些不规范的插件,不想改它的源码,反正有其它一些php程序也这么干,那就打开short_open_tag好了。

重启php-fpm,运行wp又报错了

Call-time pass-by-reference has been removed

又是一个插件的问题:wp-related-posts,其源码 wp-related-posts/wp-relatedposts.php 里有这样的行 wp_relatedposts_ontags(&$options), 删除调用参数时的&号,即wp_relatedposts_ontags($options) 这就好了。

测试运行没有发现问题。

杀死php5.3的fpm进程。修改php5.5的fpm到9000端口上,并启动。

再测试一番,正常。

修改/etc/rc.local里的php-fpm开机启动命令为5.5版本。

完成。

记录一下,算是这个中秋节做的一点有意义的事情。

原计划一大早睡觉,结果又0:18了——

---- 130923 补 --------------------

原来 opcache并没有自动加载,虽然它会被安装到php扩展的目录下,默认在 {$PREFIX}/lib/php/extensions/no-debug-non-zts-20121212

在php.ini里加入以下两行

[opcache]
zend_extension=opcache.so

opcache.so是个zend扩展模块,要用zend_extension=xx加载。

重启php-fpm生效

CentOS6.x下安装python2.7

CentOS6.x自带的python是2.6.x版,一直没有更新到2.7,其上游发行版redhat太过保守了。goagent的新版本已经要求python2.7以上版本了,为了升级goagent,决定安装python2.7.

一个原则:不要去改动系统自带的东西,除非你知道所有不得影响。

考虑到默认位置下的python是系统运行所需,覆盖升级有可能影响一些功能;并且yum update时,可能新装的python会被再次覆盖。所以计划将python2.7装到/opt/python2.7目录下。

在普通用户下下载编译python2.7,个人习惯,软件包都在 ~/optdata/software/build下编译,原源tar包放在 ~/optdata/software/source/下

cd ~/optdata/software/build/
wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2  #下载python2.7源码
tar xvf Python-2.7.5.tar.bz2         #解压
mv Python-2.7.5.tar.bz2 ../source/   #将源码移到~/optdata/software/source/下
mv Python-2.7.5/ python-2.7.5/       #不喜欢文件名里带大写,改首字母为小写
cd python-2.7.5/
./configure --help                   #查看配置参数,其中主要看--prefix参数,即配置安装目标位置
./configure --prefix=/opt/python2.7  #运行配置。如果你的系统缺少部分开发包,可能会报错,按错误提示yum install 相应的包
make

完成后,su切换到root下,make install安装。

现在python2.7即安装好了,如需使用python2.7,就要指定其完整的路径/opt/python2.7./bin/python

但,这个python只是个基本环境,可能要装一些新模块。pip是个很好用的工具,我们先安装它,有了pip,就可以自动安装了,跟yum一样方便的工具。

下载,个人的python包一般是放在~/optdata/software/python/里

cd ~/optdata/software/python/
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
/opt/python2.7/bin/python ez_setup.py
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
/opt/python2.7/bin/python get-pip.py

查看下pip版本号,安装pyOpenSSL试试,goagent客户端要用这个包的

/opt/python2.7/bin/pip -V
/opt/python2.7/bin/pip install pyOpenSSL

没问题,完成。

这样如果需要使用python2.7就这样指定/opt/下完整路径运行。而对系统自带的python2.7没有任何影响。

windows远程桌面remote desctop连接到服务器的console控制台会话

If you need to connect to the console, start Remote Desktop from start run and use the console switch:

mstsc /console  /v 192.168.100.200:3389

详细的说明:运行 mstsc /? 得如下的用法说明

reffer: http://social.technet.microsoft.com/Forums/windowsserver/en-US/19a188a7-cafd-403a-b5e3-77e7c82dfbb2/can-vnc-server-run-on-windows-server-2008