从新浪SAE迁回来了

从新浪SAE迁回来了,新浪SAE不靠谱,本来免费的,突然开始收费,上千云豆几天就没了,长时间没管,数据也丢了。。。

发表在 未分类 | 留下评论

RHEL 6下安装LVS笔记

http://www.linuxvirtualserver.org/software/ipvs.html 下载ipvsadm-1.26-1.src.rpm

安装rpmbuild

#yum install rpm-build

执行命令

#rpmbuild –rebuild ipvsadm-1.26-1.src.rpm

如果报以下错误

make error : can't find file 'netlink/netlink.h'

需要安装 libnl 和 popt 开发包

#yum install libnl* popt*

 

如果报以下错误

/root/rpmbuild/BUILD/ipvsadm-1.26/ipvsadm.c:432: undefined reference to `poptGetContext'
/root/rpmbuild/BUILD/ipvsadm-1.26/ipvsadm.c:435: undefined reference to `poptGetNextOpt'
/root/rpmbuild/BUILD/ipvsadm-1.26/ipvsadm.c:660: undefined reference to `poptBadOption'
/root/rpmbuild/BUILD/ipvsadm-1.26/ipvsadm.c:502: undefined reference to `poptGetNextOpt'
/root/rpmbuild/BUILD/ipvsadm-1.26/ipvsadm.c:667: undefined reference to `poptStrerror'
/root/rpmbuild/BUILD/ipvsadm-1.26/ipvsadm.c:667: undefined reference to `poptBadOption'
/root/rpmbuild/BUILD/ipvsadm-1.26/ipvsadm.c:670: undefined reference to `poptFreeContext'
/root/rpmbuild/BUILD/ipvsadm-1.26/ipvsadm.c:677: undefined reference to `poptGetArg'
/root/rpmbuild/BUILD/ipvsadm-1.26/ipvsadm.c:678: undefined reference to `poptGetArg'
/root/rpmbuild/BUILD/ipvsadm-1.26/ipvsadm.c:679: undefined reference to `poptGetArg'
/root/rpmbuild/BUILD/ipvsadm-1.26/ipvsadm.c:690: undefined reference to `poptGetArg'
/root/rpmbuild/BUILD/ipvsadm-1.26/ipvsadm.c:693: undefined reference to `poptFreeContext'

需要安装 popt-static

下载地址 http://www.phcomp.co.uk/PackagesBackports/popt-static.html

 

安装完成执行命令

#ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

出现上面的提示表示安装成功,然后根据自己的需求进行配置即可

 

 

发表在 未分类 | 标签为 | 留下评论

php用户自定义存储session的类在5.4下的兼容问题

最近把php版本从5.2升级到5.4,结果以前写的自定义存储session的类抛出以下错误

Warning: Invalid callback MemacheSession::write, class 'MemacheSession' not found in Unknown on line 0

Warning: Unknown: Failed to write session data (user). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

Warning: Invalid callback MemacheSession::close, class 'MemacheSession' not found in Unknown on line 0

经查,是因为5.4更改了session存储的机制,新增了SessionHandlerInterface 接口用来帮助用户实现自定义存储session的类,对于5.4之前的没有用到这个接口的类,有一个解决办法,就是注册 shutdown 回调函数来规避风险,通常可以通过调用 register_shutdown_function() 函数 来注册 'session_write_close' 回调函数

为了兼容之前的代码,在session类文件的开头加如下代码

if (function_exists('session_register_shutdown'))
{
       session_register_shutdown();
}
else
{
       register_shutdown_function('session_write_close');
}

 

参考信息如下

http://cn2.php.net/manual/zh/function.session-set-save-handler.php

发表在 未分类 | 标签为 , , , | 留下评论

在 oracle linux 64位系统上装gcc4.7.0笔记

要想通过源代码安装gcc,必须系统里得有gcc才能进行编译

在oracle linux的光盘里Packages目录下有gcc的rpm包
gcc-4.4.6-3.el6.x86_64.rpm
版本是4.4.6

在安装时发现其依赖以下库 pll, cloog-pll, libmpfr, cpp, kernel-headers, glibc-headers, glibc-devel
这些库的rpm包也在Packages目录下
ppl-0.10.2-11.el6.x86_64.rpm
cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
mpfr-2.4.1-6.el6.x86_64.rpm
cpp-4.4.6-3.el6.x86_64.rpm
kernel-headers-2.6.32-220.el6.x86_64.rpm
glibc-headers-2.12-1.47.el6.x86_64.rpm
glibc-devel-2.12-1.47.el6.x86_64.rpm

依次安装后执行
rpm -i gcc-4.4.6-3.el6.x86_64.rpm
安装gcc成功
其配置入下
./configure –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info –with-bugurl=http://bugzilla.redhat.com/bugzilla –enable-bootstrap –enable-shared –enable-threads=posix –enable-checking=release –with-system-zlib –enable-__cxa_atexit –disable-libunwind-exceptions –enable-gnu-unique-object –enable-languages=c,c++,objc,obj-c++,java,fortran,ada –enable-java-awt=gtk –disable-dssi –with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre –enable-libgcj-multifile –enable-java-maintainer-mode –with-ecj-jar=/usr/share/java/eclipse-ecj.jar –disable-libjava-multilib –with-ppl –with-cloog –with-tune=generic –with-arch_32=i686 –build=x86_64-redhat-linux

 

现在可以通过源代码安装新版gcc
在gcc网站上(http://gcc.gnu.org/)查找到下载资源。目前GCC的最新版本为 4.7.1,我选择安装的是4.7.0
安装gcc之前,一定要先装好gmp、mpc、mpfr三个库。另外2个库ppl与cloog库是可选的,装或不装,gcc都能安装好。为了和系统自带的配置保质一致,选择安装这两个库

所有的这些依赖库都可以在http://gcc.gnu.org/找到,下载地址为ftp://gcc.gnu.org/pub/gcc/infrastructure/
最好使用这里给出的依赖库,不然安装可能会出问题
我这里下载的是gmp-4.3.1.tar.bz2,mpfr-3.1.0.tar.bz2,mpc-0.8.1.tar.gz

注:安装均在root权限下进行:

由于MPFR依赖GMP,而MPC依赖GMP和MPFR,所以要先安装GMP,其次MPFR,最后才是MPC。cloog-pll依赖pll,这个也要先装pll,再装cloog-pll

1、安装gmp
解压后在其目录下执行
./configure –enable-cxx
这里需要加上–enable-cxx 以启用 C++ 支持,不然后面安装ppl会失败
make
make check
这一步是必要的,用来查看有没有文件不匹配或缺失,在最后提示,到时注意看有没有 Error 之类的提示,如果没有则说明安装正常.

make install

安装编译后的软件,完成了安装过程
因为没有指定安装目录,默认安装在 /usr/local 下,程序的头文件(.h)和库文件(lib*)会安装在 /usr/local/include 和/usr/local/lib 下

2、安装 mpfr
./configure  –with-gmp-include=/usr/local/include –with-gmp-lib=/usr/local/lib
make
make check
make install

这里配置时需要指定gmp的头文件和库文件所在位置

3、安装 mpc
./configure –with-gmp-include=/usr/local/include –with-gmp-lib=/usr/local/lib –with-mpfr-include=/usr/local/include    –with-mpfr-lib=/usr/local/lib
make
make check (这个时候可能会有错误,但是这个没有关系,可以跳过!)
make install

同样配置时需要指定gmp和mpfr的头文件和库文件所在位置
在编译MPC的过程中出现了“error C2065: 'GMP_RNDA': undeclared identifier”,从网上找到解决方法:将acos.c中的GMP_RND常量前缀替换为MPFR_RND;

4 安装 ppl
安装这个库比较纠结,我从 http://bugseng.com/ 下载了最新版 1.0
执行./configure 时报错
configure: error: C++ preprocessor "/lib/cpp" fails sanity check 
看来是需要c++编译器
从安装光盘中找到 gcc-c++-4.4.6-3.el6.x86_64.rpm 安装重新执行./configure 仍然报错
error: Cannot find GMP version 4.1.3 or higher
但前面已经安装了GMP 4.3.1
从google上找到的解决方法,安装 GMP 时configure加上 –enable-cxx 该参数启用 C++ 支持, 于是重新编译安装 GMP 后再次对ppl进行configure通过

之后对gcc进行configure时还是报 ppl 找不到,我推测是gcc不支持ppl 1.0,重新下载 ppl-0.12.tar.bz2 安装后正常。

./configure
make check
make install

 

5 安装 cloog-ppl
这个库好像也是不支持新版,我下载了 cloog-0.17.0.tar.gz 安装后 gcc configure通不过
只好重新下载 cloog-ppl-0.15.11.tar.gz
这个库需要polylib的支持,不然执行configure会报错 , 但不安装也可以编译通过
checking for PolyhedronTSort in -lpolylib64… no > > >> Can't find PolyLib.
polylib的下载地址  http://icps.u-strasbg.fr/polylib/polylib_src/

./configure –with-ppl
make
make check
make install

 

所有准备工作都就绪后,可以正式开始安装gcc了
为了和系统自带的gcc保持一致,我一开始选择了同样的配置,我没有覆盖,安装到了/opt/gcc-4.7.0下

./configure –prefix=/opt/gcc-4.7.0 –mandir=/usr/share/man –infodir=/usr/share/info –with-bugurl=http://bugzilla.redhat.com/bugzilla –enable-bootstrap –enable-shared –enable-threads=posix –enable-checking=release –with-system-zlib –enable-__cxa_atexit –disable-libunwind-exceptions –enable-gnu-unique-object –enable-languages=c,c++,objc,obj-c++,java,fortran,ada –enable-java-awt=gtk –disable-dssi –with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre –enable-libgcj-multifile –enable-java-maintainer-mode –with-ecj-jar=/usr/share/java/eclipse-ecj.jar –disable-libjava-multilib –with-gmp –with-mpfr –with-mpc –with-ppl –with-cloog –with-tune=generic –with-arch_32=i686 –build=x86_64-redhat-linux

可是在编译时发现,想要加入java的支持,是多么纠结的事啊,各种找不到lib库,找不到文件,而且还需要gtk的支持,gtk+ 的安装似乎也很复杂,需要很多依赖库,对我安装gcc来说不是很必要,而fortran,ada这个对我基本没用,于是改了下配置,只要c和c++

./configure –prefix=/opt/gcc-4.7.0 –enable-bootstrap –enable-shared –enable-threads=posix –enable-checking=release –with-system-zlib –enable-languages=c,c++,objc,obj-c++ –build=x86_64-redhat-linux –with-gmp –with-mpfr –with-mpc –with-ppl –with-cloog –disable-multilib

–disable-multilib 这个参数不加,会报“/usr/include/x86_64-linux-gnu/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory”

make

在编译GCC的过程中出现了“configure: error: cannot compute suffix of object files: cannot compile”的错误,这是因为找不到gmp、mpc、mpfr的lib文件,解决方法是:在/etc/profile文件中加入以下库文件路径:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/opt/gcc-4.7.0/lib,之后运行 source /etc/profile 使其生效
/opt/gcc-4.7.0/lib这个先加上,不然安装完后编译c或者c++的文件时会提示找不到lib,还要再加一次

这一步尝试了10多次,全部失败,后来觉得可能是重复./configure、make失败多次,产生了不少错误的文件,干脆把整个gcc目录全部删了重新编译,经过了将近一个小时后,编译终于成功了

make install

安装完后可以在/opt/gcc-4.7.0/bin下看到有gcc,g++ 等一些文件,都是可用的,但直接执行gcc,还是调用的系统自带的gcc,需要将系统自带的替换成新安装的gcc,方法如下:
将/usr/bin下的gcc,g++等改名为gcc_4.4.6,把/opt/gcc-4.7.0/bin下的gcc,g++ 做软连接到 /usr/bin 下 ln -s /opt/gcc-4.7.0/bin/gcc gcc

 

全部完成后就可以使用新gcc了

发表在 未分类 | 标签为 | 留下评论

数据终究还是没有恢复,火大!!!!

IDC机房说不做就不做,之前还可以QQ联系,说给恢复数据,现在数据没被恢复,还被人拉黑了,公司也找不到了,电话也打不通,一年的数据就这么没了。。。

看来免备案的,国外的就是不靠谱啊。。。

这回给自己一个教训,数据一定要及时备份

有钱的话还是得自己搞个服务器托管出去

发表在 未分类 | 标签为 | 留下评论