折腾: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

一系列git技巧:bash下让git支持命令自动完成etc

bash下让git支持命令自动完成

下载git源码,解压缩,将其中文件 contrib/completion/git-completion.bash 拷到一个符合你习惯的位置,我个人放在 ~/script/git/ 里。

个人习惯在把一些供个人使用的脚本放在家目录下的script目录,这里为git建一个单独的目录,将上述文件放进去。

然后修改~/.bashrc文件,加入一行

. ~/script/git/git-completion.bash

重新登录,在bash下,你的git就支持自动补完了,输入 git com,然后按两次tab键,即见效。

不重新登录,也可以立即生效。当前的bash里运行上述命令. ~/script/git/git-completion.bash即可。

其他小技巧

git diff 忽略dos与unix换行符的差异:git diff  --ignore-space-at-eol

Hyper-V虚拟机启动报错:IDE/ATAPI 帐户没有足够的权限

使用windows hyper-v虚拟机,因一个虚拟机机出了点问题,又没有做快照。于是把硬盘文件改名,然后把以前备份的硬盘文件拷过来,改成虚拟机用的硬盘文件的名。

但启动时报错:“ide/atapi 账号没有足够的权限”。比对两个硬盘文件的权限,发现新拷过来的文件少了一个用户的权限,这个用户没有名字,显示为一大串字符串。想找到这个用户赋权限给他,但找不到。

经过google查询得知,在hyper-v 管理里,将该硬盘文件从本虚拟机上删除,然后“应用”,再加上该硬盘文件,“确定”即可。这样hyper-v就为该文件赋上了这个“幽灵用户”的权限。

猜测,这应该是hyper自己搞的一个隐藏用户(或用户组),正常情况下在windows里看不到,所以...

一个无敌的下载站点:msdn I tell you,作什么用就不说了,谁用谁知道

http://msdn.itellyou.cn/?lang=zh-cn 传送门

windows系列操作系统,microsoft sql server服务器,ms office,share point,visual stuido....msdn里有的,这里都有,ed2k下载。

使用方法,选择你所需要的软件,点右侧“复制所先的项”,得到ed2k下载链接,然后你懂得。

只是可惜,ed2k下载有些资源/有时不稳定,有可能根本下载不动

现在有一个更好的办法:通过百度云网盘的离线下载功能

msdn.itellyou.cn里面都有什么东西,看图,不说话

msdn_itellyou_cap_1 msdn_itellyou_cap_2baidu-pan-down

百度网盘已经离线过N多文件,只要有人下载过,那么你再下载就只要0秒钟!你没看错,是0秒钟

centos/redhat/fedora下rpm安装nload监测网卡流量/非手工编译/linux实时带宽监控

nload 是linux下简单易用的带宽流量监测工具,基于字符界面的动态图形显示网卡当前的流量。

不过centos官方源里并没有它,不能直接使用yum安装。我们可以到第三方rpm发布平台上下载,推荐使用 下面的源,它发布多个rpm包

http://pkgs.repoforge.org/nload/

安装方法:

1. 找合适版本:截止本文写作时间2013-6-7最新版本为0.7.4,centos6对应的版本是 el6, 32位系统使用i686的。我的linode vps, 32位 centos6,选择的是nload-0.7.4-1.el6.rf.i686.rpm

2. 切换到root用户直接运行rpm安装,即

rpm -ivh http://pkgs.repoforge.org/nload/nload-0.7.4-1.el6.rf.i686.rpm

3. 切回到普通用户,运行nload,即看到基于字符的动态图形,很简洁。按方向键切换下一块网卡。

手工编译内核安装virtualbox出错提示Please install the build and header files for your current Linux kernel

核心提示:

检查/lib/module/{内核版本号}/kernel/目录下的文件(符号链接) header,及source是否有效,它们应该链到你的内核编译目录里

使用centos 6.x的linux,嫌自带内核太老,自己编译的内核3.0.32.

virtualbox长期没更新,今天更新一下,到vbox官方下载安装包VirtualBox-4.2.12-84980-Linux_x86.run,sh 运行之,但得到提示:

[root@fsc download]# sh VirtualBox-4.2.12-84980-Linux_x86.run
Verifying archive integrity... All good.
Uncompressing VirtualBox for Linux installation............
VirtualBox Version 4.2.12 r84980 (2013-04-12T10:19:13Z) installer
Please install the build and header files for your current Linux kernel.
The current kernel version is 3.0.32
Problems were found which would prevent VirtualBox from installing.
Please correct these problems and try again.

印象中编译内核时安装装过header,要不然上次是不可能安装成功的。

思考原因,是否因为内核某些地方出错了原因,如某些环境变量或者什么东西,实在不想再次重新编译内核,麻烦,好像还得另外下载并编译网卡驱动。于是考虑找个别人编译好的rpm包装上,找到了一个叫 ELRepo 的项目,提供一系列的内核rpm包 http://elrepo.org/linux/kernel/el6/i386/RPMS/ 看上去还是相当不错的,可以安装他们的yum源。

正准备下载,突然想到,机器换固态硬盘了,是直接使用cp带-p参数拷过来的,而家目录里的很多文件在机械硬盘上,通过符号链接链到~/opdata,当时的内核文件就在其中。联想到/lib/module/`uname -r`/目录里有两个符号链接,是链接到编译内核的目录里的。是否安装kernel-header其实并没有将相应文件拷到某个目录里,而只是符号链接过去。去检查一下。

[root@fsc download]# cd /lib/modules/3.0.32/kernel/
[root@fsc kernel]# ls -alh ..
总用量 3.8M
drwxr-xr-x.  4 root root 4.0K 12月  2 11:05 .
dr-xr-xr-x. 16 root root 4.0K 6月   2 10:47 ..
lrwxrwxrwx.  1 root root   39 5月  26 2012 build -> /home/feng/software/kernel/linux-3.0.32
drwxr-xr-x. 12 root root 4.0K 6月  24 2012 kernel
......
-rw-r--r--.  1 root root 964K 12月  2 11:05 modules.usbmap
lrwxrwxrwx.  1 root root   39 6月  24 2012 source -> /home/feng/software/kernel/linux-3.0.32

果然,build, source两个链接文件,还是链接到原来的位置,而且被shell以红背景提示是“死链接”。

删除这两个链接文件,并重建有效的链接

rm build source
ln -s /home/feng/optdata/software/kernel/linux-3.0.32/ build
ln -s /home/feng/optdata/software/kernel/linux-3.0.32/ source

再次运行sh VirtualBox-4.2.12-84980-Linux_x86.run,virtualbox顺利安装。

Pages: Prev 1 2 3 4 5 6 7 8 9 10 ... 45 46 47 Next